ソース Oracle データベースの構成

をご覧ください。

概要

このセクションでは、ソースの Oracle データベースを構成して、Datastream がデータを pull できるようにする方法について説明します。

ソース Oracle データベースの構成

Datastream を使用してソース Oracle データベースからデータを pull する前に、次の方法でデータベースを構成する必要があります。

  • insertupdatedeleterename オペレーションなど、データベースの変更を追跡するアーカイブ ロギングを設定します。
  • データベースへの接続に使用されるユーザー アカウントに、適切な権限を付与します。
  • データベースのデータ保持ポリシーを定義することで、アーカイブするデータ、データの保持期間、保持期間の終了時にデータをアーカイブまたは破棄する必要があるかどうかなどを決定します。

以降のセクションでは、これらの Oracle データベースの種類を構成する方法について説明します。

Datastream は現在、以下の種類の Oracle データベースに対応しています。

Amazon RDS for Oracle データベースを構成する

  1. データベースが ARCHIVELOG モードで実行中であることを確認します。これを行うには、次のコマンドを実行します。

    SELECT LOG_MODE FROM V$DATABASE;

    1. 結果が ARCHIVELOG の場合は、ステップ c に進みます。

    2. 結果が NOARCHIVELOG の場合は、データベースで ARCHIVELOG モードを有効にする必要があります。

    3. 次のコマンドを実行して、データベースのデータ保持ポリシーを定義します。

      exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',96);
      

      バックアップとアーカイブログは最低でも 4 日間保持することをおすすめします。7 日間をおすすめします。

    4. Oracle ログファイルのローテーション ポリシーを構成します。ログファイルの最大サイズは 512 MB 以下に設定することをおすすめします。

  2. 追加ログデータを有効にします。まず、次のコマンドを実行して、データベースで追加ロギングを有効にします。

    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');
  3. データベースへの接続に使用されるユーザー アカウントに、適切な権限を付与します。これを行うには、次のコマンドを実行します。

    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 データベースを構成する

  1. データベースが ARCHIVELOG モードで実行中であることを確認します。これを行うには、次のコマンドを実行します。

    SELECT LOG_MODE FROM V$DATABASE;

    1. 結果が ARCHIVELOG の場合は、ステップ 2 に進みます。

    2. 結果が NOARCHIVELOG の場合は、データベースで ARCHIVELOG モードを有効にする必要があります。

    3. SYSDBA としてログインしている場合は、次のコマンドを実行します。

      SHUTDOWN IMMEDIATE;
      STARTUP MOUNT;
      ALTER DATABASE ARCHIVELOG;
      ALTER DATABASE OPEN;
      
  2. 次の Oracle リカバリ マネージャー(RMAN)コマンドを実行して、データベースのデータ保持ポリシーを定義します。

        TARGET /
        CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 4 DAYS;
      

    バックアップとアーカイブログは最低でも 4 日間保持することをおすすめします。7 日間をおすすめします。

  3. Oracle ログファイルのローテーション ポリシーの構成に使用しているデータベース ツールの SQL プロンプトに戻ります。ログファイルの最大サイズは 512 MB 以下に設定することをおすすめします。

  4. 追加ログデータを有効にします。まず、次のコマンドを実行して、データベースで追加ロギングを有効にします。

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
    

    次に、特定のテーブルまたはデータベース全体のロギングを有効にするかどうかを選択します。

    特定のテーブルに対する変更のみをログに記録するには、複製する各テーブルに対して次のコマンドを実行します。

    ALTER TABLE [SCHEMA].[TABLE] ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS
    

    データベース内のほとんど、またはすべてのテーブルを複製するには、データベース全体でロギングを有効にすることを検討してください。

    次のコマンドを実行して、データベース全体で追加ログデータを有効にします。

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (all) COLUMNS;
  5. データベースへの接続に使用されるユーザー アカウントに、適切な権限を付与します。これを行うには、次のコマンドを実行します。

    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];