Database Migration Service は、Oracle Database の一部である Oracle LogMiner API を活用して、アーカイブされた REDO ログファイルをクエリします。REDO ログファイルには、データベース上のアクティビティの履歴に関する情報が含まれています。Database Migration Service がこれらのログファイルをどのように使用するかについて詳しくは、 Oracle 移行のデータフローについてをご覧ください。
ソース Oracle データベースの構成
Database Migration Service を使用して移行元 Oracle データベースからデータを pull する前に、次の方法でデータベースを構成する必要があります。
- INSERT、- UPDATE、- DELETE、- RENAMEオペレーションなど、データベースの変更を追跡する アーカイブ ロギングを設定します。
- データベースへの接続とスキーマ オブジェクトおよびコード オブジェクトへのアクセスに使用されるユーザー アカウントに、適切な権限を付与します。 - デフォルトでは、Database Migration Service は - DBA_VIEWSを介してすべてのオブジェクト定義にアクセスしようとします。- DBA_VIEWSへのアクセスは、- SELECT ANY DICTIONARY権限で付与されます。移行ユーザー アカウントが DBA ビューにアクセスできない場合、Database Migration Service は- ALL_VIEWSにフォールバックします。このアプローチでは、要件に最適なセキュリティ モデルを定義するうえで、最大限の柔軟性が得られます。- Database Migration Service がオブジェクト定義の特定のサブセットにのみアクセスできるようにする場合は、 - SELECT ANY DICTIONARYではなく、よりきめ細かい権限構成を持つロールを移行ユーザーに付与します。
- データベースのデータ保持ポリシーを定義することで、アーカイブするデータ、データの保持期間、保持期間の終了時にデータをアーカイブまたは破棄する必要があるかどうかなどを決定します。 
Database Migration Service は、次の種類の Oracle データベースに対応しています。
Amazon RDS for Oracle データベースの構成
- データベースが - ARCHIVELOGモードで実行中であることを確認します。これを行うには、次のコマンドを実行します。- SELECT LOG_MODE FROM V$DATABASE;- 結果が - ARCHIVELOGの場合は、ステップ c に進みます。
- 結果が - NOARCHIVELOGの場合は、データベースで- ARCHIVELOGモードを有効にする必要があります。
- アーカイブされたログファイルはディスク容量を消費するため、データベースに - DB_RECOVERY_FILE_DEST_SIZEパラメータを構成することをおすすめします。このパラメータを使用して、ターゲット データベースの復元ファイルで使用される合計容量のハードリミット(バイト単位)を指定します。このパラメータを設定すると、情報の可用性とディスク容量のトレードオフを管理できます。
- 次のコマンドを実行して、データベースのデータ保持ポリシーを定義します。 - exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',96); - バックアップとアーカイブのログは少なくとも 4 日間保持し、7 日間保持することをおすすめします。 
- Oracle ログファイルのローテーション ポリシーを構成します。ログファイルの最大サイズは 512 MB までに設定することをおすすめします。ログローテーションの管理の詳細については、 Oracle データベースのログファイルの操作をご覧ください。 
 
- 追加ログデータを有効にします。これを行うには、まず、次のコマンドを実行して、データベースのサプリメンタル ロギングを有効にします。 - exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD'); - 次に、特定のテーブルまたはデータベース全体のロギングを有効にするかどうかを選択します。 - 特定のテーブルの変更のみをログに記録するには、複製するテーブルごとに次のコマンドを実行します。 - ALTER TABLE SCHEMA.TABLE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS - 以下を置き換えます。 - SCHEMA: テーブルを含むスキーマの名前。
- TABLE: 変更を記録するテーブルの名前。
 - データベース内のほとんどまたはすべてのテーブルを複製するには、データベース全体でロギングを有効にすることを検討してください。 - SQL プロンプトで次のコマンドを実行して、データベース全体の補足ログデータを有効にします。 - exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD','ALL'); 
