すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for OceanBase:Oracle データベースがソースとして機能する場合に必要な最小限の権限

最終更新日:Jan 21, 2025

このトピックでは、Oracle データベースがソースとして機能する場合のデータ移行のさまざまなフェーズで必要な最小限の権限について説明します。

データソースの作成

GRANT ALTER SESSION to oms_user;
GRANT CREATE SESSION to oms_user;
GRANT CONNECT to oms_user;

GRANT SELECT on DUAL to oms_user;
GRANT SELECT on NLS_DATABASE_PARAMETERS to oms_user;
GRANT SELECT on PRODUCT_COMPONENT_VERSION to oms_user;
GRANT SELECT on V_$DATABASE to oms_user;
GRANT SELECT ANY DICTIONARY to oms_user;

スキーマの移行

GRANT ALTER SESSION to oms_user;
GRANT CREATE SESSION to oms_user;
GRANT CONNECT to oms_user;

-- 移行されるすべてのテーブルに対する SELECT 権限。
GRANT SELECT on any-replicated-table to oms_user;

フル移行

GRANT ALTER SESSION to oms_user;
GRANT CREATE SESSION to oms_user;
GRANT CONNECT to oms_user;

GRANT SELECT on DBA_CONSTRAINTS to oms_user;
GRANT SELECT on DBA_CONS_COLUMNS to oms_user;
GRANT SELECT on DBA_EXTENTS to oms_user;
GRANT SELECT on DBA_INDEXES to oms_user;
GRANT SELECT on DBA_IND_COLUMNS to oms_user;
GRANT SELECT on DBA_MVIEWS to oms_user;
GRANT SELECT on DBA_MVIEW_LOGS to oms_user;
GRANT SELECT on DBA_OBJECTS to oms_user;
GRANT SELECT on DBA_PART_KEY_COLUMNS to oms_user;
GRANT SELECT on DBA_SUBPART_KEY_COLUMNS to oms_user;
GRANT SELECT on DBA_TABLES to oms_user;
GRANT SELECT on DBA_TAB_COLS to oms_user;
GRANT SELECT on DBA_TAB_COLUMNS to oms_user;
GRANT SELECT on DBA_TAB_PARTITIONS to oms_user;
GRANT SELECT on DBA_TAB_SUBPARTITIONS to oms_user;
GRANT SELECT on DBA_USERS to oms_user;
GRANT SELECT on NLS_DATABASE_PARAMETERS to oms_user;
GRANT SELECT on SYS.SMON_SCN_TIME to oms_user;
GRANT SELECT on V_$INSTANCE to oms_user;
GRANT SELECT on V_$NLS_PARAMETERS to oms_user;

-- 移行されるすべてのテーブルに対する SELECT 権限。
GRANT SELECT on any-replicated-table to oms_user;

増分同期

GRANT ALTER SESSION to oms_user;
GRANT CREATE SESSION to oms_user;
GRANT CONNECT to oms_user;

GRANT SELECT on ALL_CONSTRAINTS to oms_user;
GRANT SELECT on ALL_INDEXES to oms_user;
GRANT SELECT on ALL_IND_COLUMNS to oms_user;
-- オブジェクト属性をクエリする権限。
GRANT SELECT on ALL_OBJECTS to oms_user; 
GRANT SELECT on ALL_TAB_COLS to oms_user;
-- 許可リストとブロックリストのユーザーをクエリする権限。
GRANT SELECT on ALL_USERS to oms_user; 
GRANT SELECT on DBA_CONSTRAINTS to oms_user;
GRANT SELECT on DBA_CONS_COLUMNS to oms_user;
GRANT SELECT on DBA_MVIEWS to oms_user;
-- すべてのオブジェクトをクエリするときにマテリアライズドビューを除外する権限。
GRANT SELECT on DBA_MVIEW_LOGS to oms_user; 
-- データベースの現在の時刻とタイムゾーンをクエリする権限。
GRANT SELECT on DUAL to oms_user; 
-- RAC のノード数をクエリする権限。
GRANT SELECT on GV_$INSTANCE to oms_user; 
-- データベースで使用される文字セットをクエリする権限。
GRANT SELECT on NLS_DATABASE_PARAMETERS to oms_user; 
GRANT SELECT on SYS.CDEF$ to oms_user;
GRANT SELECT on SYS.COL$ to oms_user;
GRANT SELECT on SYS.CON$ to oms_user;
GRANT SELECT on SYS.ICOL$ to oms_user;
GRANT SELECT on SYS.OBJ$ to oms_user;
-- これらのユーザーのテーブルを除外するために、SYS テナントのブロックリストにあるユーザーの名前をクエリする権限。
GRANT SELECT on SYS.USER$ to oms_user; 
-- アーカイブされたファイルをクエリする権限。
GRANT SELECT on V_$ARCHIVED_LOG to oms_user; 
GRANT SELECT on V_$ARCHIVE_DEST to oms_user;
-- 補足ログが有効になっているかどうか、および Oracle のアクセスモードをクエリする権限。
GRANT SELECT on V_$DATABASE to oms_user; 
GRANT SELECT on V_$LOG to oms_user;
-- オンラインログをクエリする権限。
GRANT SELECT on V_$LOGFILE to oms_user; 
-- LogMiner によって返される結果セットをクエリする権限。
GRANT SELECT on V_$LOGMNR_CONTENTS to oms_user;
GRANT SELECT on V_$PARAMETER to oms_user;

