プラグイン対応 Oracle データベースの構成

Datastream は、単一のコンテナ データベース(CDB)に 1 つ以上のプラグイン対応データベース(PDB)が含まれている Oracle マルチテナント アーキテクチャをサポートしています。各プラグイン対応データベースは一意の ID と名前を持つ自己完結型のデータベースであり、個別に管理できます。

次の CDC メソッドで使用するようにプラグイン対応 Oracle データベースを構成できます。

バイナリ ログ リーダーと LogMiner API の詳細については、Oracle データベースの REDO ログファイルの操作をご覧ください。

これらの各方法で移行元 Oracle データベースを構成する方法の詳細については、以降のセクションをご覧ください。

バイナリ ログ リーダー用にプラグイン対応 Oracle データベースを構成する

バイナリ ログ リーダーの CDC メソッドで使用するようにプラグイン対応 Oracle データベースを構成するには、次の操作を行います。

  1. 次のいずれかの方法でログファイルにアクセスします。

    • 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 ログとアーカイブ ログのディレクトリ名を指定する必要があります。

  2. データベースが ARCHIVELOG モードで実行中であることを確認します。

    これを行うには、Oracle データベースにログインし、SQL プロンプトで次のコマンドを実行します。

    SELECT LOG_MODE FROM V$DATABASE;

    1. 結果が ARCHIVELOG の場合は、次のステップに進みます。
    2. 結果が NOARCHIVELOG の場合は、データベースで ARCHIVELOG モードを有効にする必要があります。
    3. SYSDBA としてログインした場合は、次のコマンドを実行します。

      SHUTDOWN IMMEDIATE;
      STARTUP MOUNT;
      ALTER DATABASE ARCHIVELOG;
      ALTER DATABASE OPEN;
    4. アーカイブされたログファイルはディスク容量を消費するため、データベースに DB_RECOVERY_FILE_DEST_SIZE パラメータを構成されることをお勧めします。このパラメータを使用して、ターゲット データベースの復元ファイルで使用される合計容量のハードリミット(バイト単位)を指定します。このパラメータを設定すると、ディスク容量が不足しないようにデータベースを保護する場合と、ログ位置の損失が原因でストリームが失敗する場合のトレードオフを管理できます。

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

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

    バックアップとアーカイブのログは少なくとも 4 日間保持し、7 日間保持することをおすすめします。

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

  5. 追加ログデータを有効にします。これを行うには、次のコマンドを実行して、まず、データベース レベルの最小限の補足ロギングを有効にします。

    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;
  6. 共通ユーザーを作成します。共通ユーザーは、CDB$ROOT コンテナとプラガブル データベースで同じ ID を持ちます。共通ユーザーは、CDB$ROOT コンテナに接続し、コンテナ内、および権限があるプラグイン対応データベース内で操作できます。共通ユーザー名は C## または c## で始まる必要があります。

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

    GRANT CONNECT TO USER_NAME;
    GRANT CREATE SESSION 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 SELECT ON DBA_EXTENTS TO USER_NAME;
    GRANT EXECUTE_CATALOG_ROLE TO USER_NAME;
    GRANT SELECT ON SYS.V_$DATABASE TO USER_NAME;
    GRANT SELECT ON SYS.V_$ARCHIVED_LOG TO USER_NAME;

    USER_NAME は、データベースへの接続に使用するユーザー アカウントの名前に置き換えます。

LogMiner 用にプラグイン対応 Oracle データベースを構成する

自己ホスト型の Oracle プラグイン対応データベースを構成して LogMiner API で使用できるようにするには、次の手順を行います。

  1. データベースが ARCHIVELOG モードで実行中であることを確認します。この操作を行うには、CDB$ROOT コンテナから次のコマンドを実行します。

    SELECT LOG_MODE FROM V$DATABASE;

    1. 結果が ARCHIVELOG の場合は、ステップ 2 に進みます。
    2. 結果が NOARCHIVELOG の場合は、データベースで ARCHIVELOG モードを有効にする必要があります。
    3. SYSDBA としてログインした場合は、次のコマンドを実行します。

      SHUTDOWN IMMEDIATE;
      STARTUP MOUNT;
      ALTER DATABASE ARCHIVELOG;
      ALTER DATABASE OPEN;
      
    4. アーカイブされたログファイルはディスク容量を消費するため、データベースに DB_RECOVERY_FILE_DEST_SIZE パラメータを構成されることをお勧めします。このパラメータを使用して、ターゲット データベースの復元ファイルで使用される合計容量のハードリミット(バイト単位)を指定します。このパラメータを設定すると、ディスク容量が不足しないようにデータベースを保護する場合と、ログ位置の損失が原因でストリームが失敗する場合のトレードオフを管理できます。

  2. CDB$ROOT コンテナから次の Oracle Recovery Manager(RMAN)コマンドを実行して、データベースのデータ保持ポリシーを定義します。

    CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 4 DAYS;
    

    このコマンドは、コンテナ データベース内のすべてのプラグイン対応データベースのデータ保持ポリシーを定義します。

    バックアップとアーカイブのログは少なくとも 4 日間保持し、7 日間保持することをおすすめします。

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

  4. 追加ログデータを有効にします。これを行うには、まず、次のコマンドを実行して、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;
    
  5. 共通ユーザーを作成します。共通ユーザーは、CDB$ROOT コンテナとプラガブル データベースで同じ ID を持ちます。共通ユーザーは、CDB$ROOT コンテナに接続し、コンテナ内、および権限があるプラグイン対応データベース内で操作できます。共通ユーザー名は C## または c## で始まる必要があります。

  6. データベースへの接続に使用される共通ユーザーに、適切な権限を付与します。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 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;
    
  7. 共通ユーザーにデータベースの DBA_EXTENTS ビューに対する SELECT アクセス権を付与します。この権限を使用すると、Oracle ソースに ROWID ベースのバックフィルを使用できます。

    GRANT SELECT ON DBA_EXTENTS TO USER_NAME;

次のステップ

  • Datastream が Oracle ソースと連携する仕組みについて学習します。