次の CDC 方法で動作するようにセルフマネージド Oracle データベースを構成できます。
これらのメソッドでは、Datastream がログファイルにアクセスする方法を指定します。バイナリ ログ リーダーと LogMiner API の詳細については、Oracle データベースの REDO ログファイルの操作をご覧ください。
これらの各方法で移行元 Oracle データベースを構成する方法の詳細については、以降のセクションをご覧ください。
バイナリログ リーダー用にセルフマネージド Oracle データベースを構成する
バイナリ ログ リーダーの CDC メソッドで使用するようにセルフマネージド Oracle データベースを構成するには、次の操作を行います。
次のいずれかの方法でログファイルにアクセスします。
- Automatic Storage Management(ASM): このオプションを選択した場合は、専用の ASM 接続を作成し、接続プロファイルを作成するときにその詳細を指定する必要があります。
- データベース ディレクトリ: このオプションを選択した場合は、redo ログファイルとアーカイブ ログファイルを指すデータベース ディレクトリ オブジェクトを作成し、データベース ユーザーにディレクトリへの
READ
アクセス権を付与する必要があります。
CREATE DIRECTORY DIRECTORY_NAME_1 as 'ONLINE_REDO_LOGS_PATH'; CREATE DIRECTORY DIRECTORY_NAME_2 as 'ARCHIVED_REDO_LOGS_PATH'; GRANT READ ON DIRECTORY DIRECTORY_NAME_1 to USER_NAME; GRANT READ ON DIRECTORY DIRECTORY_NAME_2 to USER_NAME;
次のように置き換えます。
- DIRECTORY_NAME_1: オンライン リドログ ファイルのディレクトリ名。
- DIRECTORY_NAME_2: アーカイブされた REDO ログファイルのディレクトリ名。
- ONLINE_REDO_LOGS_PATH: オンライン リドログ ファイルが保存されるディレクトリのパス。
- ARCHIVED_REDO_LOGS_PATH: アーカイブされたログファイルを保存するディレクトリのパス。
- USER_NAME:
READ
アクセス権を付与するデータベース ユーザーの名前。
バイナリ ログ リーダー メソッドを選択し、データベース ディレクトリを使用する場合は、ストリームを作成するときに、Redo ログとアーカイブ ログのディレクトリ名を指定する必要があります。
データベースが
ARCHIVELOG
モードで実行中であることを確認します。これを行うには、Oracle データベースにログインし、SQL プロンプトで次のコマンドを実行します。
SELECT LOG_MODE FROM V$DATABASE;
- 結果が
ARCHIVELOG
の場合は、次のステップに進みます。 - 結果が
NOARCHIVELOG
の場合は、データベースでARCHIVELOG
モードを有効にする必要があります。 SYSDBA
としてログインした場合は、次のコマンドを実行します。SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN;
アーカイブされたログファイルはディスク容量を消費するため、データベースに DB_RECOVERY_FILE_DEST_SIZE パラメータを構成されることをお勧めします。このパラメータを使用して、ターゲット データベースの復元ファイルで使用される合計容量のハードリミット(バイト単位)を指定します。このパラメータを設定すると、ディスク容量が不足しないようにデータベースを保護する場合と、ログ位置の損失が原因でストリームが失敗する場合のトレードオフを管理できます。
- 結果が
次の Oracle Recovery Manager(RMAN)コマンドを実行して、データベースのデータ保持ポリシーを定義します。
TARGET / 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;
データベースへの接続に使用されるユーザー アカウントに、適切な権限を付与します。これを行うには、次のコマンドを実行します。
rdsadmin.rdsadmin_util.grant_sys_object('GV_$LOG','USER_NAME','SELECT'); rdsadmin.rdsadmin_util.grant_sys_object('GV_$LOGFILE','USER_NAME','SELECT'); rdsadmin.rdsadmin_util.grant_sys_object('GV_$ARCHIVED_LOG','USER_NAME','SELECT'); rdsadmin.rdsadmin_util.grant_sys_object('GV_$INSTANCE','USER_NAME','SELECT'); rdsadmin.rdsadmin_util.grant_sys_object('V_$INSTANCE','USER_NAME','SELECT'); rdsadmin.rdsadmin_util.grant_sys_object('V_$PDBS','USER_NAME','SELECT'); rdsadmin.rdsadmin_util.grant_sys_object('V_$TRANSPORTABLE_PLATFORM','USER_NAME',
'SELECT'); rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE','USER_NAME','SELECT'); rdsadmin.rdsadmin_util.grant_sys_object('DBA_OBJECTS','USER_NAME','SELECT'); rdsadmin.rdsadmin_util.grant_sys_object('GV_$STANDBY_LOG','USER_NAME','SELECT'); rdsadmin.rdsadmin_util.grant_sys_object('COL$','USER_NAME','SELECT'); rdsadmin.rdsadmin_util.grant_sys_object('DBA_TABLESPACES','USER_NAME','SELECT'); rdsadmin.rdsadmin_util.grant_sys_object('DBA_ENCRYPTED_COLUMNS','USER_NAME','SELECT'); GRANT CONNECT TO USER_NAME; GRANT CREATE SESSION TO USER_NAME; GRANT SELECT ANY TABLE TO USER_NAME; GRANT READ ON DIRECTORY ONLINELOG_DIR TO USER_NAME; GRANT READ ON DIRECTORY ARCHIVELOG_DIR TO USER_NAME; USER_NAME は、データベースへの接続に使用するユーザー アカウントの名前に置き換えます。
LogMiner 用にセルフマネージド Oracle データベースを構成する
データベースが
ARCHIVELOG
モードで実行中であることを確認します。これを行うには、Oracle データベースにログインし、SQL プロンプトで次のコマンドを実行します。
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)コマンドを実行して、データベースのデータ保持ポリシーを定義します。
TARGET / 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 EXECUTE_CATALOG_ROLE TO USER_NAME; 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 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 TABLE
権限を付与できない場合は、Datastream のよくある質問ページの Oracle 変更データ キャプチャ(CDC)セクションで説明されているソリューションを使用してください。ソース データベースが Oracle 12c 以降である場合は、次の追加権限を付与します。
GRANT LOGMINING TO USER_NAME;
ユーザー アカウントに、データベースの
DBA_EXTENTS
ビューに対するSELECT
アクセス権を付与します。この権限を使用すると、Oracle ソースにROWID
ベースのバックフィルを使用できます。GRANT SELECT ON DBA_EXTENTS TO USER_NAME;
次のステップ
- Datastream が Oracle ソースと連携する仕組みについて学習します。