ソースエンドポイントとして Oracle を使用する AWS Database Migration Service (AWS DMS) タスクに関して、AWS DMS に必要な最低限の権限を把握したいです。
解決策
必要な権限は、DMS タスク設定の種類や移行の種類によって異なります。
AWS が管理する Oracle ソースデータベース
AWS が管理する Oracle データベースの権限については、「AWS DMS のセルフマネージド Oracle ソースに必要なユーザーアカウント権限」を参照してください。
セルフマネージド Oracle ソースデータベース
セルフマネージド Oracle データベースでは、DMS ユーザーに次の権限を付与する必要があります。
GRANT CREATE SESSION TO dms_user;
GRANT SELECT ANY TRANSACTION TO dms_user;
GRANT SELECT ON V_$ARCHIVED_LOG TO dms_user;
GRANT SELECT ON V_$LOG TO dms_user;
GRANT SELECT ON V_$LOGFILE TO dms_user;
GRANT SELECT ON V_$LOGMNR_LOGS TO dms_user;
GRANT SELECT ON V_$LOGMNR_CONTENTS TO dms_user;
GRANT SELECT ON V_$DATABASE TO dms_user;
GRANT SELECT ON V_$THREAD TO dms_user;
GRANT SELECT ON V_$PARAMETER TO dms_user;
GRANT SELECT ON V_$NLS_PARAMETERS TO dms_user;
GRANT SELECT ON V_$TIMEZONE_NAMES TO dms_user;
GRANT SELECT ON V_$TRANSACTION TO dms_user;
GRANT SELECT ON V_$CONTAINERS TO dms_user;
GRANT SELECT ON ALL_INDEXES TO dms_user;
GRANT SELECT ON ALL_OBJECTS TO dms_user;
GRANT SELECT ON ALL_TABLES TO dms_user;
GRANT SELECT ON ALL_USERS TO dms_user;
GRANT SELECT ON ALL_CATALOG TO dms_user;
GRANT SELECT ON ALL_CONSTRAINTS TO dms_user;
GRANT SELECT ON ALL_CONS_COLUMNS TO dms_user;
GRANT SELECT ON ALL_TAB_COLS TO dms_user;
GRANT SELECT ON ALL_IND_COLUMNS TO dms_user;
GRANT SELECT ON ALL_ENCRYPTED_COLUMNS TO dms_user;
GRANT SELECT ON ALL_LOG_GROUPS TO dms_user;
GRANT SELECT ON ALL_TAB_PARTITIONS TO dms_user;
GRANT SELECT ON SYS.DBA_REGISTRY TO dms_user;
GRANT SELECT ON SYS.OBJ$ TO dms_user;
GRANT SELECT ON DBA_TABLESPACES TO dms_user;
GRANT SELECT ON DBA_OBJECTS TO dms_user;
GRANT SELECT ON SYS.ENC$ TO dms_user;
GRANT SELECT ON GV_$TRANSACTION TO dms_user;
GRANT SELECT ON V_$DATAGUARD_STATS TO dms_user;
GRANT SELECT ON V_$DATABASE_INCARNATION TO dms_user;
注:
- Oracle バージョンが 11.2.0.3 以前である場合のみ、SELECT ON DBA_OBJECTS を付与します。
- 透過的データ暗号化 (TDE) が有効な場合は、SELECT ON SYS.ENC$ を付与します。
- AWS DMS バージョン 3.4.6 以降において、ソースデータベースが Oracle RAC である場合のみ、SELECT ON GV_$TRANSACTION を付与します。
- DMS バージョン 3.4.6 または 3.4.7 以降の最新リリースにおいて、Oracle Active Data Guard スタンバイデータベースをソースデータベースとして使用する場合のみ、SELECT ON V_$DTATGUARD_STATS を付与します。
注: DMS は、Oracle Data Guard スタンバイデータベースをソースとしてサポートしています。Data Guard を有効にすると、スタンバイデータベースを読み取り専用モードで開くことができます。権限を付与した後、ログスイッチを複数回実行すると、権限がスタンバイデータベースに複製されます。詳細については、Oracle のウェブサイトで「Forcing Log Switches」を参照してください。
ビューを表示するには、次の権限を付与します。
GRANT SELECT on ALL\_VIEWS to dms_user;
ビューを公開するには、ソースエンドポイントには接続属性 exposeViews=true も追加する必要があります。
レプリケーションタスクでは、テーブル名との一致パターンを指定できます。ソースデータベースユーザーには、他のスキーマからのテーブル読み取りを許可することもできます。どちらのタスクにも、次の権限を追加します。
GRANT SELECT ANY TABLE to dms_user;
レプリケーションタスクでテーブルリストを指定するには、次の権限を付与します。
GRANT SELECT on schema.table;
Oracle Real Application Clusters (RACs) から移行するには、プレフィックスが gv_$ と v_$ であるマテリアライズドビューに対する SELECT 権限を付与する必要があります。
ラージバイナリオブジェクト (LOB) で DMS 検証を有効にするには、次の権限を付与します。
GRANT execute on sys.dbms_crypto to dms_user;
接続属性 addSupplementalLogging を指定する場合は、次の権限を付与します。
GRANT ALTER ANY TABLE to dms_user
レプリケーションタスクが進行中の Oracle ソースデータベース
レプリケーション中の REDO ログの読み取りには、Oracle が提供する Oracle LogMiner と Oracle Binary Reader を使用できます。
LogMiner を使用するには、次の権限を付与します。
GRANT EXECUTE ON dbms_logmnr TO dms_user;
Oracle Database 12c 以降では、次の権限を付与します。
GRANT LOGMINING TO dms_user;
Binary Reader は、Oracle ディレクトリを使用して REDO ログとアーカイブログを読み取ります。DMS には、ソースデータベースに Oracle ディレクトリを作成するためのアクセス許可を付与する必要があります。
GRANT CREATE ANY DIRECTORY to dms_user;
DMS を使用して Oracle ディレクトリを作成するには、CREATE ANY DIRECTORY 権限を付与する必要があります。DMS は、プレフィックス DMS_ を付けてディレクトリ名を作成します。CREATE ANY DIRECTORY 権限を付与しない場合は、かかるディレクトリを手動で作成する必要があります。Oracle ディレクトリを手動で作成する場合、エンドポイントで指定した Oracle ユーザーは、必ずしもディレクトリを作成したユーザーであるとは限りません。この場合、次の READ on DIRECTORY 権限を付与する必要があります。
GRANT READ ON DIRECTORY RedoLog_directory_name to dms_user;
GRANT READ ON DIRECTORY ArchiveLog_directory_name to dms_user;
ディレクトリが作成されたことを確認するには、ALL_DIRECTORIES テーブルにクエリを実行します。
Binary Reader を使用して Automatic Storage Management (ASM) の redo ログにアクセスするには、Oracle エンドポイントユーザーに次の権限を付与します。
redo ログを ASM に保存し、AWS DMS で ASM のログにアクセスする場合は、次の権限を付与します。
GRANT SELECT ON v_$transportable_platform to dms_user;
Oracle 11g Release 2 バージョン 11.2.0.2 以降で ASM アカウントにアクセスするには、SYSASM 権限を付与します。
GRANT SYSASM to ASM_USER;
注: 過去のサポート対象バージョンの Oracle では、SYSDBA 権限を付与します。
Oracle ソースが ASM を使用する場合、Binary Reader のハイパフォーマンスオプションを利用すると、トランザクションを大規模に処理できます。このオプションには、並列スレッドの数 (parallelASMReadThreads) と先読みバッファの数 (readAheadBlocks) を指定する追加の接続属性が含まれます。これらの属性を合わせて設定すると、CDC タスクのパフォーマンスが向上します。
ASM ユーザーを引き受けるには、Oracle ソースエンドポイントで変更を行い、DMS ユーザーと ASM ユーザーを追加します。各ユーザーは、コンマで区切ります。
ソースエンドポイントの形式例:
Username: oracle_user,asm_user
Password: oracle_user_password,asm_user_password
関連情報
Using an Oracle database as a source for AWS DMS
Using a self-managed Oracle Standby as a source with Binary Reader for CDC in AWS DMS