- データベースへの接続に使用されるユーザー アカウントに、適切な権限を付与します。これを行うには、次のコマンドを実行します。 - GRANT CONNECT TO USER_NAME; GRANT CREATE SESSION TO USER_NAME; exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE','USER_NAME','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$ARCHIVED_LOG','USER_NAME','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_LOGS','USER_NAME','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_CONTENTS','USER_NAME','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR','USER_NAME','EXECUTE'); exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR_D','USER_NAME','EXECUTE'); GRANT SELECT ANY TRANSACTION TO USER_NAME; GRANT SELECT ANY TABLE TO USER_NAME; GRANT SELECT ANY DICTIONARY TO USER_NAME; GRANT SELECT ON DBA_EXTENTS TO USER_NAME; - ソース データベースが Oracle 12c 以降である場合は、次の追加権限を付与します。 - GRANT LOGMINING TO USER_NAME; 
自己ホスト型の Oracle データベースを構成する
- データベースが - ARCHIVELOGモードで実行中であることを確認します。これを行うには、次のコマンドを実行します。- SELECT LOG_MODE FROM V$DATABASE;- 結果が - ARCHIVELOGの場合は、ステップ 2 に進みます。
- 結果が - NOARCHIVELOGの場合は、データベースで- ARCHIVELOGモードを有効にする必要があります。
- SYSDBAとしてログインした場合は、次のコマンドを実行します。- SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN; 
- アーカイブされたログファイルはディスク容量を消費するため、データベースに - DB_RECOVERY_FILE_DEST_SIZEパラメータを構成することをおすすめします。このパラメータを使用して、ターゲット データベースの復元ファイルで使用される合計容量のハードリミット(バイト単位)を指定します。このパラメータを設定すると、情報の可用性とディスク容量のトレードオフを管理できます。
 
- 次の Oracle Recovery Manager(RMAN)コマンドを実行して、データベースのデータ保持ポリシーを定義します。 - CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 4 DAYS; - バックアップとアーカイブのログは少なくとも 4 日間保持し、7 日間保持することをおすすめします。 
- Oracle ログファイルのローテーション ポリシーの構成に使用しているデータベース ツールの SQL プロンプトに戻ります。ログファイルの最大サイズは 512 MB までに設定することをおすすめします。 
- 追加ログデータを有効にします。これを行うには、まず、次のコマンドを実行して、データベースのサプリメンタル ロギングを有効にします。 - ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; - 次に、特定のテーブルまたはデータベース全体のロギングを有効にするかどうかを選択します。 - 特定のテーブルの変更のみをログに記録するには、複製するテーブルごとに次のコマンドを実行します。 - ALTER TABLE SCHEMA.TABLE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS - 以下を置き換えます。 - SCHEMA: テーブルを含むスキーマの名前。
- TABLE: 変更を記録するテーブルの名前。
 - データベース内のほとんどまたはすべてのテーブルを複製するには、データベース全体でロギングを有効にすることを検討してください。 - 次のコマンドを実行して、データベース全体で補足ログデータを有効にします。 - ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (all) COLUMNS; 
- データベースへの接続に使用されるユーザー アカウントに、適切な権限を付与します。これを行うには、次のコマンドを実行します。 - GRANT CONNECT TO USER_NAME; GRANT CREATE SESSION TO USER_NAME; GRANT SELECT ON SYS.V_$DATABASE TO USER_NAME; GRANT SELECT ON SYS.V_$ARCHIVED_LOG TO USER_NAME; GRANT SELECT ON SYS.V_$LOGMNR_CONTENTS TO USER_NAME; GRANT SELECT ON SYS.V_$LOGMNR_LOGS TO USER_NAME; GRANT EXECUTE ON DBMS_LOGMNR TO USER_NAME; GRANT EXECUTE ON DBMS_LOGMNR_D TO USER_NAME; GRANT SELECT ANY TRANSACTION TO USER_NAME; GRANT SELECT ANY TABLE TO USER_NAME; GRANT SELECT ANY DICTIONARY TO USER_NAME; GRANT EXECUTE_CATALOG_ROLE TO USER_NAME; GRANT SELECT ON DBA_EXTENTS TO USER_NAME; - ソース データベースが Oracle 12c 以降である場合は、次の追加権限を付与します。 - GRANT LOGMINING TO USER_NAME; 
自己ホスト型の Oracle プラグイン可能データベースを構成する
Database Migration Service は、単一の コンテナ データベース(CDB)に 1 つ以上のプラガブル データベース(PDB)が含まれている Oracle マルチテナント アーキテクチャをサポートしています。各プラグイン対応データベースは一意の ID と名前を持つ自己完結型のデータベースであり、個別に管理できます。
自己ホスト型の Oracle プラグイン可能データベースを構成して Database Migration Service で使用できるようにするには、次の手順を行います。
- データベースが - ARCHIVELOGモードで実行中であることを確認します。この操作を行うには、- CDB$ROOTコンテナから次のコマンドを実行します。- SELECT LOG_MODE FROM V$DATABASE;- 結果が - ARCHIVELOGの場合は、ステップ 2 に進みます。
- 結果が - NOARCHIVELOGの場合は、データベースで- ARCHIVELOGモードを有効にする必要があります。
- SYSDBAとしてログインした場合は、次のコマンドを実行します。- SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN; 
- アーカイブされたログファイルはディスク容量を消費するため、データベースに - DB_RECOVERY_FILE_DEST_SIZEパラメータを構成することをおすすめします。このパラメータを使用して、ターゲット データベースの復元ファイルで使用される合計容量のハードリミット(バイト単位)を指定します。このパラメータを設定すると、情報の可用性とディスク容量のトレードオフを管理できます。
 