GRANT EXECUTE on SYS.DBMS_LOGMNR to oms_user;

-- 移行されるすべてのテーブルに対する SELECT 権限。増分移行中に新しいテーブルを同期する必要がある場合、移行ユーザーはこのテーブルに対する SELECT 権限を持っている必要があります。
GRANT SELECT on any-replicated-table to oms_user;

-- 移行されるすべてのテーブルに対するフラッシュバックおよび SELECT ANY TRANSACTION 権限。(デフォルトでは、フラッシュバッククエリは使用されず、この場合、フラッシュバック権限は必要ありません。)
GRANT FLASHBACK on any-replicated-table to oms_user;
GRANT SELECT ANY TRANSACTION to oms_user;

-- Oracle Database 12c 以降のバージョンでは、次の権限を付与する必要があります。
GRANT LOGMINING TO oms_user;  
GRANT SELECT on DBA_PDBS to oms_user;

次の場合、移行ユーザーに追加の権限を付与する必要があります。

  • Oracle Database 12c 以降のバージョンでは、増分同期の際に次の権限を付与します。

    GRANT LOGMINING TO oms_user;  
    GRANT SELECT on DBA_PDBS to oms_user;
  • 増分同期の際にフラッシュバッククエリを有効にする必要がある場合 (デフォルトでは無効)、次の権限を付与します。

    GRANT FLASHBACK on any-replicated-table to oms_user;
    GRANT SELECT ANY TRANSACTION to oms_user;
  • ソースデータベースが Oracle Database 12c、18c、または 19c のプラガブルデータベース (PDB) である場合、PDB からデータをプルするために共通ユーザーが必要です。さらに、対応する権限を付与するための文に CONTAINER=ALL を追加する必要があります。

    alter session set container=CDB$ROOT;
    create user C##XXX identified by yyy;

    同期されるビジネステーブルに権限を付与するもの以外の上記の文に CONTAINER=ALL を追加します。たとえば、GRANT ALTER SESSION to oms_user;GRANT ALTER SESSION to C##XXX CONTAINER=ALL; に書き換えることができます。

  • 増分同期の際に新しいテーブルの増分データを同期する必要がある場合、この新しいテーブルに対する SELECT 権限を移行ユーザーに付与します。

    データ移行プロジェクトを作成する前に新しいテーブルを特定できない場合は、移行ユーザーに SELECT ANY TABLE 権限を付与します。

フォワード スイッチオーバー

GRANT ALTER SESSION to oms_user;
GRANT CREATE SESSION to oms_user;
GRANT CONNECT to oms_user;

GRANT SELECT on ALL_CONSTRAINTS to oms_user;
GRANT SELECT on ALL_CONS_COLUMNS to oms_user;
GRANT SELECT on ALL_IND_EXPRESSIONS to oms_user;
GRANT SELECT on ALL_LOBS to oms_user;
GRANT SELECT on ALL_MVIEWS to oms_user;
GRANT SELECT on ALL_MVIEW_LOGS to oms_user;
GRANT SELECT on ALL_TABLES to oms_user;
GRANT SELECT on ALL_TAB_COLUMNS to oms_user;
GRANT SELECT on ALL_TAB_PRIVS to oms_user;
GRANT SELECT on ALL_TYPES to oms_user;
GRANT SELECT on ALL_USERS to oms_user;
GRANT SELECT on ALL_VIEWS to oms_user;
GRANT SELECT on DUAL to oms_user;
GRANT SELECT on NLS_DATABASE_PARAMETERS to oms_user;
GRANT SELECT on PRODUCT_COMPONENT_VERSION to oms_user;
GRANT SELECT on USER_ROLE_PRIVS to oms_user;
GRANT SELECT on V_$DATABASE to oms_user;
GRANT SELECT on V_$PWFILE_USERS to oms_user;

リバース増分移行

GRANT ALTER SESSION to oms_user;
GRANT CREATE SESSION to oms_user;
GRANT CONNECT to oms_user;

-- プライマリキーのないテーブルのデータ品質を確保するための内部トランザクションテーブルを作成する権限。
GRANT CREATE ANY TABLE to oms_user; 
-- 内部トランザクションテーブルを削除する権限。パーティションごとにテーブルを削除すると、より高速になります。
GRANT DROP ANY TABLE to oms_user; 
GRANT INSERT ANY TABLE to oms_user;
GRANT DELETE ANY TABLE to oms_user;
GRANT UPDATE ANY TABLE to oms_user;
GRANT UNLIMITED TABLESPACE to oms_user;

DDL 文のリバース同期が必要な場合は、DDL 権限を移行ユーザーに付与します。次に例を示します。

GRANT ALTER ANY TABLE to oms_user;