をご覧ください。
概要
このセクションでは、ソースの Oracle データベースを構成して、Datastream がデータを pull できるようにする方法について説明します。
ソース Oracle データベースの構成
Datastream を使用してソース Oracle データベースからデータを pull する前に、次の方法でデータベースを構成する必要があります。
insert
、update
、delete
、rename
オペレーションなど、データベースの変更を追跡するアーカイブ ロギングを設定します。- データベースへの接続に使用されるユーザー アカウントに、適切な権限を付与します。
- データベースのデータ保持ポリシーを定義することで、アーカイブするデータ、データの保持期間、保持期間の終了時にデータをアーカイブまたは破棄する必要があるかどうかなどを決定します。
以降のセクションでは、これらの Oracle データベースの種類を構成する方法について説明します。
Datastream は現在、以下の種類の Oracle データベースに対応しています。
Amazon RDS for Oracle データベースを構成する
データベースが
ARCHIVELOG
モードで実行中であることを確認します。これを行うには、次のコマンドを実行します。SELECT LOG_MODE FROM V$DATABASE;
結果が
ARCHIVELOG
の場合は、ステップ c に進みます。結果が
NOARCHIVELOG
の場合は、データベースでARCHIVELOG
モードを有効にする必要があります。次のコマンドを実行して、データベースのデータ保持ポリシーを定義します。
exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',96);
バックアップとアーカイブログは最低でも 4 日間保持することをおすすめします。7 日間をおすすめします。
Oracle ログファイルのローテーション ポリシーを構成します。ログファイルの最大サイズは 512 MB 以下に設定することをおすすめします。
追加ログデータを有効にします。まず、次のコマンドを実行して、データベースで追加ロギングを有効にします。
exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');
次に、特定のテーブルまたはデータベース全体のロギングを有効にするかどうかを選択します。
特定のテーブルに対する変更のみをログに記録するには、複製する各テーブルに対して次のコマンドを実行します。
ALTER TABLE [SCHEMA].[TABLE] ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS
データベース内のほとんど、またはすべてのテーブルを複製するには、データベース全体でロギングを有効にすることを検討してください。
SQL プロンプトで次のコマンドを実行し、データベース全体で追加ログデータを有効にします。
exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD','ALL');
データベースへの接続に使用されるユーザー アカウントに、適切な権限を付与します。これを行うには、次のコマンドを実行します。
GRANT EXECUTE_CATALOG_ROLE TO [user]; GRANT CONNECT TO [user]; GRANT CREATE SESSION TO [user]; exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE','[USER]','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$ARCHIVED_LOG','[USER]','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_LOGS','[USER]','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_CONTENTS','[USER]','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR','[USER]','EXECUTE'); exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR_D','[USER]','EXECUTE'); GRANT SELECT ANY TRANSACTION TO [user]; GRANT SELECT ANY TABLE TO [user];
ソース データベースが Oracle 12c 以降である場合は、次の追加権限を付与します。
GRANT LOGMINING TO [user];
セルフホスト型の Oracle データベースを構成する
データベースが
ARCHIVELOG
モードで実行中であることを確認します。これを行うには、次のコマンドを実行します。SELECT LOG_MODE FROM V$DATABASE;
結果が
ARCHIVELOG
の場合は、ステップ 2 に進みます。結果が
NOARCHIVELOG
の場合は、データベースでARCHIVELOG
モードを有効にする必要があります。SYSDBA
としてログインしている場合は、次のコマンドを実行します。SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN;
次の Oracle リカバリ マネージャー(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
データベース内のほとんど、またはすべてのテーブルを複製するには、データベース全体でロギングを有効にすることを検討してください。
次のコマンドを実行して、データベース全体で追加ログデータを有効にします。
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (all) COLUMNS;
データベースへの接続に使用されるユーザー アカウントに、適切な権限を付与します。これを行うには、次のコマンドを実行します。
GRANT EXECUTE_CATALOG_ROLE TO [user]; GRANT CONNECT TO [user]; GRANT CREATE SESSION TO [user]; GRANT SELECT ON SYS.V_$DATABASE TO [user]; GRANT SELECT ON SYS.V_$ARCHIVED_LOG TO [user]; GRANT SELECT ON SYS.V_$LOGMNR_CONTENTS TO [user]; GRANT SELECT ON SYS.V_$LOGMNR_LOGS TO [user]; GRANT EXECUTE ON DBMS_LOGMNR TO [user]; GRANT EXECUTE ON DBMS_LOGMNR_D TO [user]; GRANT SELECT ANY TRANSACTION TO [user]; GRANT SELECT ANY TABLE TO [user];
ソース データベースが Oracle 12c 以降である場合は、次の追加権限を付与します。
GRANT LOGMINING TO [user];