- CDB$ROOTコンテナから次の Oracle Recovery Manager(RMAN)コマンドを実行して、データベースのデータ保持ポリシーを定義します。- CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 4 DAYS; - バックアップとアーカイブのログは少なくとも 4 日間保持し、7 日間保持することをおすすめします。 
- Oracle ログファイルのローテーション ポリシーの構成に使用しているデータベース ツールの SQL プロンプトに戻ります。ログファイルの最大サイズは 512 MB までに設定することをおすすめします。 
- 追加ログデータを有効にします。これを行うには、まず、次のコマンドを実行して、 - CDB$ROOTレベルでデータベースのサプリメンタル ロギングを有効にします。- ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; - 次に、特定のテーブルまたはプラグイン対応データベース全体のロギングを有効にするかどうかを選択します。 - 特定のテーブルの変更のみをログに記録するには、プラグイン対応データベース コンテナに接続し、複製するテーブルごとに次のコマンドを実行します。 - ALTER TABLE SCHEMA.TABLE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS - 以下を置き換えます。 - SCHEMA: テーブルを含むスキーマの名前。
- TABLE: 変更を記録するテーブルの名前。
 - データベース内のほとんどまたはすべてのテーブルを複製するには、データベース全体でロギングを有効にすることを検討してください。 - 次のコマンドを実行して、データベース全体で補足ログデータを有効にします。 - ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (all) COLUMNS; 
- 共通ユーザーを作成します。共通ユーザーは、 - CDB$ROOTコンテナとプラガブル データベースで同じ ID を持ちます。共通ユーザーは、ルートに接続してルート内で操作できます。また、権限があるプラグイン対応データベース内で操作することもできます。共通ユーザー名は- C##または- c##で始まる必要があります。
- データベースへの接続に使用される共通ユーザーに、適切な権限を付与します。 - CDB$ROOTコンテナレベルとプラグイン対応データベース レベルでは、異なる権限が必要です。- CDB$ROOTコンテナに接続し、次のコマンドを実行します。- GRANT CREATE SESSION TO USER_NAME; GRANT SET CONTAINER TO USER_NAME; GRANT SELECT ON SYS.V_$DATABASE TO USER_NAME; GRANT SELECT ON SYS.V_$LOGMNR_CONTENTS TO USER_NAME; GRANT EXECUTE ON DBMS_LOGMNR TO USER_NAME; GRANT EXECUTE ON DBMS_LOGMNR_D TO USER_NAME; GRANT LOGMINING TO USER_NAME; GRANT EXECUTE_CATALOG_ROLE TO USER_NAME; 
- プラグイン対応データベースに接続し、次のコマンドを実行します。 - GRANT CREATE SESSION TO USER_NAME; GRANT SET CONTAINER TO USER_NAME; GRANT SELECT ANY TABLE TO USER_NAME; GRANT SELECT ANY DICTIONARY TO USER_NAME; GRANT SELECT ON SYS.V_$DATABASE TO USER_NAME; GRANT SELECT ON SYS.V_$ARCHIVED_LOG TO USER_NAME; GRANT SELECT ON DBA_SUPPLEMENTAL_LOGGING TO USER_NAME; GRANT SELECT ON DBA_EXTENTS TO USER_NAME;