データベース取り込みとレプリケーション > データベース取り込みとレプリケーションソース - 準備と使用方法 > Oracleソース
  

Oracleソース

データベース取り込みとレプリケーションタスクでOracleソースを使用するには、最初にソースデータベースを準備し、使用に関する考慮事項を確認してください。

ソースの準備:

Oracleソース準備用のAmazon Relational Database Service(RDS):
  1. 1RDSファイルシステム上にオンラインREDOログとアーカイブREDOログをそれぞれ保持するONLINELOG_DIRディレクトリおよびARCHIVELOG_DIRのディレクトリを作成します。次の実行文を使用します。
  2. exec rdsadmin.rdsadmin_master_util.create_archivelog_dir;
    exec rdsadmin.rdsadmin_master_util.create_onlinelog_dir;
  3. 2Amazon RDS for Oracleソースタイプに必要なOracle特権をデータベース取り込みとレプリケーションユーザーに付与します。
  4. Amazon RDS for Oracleソースに必要な特権の詳細については、Amazon RDS for Oracleソースに対するOracle特権を参照してください。
  5. 3アーカイブREDOログの適切な保持時間を定義します。次の実行文を使用します。
  6. exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention days',number_of_days);
  7. 4Amazon RDSコンソールで、データベースインスタンスの自動バックアップを有効にするために、ソースデータベースのバックアップ保持期間を0より大きい値に設定します。
  8. 注:
    この手順では、データベースに対してARCHIVELOGモードを有効にします。
  9. 5データベースレベルでサプリメンタルロギングが有効になっていることを確認します。次の文を使用します。
  10. exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');
    データベース取り込みとレプリケーションタスクを作成するときに、選択したソーステーブルのサプリメンタルロギングを有効にするスクリプトを生成できます。
  11. 6オプションで、Amazon RDSコンソールでは、パラメータグループを作成し、デフォルトのバッファープールのキャッシュサイズを定義することができます。デフォルトのバッファプールは、プライマリデータベースのブロックサイズを使用するバッファを保持します。次のDB_CACHE_SIZEパラメータ値を使用します。
  12. 次に、ソースデータベースのパラメーターグループを選択します。

使用に関する考慮事項:

データベース取り込みとレプリケーション環境に関する情報の収集

データベース取り込みとレプリケーションタスクの作成を開始する前に、以下の情報を収集してください。

全般的な情報

どのOracleバージョンを使用しているか。
答え: ___________________________________________________
Oracleをオンプレミスで実行するか、それともクラウドベースのAmazon RDS for Oracle環境で実行するか。
答え: ___________________________________________________
ターゲットタイプは何か。
答え: ___________________________________________________
どのタイプのロード操作を実行する予定か。初期ロード(ポイントインタイムバルクロード)、増分ロード(変更のみ)、または初期ロードと増分ロードの組み合わせ(初期ロードとそれに続く増分ロード)のどれか。
答え: ___________________________________________________
Secure Agentを実行するシステムのコア数、メモリ量、およびディスク容量はいくつか。
答え: ___________________________________________________

Oracle環境

Oracleソースデータベースサーバーのホスト名とポート番号は何か。
答え: ___________________________________________________
データベースのOracleシステム識別子(SID)は何か。
答え: ___________________________________________________
データベースへの接続に使用するOracleデータベースのユーザー名とパスワードは何ですか?
答え: ___________________________________________________
Secure Agentを実行するシステムにOracle Database ClientまたはInstant Clientがインストールされていますか?
答え: ___________________________________________________
データベースはOracle Real Application Cluster(RAC)で実行されますか? 非アクティブなノードを含め、RACメンバーの最大数はいくつですか?
答え: ___________________________________________________
Oracle Data Guardの論理または物理スタンバイデータベースから変更データをキャプチャする必要があるか。
答え: ___________________________________________________
Oracleマルチテナント環境のプラガブルデータベース(PDB)のテーブルから変更データをキャプチャする必要がありますか?
答え: ___________________________________________________
Oracle Transparent Data Encyrption(TDE)を使用するテーブルスペースから変更データをキャプチャする必要がありますか? はいの場合、TDEウォレットディレクトリとパスワードは何ですか?
答え: ___________________________________________________
ソーステーブルのUnit of Work(UOW)の一般的なサイズはいくつか。
答え: ___________________________________________________

Oracle REDOログ

REDOログはOracle Automatic Storage Management(ASM)環境にありますか? ASMインスタンスに接続してREDOログを読み取る場合に、SYSDBAまたはSYSASM権限を持つASMのログインユーザーIDの作成を許可されているか。
答え: ___________________________________________________
OracleソースデータベースのARCHIVELOGモードと最少グローバル補足ログが有効になっているか。されていない場合は、有効にできるか。
答え: ___________________________________________________
変更データを読み取るアーカイブREDOログのプライマリおよびセカンダリアーカイブ先はどこか。
答え: ___________________________________________________
Oracleデータベースのピーク期間中とピーク期間外に作成されるアーカイブREDOログの1時間あたりの平均量はいくつか。
答え: ___________________________________________________
使用している環境のREDOログへの読み取りアクセスを持っているか。
答え: ___________________________________________________
REDOログを直接読み取る権限を持っていない場合、アーカイブREDOログファイルを共有ディスクまたはファイルシステムにコピーし、その共有ディスクまたはファイルシステムから、コピーしたREDOログファイルにアクセスできるか。
答え: ___________________________________________________
データベース取り込みとレプリケーションで、アーカイブログだけでなくオンラインログから変更データを読み取れるようにするか。
答え: ___________________________________________________
CDC処理中のエラーまたは異常を診断するために、必要に応じて、診断に使用するアーカイブREDOログをInformaticaグローバルカスタマサポートに提供できるか。
答え: ___________________________________________________

データベース取り込みを設定するための詳細情報

データのレプリケート元となるソーステーブルのスキーマ名は何か。
答え: ___________________________________________________
スキーマ内のすべてのテーブルまたはそれらのテーブルのサブセットからデータをレプリケートするか。サブセットの場合は、それらのリストを作成してください。
答え: ___________________________________________________
ソーステーブルにプライマリキーがあるか。すべてのプライマリキーに対して補足ログを有効にできるか。
答え: ___________________________________________________
キーなしのソーステーブルはあるか。
答え: ___________________________________________________
ソーステーブルに、サポートされていないデータ型のカラムが含まれているか。ソースタイプでサポートされていないデータ型を判別するには、データベース取り込みとレプリケーションヘルプの「データベース取り込みとレプリケーションのソースに関する考慮事項」のソース固有のトピックを参照してください。
答え: ___________________________________________________
UTF-8のデフォルトのコードページは容認できるか。できない場合、どのコードページを使用するか。
答え: ___________________________________________________
SSLを使用して、Secure Agentとデータベースサーバー間で交換するデータを暗号化するか。暗号化SSLまたはTLSプロトコルはどれを使用するか。
答え: ___________________________________________________
新しいOracleユーザーを作成し、データベース取り込みとレプリケーションで必要となる特権をそのユーザーに割り当てることができるか。使用するユーザー名を決定してください。
答え: ___________________________________________________
ソーステーブルに、データベース取り込みとレプリケーションがサポートしていないOracleデータ型が含まれているか。
答え: ___________________________________________________
カラムの追加、削除、変更、名前変更操作など、ソースでのスキーマドリフトの変更をキャプチャするか。
答え: ___________________________________________________

Oracle特権

Oracleソースを持つデータベース取り込みとレプリケーションタスクをデプロイして実行するには、ソース接続で取り込みロードタイプに必要な特権を持つデータベース取り込みとレプリケーションユーザーを指定する必要があります。
ログベースのCDCを使用した増分ロード処理の権限
注:
OracleログがASMによって管理されている場合、Informaticaでは、ASMファイルシステムへの読み取り専用アクセスを許可する最小システム特権であるSYSDBA特権をユーザーに持たせることをお勧めします。
ログベースのCDCメソッドを使用した増分ロードまたは、初期ロードと増分ロードの組み合わせを実行するデータベース取り込みとレプリケーションタスクの場合、データベース取り込みとレプリケーションユーザー(cmid_user)に次の権限が付与されていることを確認してください。
GRANT CREATE SESSION TO <cmid_user>;

GRANT SELECT ON table TO <cmid_user>; -- For each source table created by user

-- Include the following grant only if you want to Execute the CDC script for enabling
-- supplemental logging from the user interface. If you manually enable supplemental
-- logging, this grant is not needed.
GRANT ALTER table|ANY TABLE TO <cmid_user>;

GRANT SELECT ON DBA_CONSTRAINTS TO <cmid_user>;
GRANT SELECT ON DBA_CONS_COLUMNS TO <cmid_user>;
GRANT SELECT ON DBA_INDEXES TO <cmid_user>;
GRANT SELECT ON DBA_LOG_GROUPS TO <cmid_user>;
GRANT SELECT ON DBA_LOG_GROUP_COLUMNS TO <cmid_user>;
GRANT SELECT ON DBA_OBJECTS TO <cmid_user>;
GRANT SELECT ON DBA_OBJECT_TABLES TO <cmid_user>;
GRANT SELECT ON DBA_TABLES TO <cmid_user>;
GRANT SELECT ON DBA_TABLESPACES TO <cmid_user>;
GRANT SELECT ON DBA_USERS TO <cmid_user>;

GRANT SELECT ON "PUBLIC".V$ARCHIVED_LOG TO <cmid_user>;
GRANT SELECT ON "PUBLIC".V$CONTAINERS TO <cmid_user>;
GRANT SELECT ON "PUBLIC".V$DATABASE TO <cmid_user>;
GRANT SELECT ON "PUBLIC".V$DATABASE_INCARNATION TO <cmid_user>;
GRANT SELECT ON "PUBLIC".V$ENCRYPTION_WALLET TO <cmid_user>; -- For Oracle TDE access
GRANT SELECT ON "PUBLIC".V$LOG TO <cmid_user>;
GRANT SELECT ON "PUBLIC".V$LOGFILE TO <cmid_user>;
GRANT SELECT ON "PUBLIC".V$PARAMETER TO <cmid_user>;
GRANT SELECT ON "PUBLIC".V$PDBS TO <cmid_user>;
GRANT SELECT ON "PUBLIC".V$SPPARAMETER TO <cmid_user>;
GRANT SELECT ON "PUBLIC".V$STANDBY_LOG TO <cmid_user>;
GRANT SELECT ON "PUBLIC".V$THREAD TO <cmid_user>;
GRANT SELECT ON "PUBLIC".GV$TRANSACTION TO <cmid_user>;
GRANT SELECT ON "PUBLIC".V$TRANSPORTABLE_PLATFORM TO <cmid_user>;
GRANT SELECT ON "PUBLIC".V$VERSION TO <cmid_user>;

GRANT SELECT ON SYS.ATTRCOL$ TO <cmid_user>;
GRANT SELECT ON SYS.CCOL$ TO <cmid_user>;
GRANT SELECT ON SYS.CDEF$ TO <cmid_user>;
GRANT SELECT ON SYS.COL$ TO <cmid_user>;
GRANT SELECT ON SYS.COLTYPE$ TO <cmid_user>;
GRANT SELECT ON SYS.IDNSEQ$ TO <cmid_user>;
GRANT SELECT ON SYS.IND$ TO <cmid_user>;
GRANT SELECT ON SYS.INDPART$ TO <cmid_user>;
GRANT SELECT ON SYS.OBJ$ TO <cmid_user>;
GRANT SELECT ON SYS.PARTOBJ$ TO <cmid_user>;
GRANT SELECT ON SYS.RECYCLEBIN$ TO <cmid_user>;
GRANT SELECT ON SYS.TAB$ TO <cmid_user>;
GRANT SELECT ON SYS.TABCOMPART$ TO <cmid_user>;
GRANT SELECT ON SYS.TABPART$ TO <cmid_user>;
GRANT SELECT ON SYS.TABSUBPART$ TO <cmid_user>;

-- Also ensure that you have access to the following ALL_* views:
ALL_CONSTRAINTS
ALL_CONS_COLUMNS
ALL_ENCRYPTED_COLUMNS
ALL_INDEXES
ALL_IND_COLUMNS
ALL_OBJECTS
ALL_TABLES
ALL_TAB_COLS
ALL_TAB_PARTITIONS
ALL_USERS
クエリベースのCDCを使用した増分ロード処理の権限
クエリベースのCDCメソッドを使用した増分ロード、または初期ロードと増分ロードの組み合わせを実行するデータベース取り込みとレプリケーションタスクの場合、ユーザーが少なくとも次の特権を持っていることを確認してください。
GRANT CREATE SESSION TO <cmid_user>;

GRANT SELECT ON DBA_INDEXES TO <cmid_user>;
GRANT SELECT ON DBA_OBJECT_TABLES TO <cmid_user>;
GRANT SELECT ON DBA_OBJECTS TO cmid_user;
GRANT SELECT ON DBA_TABLES TO <cmid_user>;
GRANT SELECT ON DBA_USERS TO <cmid_user>;
GRANT SELECT ON DBA_VIEWS TO <cmid_user>; -- Only if you unload data from views

GRANT SELECT ANY TABLE TO <cmid_user>;
-or-
GRANT SELECT ON table TO <cmid_user>; -- For each source table created by user

GRANT SELECT ON ALL_CONSTRAINTS TO <cmid_user>;
GRANT SELECT ON ALL_CONS_COLUMNS TO <cmid_user>;
GRANT SELECT ON ALL_ENCRYPTED_COLUMNS TO <cmid_user>;
GRANT SELECT ON ALL_IND_COLUMNS TO <cmid_user>;
GRANT SELECT ON ALL_INDEXES TO <cmid_user>;
GRANT SELECT ON ALL_OBJECTS TO <cmid_user>;
GRANT SELECT ON ALL_TAB_COLS TO <cmid_user>;
GRANT SELECT ON ALL_USERS TO <cmid_user>;

GRANT SELECT ON "PUBLIC"."V$DATABASE" TO cmid_user;
GRANT SELECT ON "PUBLIC"."V$CONTAINERS" TO cmid_user;
GRANT SELECT ON SYS.ATTRCOL$ TO <cmid_user>;
GRANT SELECT ON SYS.CCOL$ TO <cmid_user>;
GRANT SELECT ON SYS.CDEF$ TO <cmid_user>;
GRANT SELECT ON SYS.COL$ TO <cmid_user>;
GRANT SELECT ON SYS.COLTYPE$ TO <cmid_user>;
GRANT SELECT ON SYS.IND$ TO <cmid_user>;
GRANT SELECT ON SYS.IDNSEQ$ TO cmid_user;
GRANT SELECT ON SYS.OBJ$ TO <cmid_user>;
GRANT SELECT ON SYS.RECYCLEBIN$ TO <cmid_user>;
GRANT SELECT ON SYS.TAB$ TO <cmid_user>;
初期ロード処理の特権
初期ロードを実行するデータベース取り込みとレプリケーションタスクの場合、ユーザーが少なくとも次の権限を持っていることを確認してください。
GRANT CREATE SESSION TO <cmid_user>;

GRANT SELECT ON DBA_INDEXES TO <cmid_user>;
GRANT SELECT ON DBA_OBJECT_TABLES TO <cmid_user>;
GRANT SELECT ON DBA_OBJECTS TO cmid_user;
GRANT SELECT ON DBA_TABLES TO <cmid_user>;
GRANT SELECT ON DBA_USERS TO <cmid_user>;
GRANT SELECT ON DBA_VIEWS TO <cmid_user>; -- Only if you unload data from views

GRANT SELECT ANY TABLE TO <cmid_user>;
-or-
GRANT SELECT ON table TO <cmid_user>; -- For each source table created by user

GRANT SELECT ON ALL_CONSTRAINTS TO <cmid_user>;
GRANT SELECT ON ALL_CONS_COLUMNS TO <cmid_user>;
GRANT SELECT ON ALL_ENCRYPTED_COLUMNS TO <cmid_user>;
GRANT SELECT ON ALL_IND_COLUMNS TO <cmid_user>;
GRANT SELECT ON ALL_INDEXES TO <cmid_user>;
GRANT SELECT ON ALL_OBJECTS TO <cmid_user>;
GRANT SELECT ON ALL_TAB_COLS TO <cmid_user>;
GRANT SELECT ON ALL_USERS TO <cmid_user>;

GRANT SELECT ON "PUBLIC"."V$DATABASE" TO cmid_user;
GRANT SELECT ON "PUBLIC"."V$CONTAINERS" TO cmid_user;
GRANT SELECT ON SYS.ATTRCOL$ TO <cmid_user>;
GRANT SELECT ON SYS.CCOL$ TO <cmid_user>;
GRANT SELECT ON SYS.CDEF$ TO <cmid_user>;
GRANT SELECT ON SYS.COL$ TO <cmid_user>;
GRANT SELECT ON SYS.COLTYPE$ TO <cmid_user>;
GRANT SELECT ON SYS.IND$ TO <cmid_user>;
GRANT SELECT ON SYS.IDNSEQ$ TO cmid_user;
GRANT SELECT ON SYS.OBJ$ TO <cmid_user>;
GRANT SELECT ON SYS.RECYCLEBIN$ TO <cmid_user>;
GRANT SELECT ON SYS.TAB$ TO <cmid_user>;

Amazon RDS for Oracleソースに対するOracle特権

Amazon RDS for Oracleソースを使用している場合は、データベース取り込みとレプリケーションユーザーに特定の権限を付与する必要があります。
重要:
GRANT文とプロシージャを実行するには、マスターユーザー名でAmazon RDSにログインする必要があります。
少なくとも、CDC処理に必要なオブジェクトおよびシステムテーブルに対するSELECT特権を、データベース取り込みとレプリケーションユーザー(cmid_user)に付与します。特定の状況では、追加の権限の付与が必要になります。
次のGRANT文を使用します。
GRANT SELECT ON "PUBLIC"."V$ARCHIVED_LOG" TO "cmid_user";

GRANT SELECT ON "PUBLIC"."V$DATABASE" TO "cmid_user";
GRANT SELECT ON "PUBLIC"."V$LOG" TO "cmid_user";
GRANT SELECT ON "PUBLIC"."V$LOGFILE" TO "cmid_user";
GRANT SELECT ON "PUBLIC"."V$TRANSPORTABLE_PLATFORM" TO "cmid_user";
GRANT SELECT ON "PUBLIC"."V$THREAD" TO "cmid_user";
GRANT SELECT ON "PUBLIC"."V$DATABASE_INCARNATION" TO "cmid_user";
GRANT SELECT ON "PUBLIC".GV$TRANSACTION TO "cmid_user";

GRANT SELECT ON "SYS"."DBA_CONS_COLUMNS" TO "cmid_user";
GRANT SELECT ON "SYS"."DBA_CONSTRAINTS" TO "cmid_user";
GRANT SELECT ON DBA_INDEXES TO "cmid_user";
GRANT SELECT ON "SYS"."DBA_LOG_GROUP_COLUMNS" TO "cmid_user";
GRANT SELECT ON "SYS"."DBA_TABLESPACES" TO "cmid_user";

GRANT SELECT ON "SYS"."OBJ$" TO "cmid_user";
GRANT SELECT ON "SYS"."TAB$" TO "cmid_user";
GRANT SELECT ON "SYS"."IND$" TO "cmid_user";
GRANT SELECT ON "SYS"."COL$" TO "cmid_user";

GRANT SELECT ON "SYS"."PARTOBJ$" TO "cmid_user";
GRANT SELECT ON "SYS"."TABPART$" TO "cmid_user";
GRANT SELECT ON "SYS"."TABCOMPART$" TO "cmid_user";
GRANT SELECT ON "SYS"."TABSUBPART$" TO "cmid_user";
COMMIT;

/*To provide read access to the Amazon RDS online and archived redo logs:*/
GRANT READ ON DIRECTORY ONLINELOG_DIR TO "cmid_user";
GRANT READ ON DIRECTORY ARCHIVELOG_DIR TO "cmid_user";
さらに、マスターユーザーとしてログインし、次のAmazon RDSプロシージャを実行して、さらにいくつかのオブジェクトに対するSELECT特権を付与します。
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'DBA_TABLES',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'DBA_OBJECTS',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'DBA_OBJECT_TABLES',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'DBA_VIEWS',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
/begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'DBA_USERS',
p_grantee => 'cmid_user',
p_privilege => 'SELECT',
p_grant_option => false);
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'V_$CONTAINERS',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'V_$PARAMETER',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'V_$SPPARAMETER',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'V_$STANDBY_LOG',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'V_$VERSION',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'ALL_CONS_COLUMNS',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'ALL_CONSTRAINTS',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'ALL_OBJECTS',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'ALL_TABLES',
p_grantee => 'cmid_user',
p_privilege => 'SELECT',
p_grant_option => false);
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'ALL_TAB_PARTITIONS',
p_grantee => 'cmid_user',
p_privilege => 'SELECT',
p_grant_option => false);
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'ALL_USERS',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
begin
rdsadmin.rd 'ALL_TABLES',
p_grantee => 'sadmin_util.grant_sys_object(
p_obj_name => 'cmid_user
',
p_privilege => 'SELECT',
p_grant_option => false);
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'ALL_TAB_PARTITIONS',
p_grantee => 'cmid_user',
p_privilege => 'SELECT',
p_grant_option => false);
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'ATTRCOL$',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'CCOL$',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'COLTYPE$',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'INDPART$',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'IDNSEQ$',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'CDEF$',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'RECYCLEBIN$',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
/* Only required for RDS21 which supports PDB*/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'V_$PDBS',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/

CDCのOracleログアクセス方法

データベース取り込みとレプリケーションの増分ロードジョブ、および初期ロードと増分ロードの組み合わせジョブは、環境と要件に応じて、CDC処理のために別の方法でOracle REDOログにアクセスできます。

直接ログアクセス

データベース取り込みとレプリケーションジョブは、オンプレミスのソースシステム上の物理Oracle REDOログに直接アクセスして、変更データを読み取ることができます。
注:
ログをソリッドステートディスク(SSD)に保存すると、この方法で最高のパフォーマンスを実現できます。
次の図は、データフローを示しています。
  1. 1Oracleデータベースが、変更レコードをディスク上のデータベースログファイルに書き込みます。
  2. 2データベース取り込みとレプリケーションのCDCリーダーが、物理ログファイルを読み取り、CDCの対象となるソーステーブルのログファイルから変更レコードを抽出します。
  3. 3データベース取り込みとレプリケーションのCDCライターが変更レコードを読み取ります。
  4. 4CDCライターが、変更レコードをターゲットに適用します。

NFSマウントされたログ

データベース取り込みとレプリケーションジョブは、ネットワークファイル共有(NFS)マウント、またはネットワーク接続ストレージ(NAS)やクラスタ化されたストレージなど別の方法を使用して、共有ディスクからOracleデータベースログにアクセスできます。
次の図は、データフローを示しています。
  1. 1Oracleデータベースが、変更レコードをデータベースログファイルに書き込みます。ログファイルが共有ディスクに書き込まれます。
  2. 共有ディスクは、ファイルをデータベースとSecure Agentホストの両方に対してローカルとして見える任意のシステムに配置できます。この共有は、上記のようにNFSを使用するか、ネットワーク接続ストレージ(NAS)またはクラスタ化されたストレージを使用して実現できます。
  3. 2データベース取り込みとレプリケーションのCDCリーダーが、ネットワークを介してNFSサーバーからログファイルを読み取り、CDCの対象となるソーステーブルの変更レコードを抽出します。
  4. 3データベース取り込みとレプリケーションのCDCライターが変更レコードを読み取ります。
  5. 4CDCライターが、変更レコードをターゲットに適用します。

ASM管理によるログ

データベース取り込みとレプリケーションジョブは、Oracle Automatic Storage Management(ASM)システムに格納されているOracle REDOログにアクセスできます。ASM管理によるREDOログから変更データを読み取るには、ASMユーザーが、ASMインスタンスに対するSYSASMまたはSYSDBA権限を持っている必要があります。
Oracle Database Ingestion接続を設定するときは、名前に「ASM」を含むプロパティを入力します。
また、Informaticaでは、Oracle ASMのREDOログファイルからデータを読み取る場合、ローカルのsqlnet.oraファイルのsqlnet.recv_timeoutパラメータを5分未満に設定することをお勧めします。このパラメータは、クエリがタイムアウトになるまでにOracleクライアントがASMからの応答を待機する時間を指定します。ネットワークの中断やその他の要因により、Oracle接続が応答しなくなることがあります。この値を設定すると、リーダーがそのような状況に適時応答してリカバリできるようになります。
次の図は、データフローを示しています。
  1. 1Oracleデータベースが、変更レコードをASM管理によるデータベースログファイルに書き込みます。
  2. 2データベース取り込みとレプリケーションのCDCリーダーが、ASM管理によるログファイルを読み取り、CDCの対象となるソーステーブルの変更レコードを抽出します。
  3. 3データベース取り込みとレプリケーションのCDCライターが変更レコードを読み取ります。
  4. 4CDCライターが、変更レコードをターゲットに適用します。

ステージングディレクトリを使用したASM管理によるログ

データベース取り込みジョブは、ASM環境のステージングディレクトリからASM管理によるREDOログにアクセスできます。ASMのみを使用する場合と比較して、この方法ではログファイルへのアクセスが高速になり、ASMシステムのI/Oが低減されます。ASM管理によるログから変更データを読み取るには、ASMユーザーが、ASMインスタンスに対するSYSASMまたはSYSDBA権限を持っている必要があります。
次の図は、データフローを示しています。
  1. 1Oracleデータベースが、変更レコードをASM管理によるログファイルに書き込みます。
  2. 2ASMが、ログをステージングディレクトリにコピーします。
  3. ステージングディレクトリは、NFSマウントなどの共有ディスク上にある必要があります。そうすることにより、ASMはそこにデータを書き込み、データベース取り込みとレプリケーションジョブはそこからデータを読み取ることができます。
  4. 3データベース取り込みとレプリケーションのCDCリーダーが、ステージングディレクトリにあるログファイルを読み取り、CDCの対象となるソーステーブルの変更レコードを抽出します。
  5. 4データベース取り込みとレプリケーションのCDCライターが変更レコードを読み取ります。
  6. 5CDCライターが、変更レコードをターゲットに適用します。

ディレクトリオブジェクトを使用したOracleサーバーファイルシステムのログへのBFILEアクセス

オンプレミスのOracleソースシステムでは、BFILEロケータを備えたOracleディレクトリオブジェクトを使用して、ローカルOracleサーバーファイルシステムからオンラインREDOログとアーカイブREDOログを読み取るように、データベース取り込みとレプリケーションを設定できます。Oracle REDOログファイルの場所を指すARCHIVELOG_DIRおよびONLINELOG_DIRという名前のOracleディレクトリオブジェクトを作成する必要があります。
次の図は、データフローを示しています。
  1. 1Oracleデータベースが、ローカルOracleサーバーファイルシステムのREDOログファイルに変更レコードを書き込みます。データベース取り込みとレプリケーションタスクがログファイルを読み取る必要があるときに、Oracleに接続し、ARCHIVELOG_DIRまたはONLINELOG_DIRディレクトリオブジェクトを参照してログにアクセスするためのselect要求を発行します。
  2. 注:
    スタンバイデータベース、RDSデータベースインスタンス、または高速リカバリ領域がある環境など、複数のログの場所に格納されているOracleデータへのBFILEアクセスを使用した場合、データベース取り込みおよびレプリケーションは、ARCHIVELOG_DIRおよびONLINELOG_DIRで始まり、ARCHIVELOG_DIR_01、ARCHIVE_LOG_DIR_02などのサフィックスで終わるすべてのディレクトリオブジェクトを問い合せることで、ログを自動的に見つけることができます。データベース取り込みおよびレプリケーションジョブを実行するデータベースユーザーにCREATE ANY DIRECTORY特権とDROP ANY DIRECTORY特権が付与されている場合は、必要に応じてディレクトリオブジェクトを実行時に作成できます。
  3. 2データベース取り込みとレプリケーションのCDCリーダーが、Secure AgentボックスにインストールされているOCIクライアントを使用してログファイルを読み取り、CDC対象のソーステーブルの変更レコードを抽出します。
  4. 3CDCリーダーが、変更レコードをCDCライターに送信します。
  5. 4CDCライターが、変更レコードをターゲットに適用します。
BFILEアクセスの設定については、OracleファイルシステムのOracle REDOログへのBFILEアクセスの設定を参照してください。

OracleアーカイブREDOログのコピーを使用する

データベース取り込みとレプリケーションの初期ロードと増分ロードの組み合わせジョブでは、アーカイブREDOログのコピーから変更データを読み取ることができます。Oracle Database Ingetion接続プロパティの[読み取りモード]プロパティをARCHIVECOPYに設定し、ソースのカスタムプロパティpwx.cdcreader.oracle.reader.additionalをdirおよびfileパラメータを指定して設定する必要があります。dirパラメータでは、CDCログリーダーがアーカイブログコピーをスキャンするベースディレクトリの名前を指すようにし、fileパラメータでは、ログコピーのフィルタリングに使用するマスクを指定します。

OracleファイルシステムのOracle REDOログへのBFILEアクセスの設定

REDOログをローカルのOracleサーバーファイルシステムに保存し、BFILEでOracleディレクトリオブジェクトを使用してログにアクセスする場合は、次の設定タスクを実行します。
BFILEアクセスに固有ではない、次の通常のOracleソース前提条件タスクを完了します。
詳細については、「Oracleソース」を参照してください。
さらに、BFILEアクセスの場合は、次の手順を実行して、オンラインログの格納先とのアーカイブログの格納先を設定します。
  1. 1Oracleデータベースに、Oracleサーバーファイルシステム内のオンラインREDOログとアーカイブREDOログの場所をクエリします。次のサンプルクエリを使用できます。
  2. オンラインREDOログの場所を取得するには、次の手順を実行します。
    select * from v$logfile;
    ログのアーカイブ先を取得するには、次の手順を実行します。
    select dest_id, dest_name, destination, status from V$ARCHIVE_DEST;
  3. 2手順1で取得したログファイルの場所を指すONLINELOG_DIRおよびARCHIVELOG_DIRディレクトリオブジェクトを作成します。Oracleディレクトリオブジェクトは、アクセスするログファイルが配置されているOracleサーバーファイルシステム上の物理ディレクトリの論理エイリアス名を指定します。以下に例を示します。
  4. CREATE DIRECTORY ONLINELOG_DIR AS '/u01/oracle/data';
    CREATE DIRECTORY ARCHIVELOG_DIR AS '/u01/oracle/archivedata';
    Oracle Database Ingestion接続でリーダーモードを[ARCHIVEONLY]に設定して、アーカイブログからのみ変更を読み取る場合は、ONLINELOG_DIRディレクトリまたはディレクトリオブジェクトを作成する必要はありません。
    Oracleデータベースは、ディレクトリが存在することを確認しません。Oracleファイルシステムに存在する有効なディレクトリを指定していることを確認してください。
    注:
    これらのパスでソフトリンクを使用すると、Oracleバージョン18c以降のソースを使用したデータベース取り込みおよびレプリケーションの増分ロードジョブと組み合わせロードジョブは、エラーORA-22288: file or LOB operation FILEOPEN failedで失敗します。このエラーを回避するには、[ディレクトリの置換]接続プロパティで絶対パスプレフィックスを指定するか、ログパスのソフトリンクを削除します。また、BFILEディレクトリオブジェクトを手動で作成する場合は、絶対パスを使用できます。
  5. 3ディレクトリオブジェクトがREDOログの正しいファイルシステムパスで作成されたことを確認するには、次のようなselect文を発行します。
  6. select * from all_directories;
    OWNER DIRECTORY_NAME DIRECTORY_PATH
    -------- ------------------- ----------------------------------
    SYS ARCHIVELOG_DIR /u01/oracle/data/JO112DTL
    SYS ONLINELOG_DIR /u01/oracle/data/JO112DTL
  7. 4Oracle Database Ingestion接続プロパティで指定されたデータベース取り込みとレプリケーションユーザーに、ONLINELOG_DIRおよびARCHIVELOG_DIRディレクトリオブジェクトへの読み取りアクセスを付与します。以下に例を示します。
  8. grant read on directory "ARCHIVELOG_DIR" to "cmid_user";
    grant read on directory "ONLINELOG_DIR" to "cmid_user";
    注:
    ONLINELOG_DIRパスが存在しないか、アクティブなREDOログのパスと一致する場合、データベース取り込みおよびレプリケーションはディレクトリの作成を試みます。ディレクトリオブジェクトを作成するための十分な権限がない場合は、エラーメッセージが発行されます。その場合は、DBAに、正しいパスでディレクトリオブジェクトを作成するよう依頼してください。
  9. 5Oracle Database Ingestion接続プロパティで、[BFILEアクセス]チェックボックスを選択します。
重要:
複数のログの場所に格納されているOracleデータへのBFILEアクセスを使用した場合、データベース取り込みおよびレプリケーションは、ARCHIVELOG_DIRおよびONLINELOG_DIRで始まり、ARCHIVELOG_DIR_01、ARCHIVE_LOG_DIR_02などのサフィックスで終わるすべてのディレクトリオブジェクトを問い合せることで、ログを自動的に見つけることができます。この機能により、データベース取り込みおよびレプリケーションは、プライマリデータベースとは異なるログの場所、Amazon RDSデータベースインスタンス上のレプリカログ、およびUSE_DB_RECOVERY_FILE_DESTパラメータが指す高速リカバリエリア内のアーカイブログを使用するOracleスタンバイデータベースをサポートします。
必要に応じて、カスタムプロパティpwx.cdcreader.oracle.database.additional BFILEARCHIVEDIR=<directory_object>およびpwx.cdcreader.oracle.database.additional BFILEONLINEDIR=<directory_object>を使用して、ARCHIVELOG_DIR名とONLINELOG_DIR名をオーバーライドすることができます。
データベース取り込みおよびレプリケーションジョブを実行するデータベースユーザーにCREATE ANY DIRECTORY特権とDROP ANY DIRECTORY特権を付与すると、必要に応じてディレクトリオブジェクトを実行時に作成できるようになります。例えば、データベースに複数のアーカイブログとオンラインログの格納先が存在する場合は、ディレクトリオブジェクトを次の命名規則で作成することができます。
データベース取り込みおよびレプリケーションは、これらの生成されたディレクトリオブジェクトに対してクリーンアップ処理を実行しません。
USE_DB_RECOVERY_FILE_DESTパラメータを使用しており、CREATE ANY DIRECTORY特権およびDROP ANY DIRECTORY特権が付与されていない場合、DBAは次のようなスクリプトを使用して、データベース取り込みおよびレプリケーションジョブを実行する前に、毎日または毎週ディレクトリオブジェクトを作成する必要があります。
create or replace directory ARCHIVELOG_DIR_2024_08_19 as '<DB_RECOVERY_FILE_DEST>/2024_08_19'
USE_DB_RECOVERY_FILE_DESTパラメータを使用しており、データベースユーザーにCREATE ANY DIRECTORY特権とDROP ANY DIRECTORY特権が付与されている場合、ディレクトリオブジェクトは実行時に必要に応じて作成され、14日後に削除されます。これらのディレクトリオブジェクトには、<ARCHIVEDIRNAME>_YYYY_MM_DDという命名規則があります。

TDEウォレットへのBFILEアクセスの使用

データベース取り込みとレプリケーションは、リモートファイルベースの透過的データ暗号化(TDE)ウォレットへのBFILEアクセスを使用できます。
ファイルベースのTDEウォレットを設定する場合、データベース取り込みとレプリケーションはまずローカルマシンのTDEウォレットディレクトリにewallet.p12ファイルが存在するかどうかを確認します。ファイルが存在する場合、処理は通常どおり続行されます。ファイルがその場所に存在しない場合、データベース取り込みとレプリケーションはリモートアクセスに使用するディレクトリオブジェクトを次のように探します。
  1. 1データベース取り込みとレプリケーションは、TDEウォレットディレクトリと一致するパスを持つディレクトリオブジェクトをデータベースに問い合わせます。データベースがWindows上で実行されている場合、この照合では大文字小文字は区別されません。末尾の区切り文字は無視されます。
  2. 2クエリでは一致するディレクトリオブジェクトが見つからず、ユーザーにCREATE ANY DIRECTORYシステム特権がある場合、データベース取り込みとレプリケーションはdirectory_nameにPWXTDEDIRを設定したディレクトリオブジェクトを作成します。
  3. 3ユーザーにCREATE ANY DIRECTORYシステム特権がない場合は、DBAにディレクトリオブジェクトを作成するよう依頼してください。ディレクトリオブジェクトにはDBAが選んだ任意の名前を付けることができます。ユーザーにはディレクトリオブジェクトに対するREADアクセス権が必要です。
ディレクトリオブジェクトが存在するようになれば、初期化時にデータベースからリモートでTDEウォレットを読み取ることができます。ウォレットをローカルマシンにコピーする必要はありません。

ソースとしてのOracle Data GuardデータベースまたはFar Syncインスタンス

データベース取り込みとレプリケーションは、Oracle Data Guardプライマリデータベース、論理および物理スタンバイデータベース、およびFar Syncインスタンスから変更データをキャプチャできます。
Far Syncインスタンスは、プライマリデータベースからREDOを受け入れ、そのREDOをOracle Data Guard構成の他のメンバーに送信する、リモートOracle Data Guardの宛先です。
Oracle Data Guardプライマリデータベースまたは読み取りモードで開いているスタンバイデータベースからデータをターゲットに初期ロードできます。
設定
Oracle変更キャプチャの設定は、Oracle Data Guardデータベースタイプによって異なります。
スタンバイからプライマリロールへの遷移
Oracle Data Guard環境では、物理スタンバイデータベースがプライマリロールに遷移する可能性があります。通常、ロールの遷移はフェイルオーバーまたはスイッチオーバーが原因で発生します。遷移中は、物理スタンバイデータベースへのすべてのアクティブな接続が終了します。
物理スタンバイデータベースがプライマリロールに遷移した後にCDC処理を再開できるようにするには、データベース取り込みとレプリケーションが遷移ポイントを過ぎて処理できるように、元のスタンバイシステムでいくつかの接続設定プロパティを調整することが必要になる場合があります。遷移が完了したら、新しいプライマリデータベース環境でパフォーマンスを最適化するようプロパティを再度調整できます。
次の表で、この接続プロパティについて遷移段階別に説明します。
接続プロパティ
遷移前
遷移中
遷移後
RACメンバ
プライマリデータベース上のアクティブなスレッドの数を指定します。
スタンバイデータベースとプライマリデータベースの両方のデータベース上で一意のスレッドIDを持つアクティブなスレッドの総数を指定します。
例えば、プライマリデータベースがスレッドID 1と2を使用する2ノードのRACデータベースであり、スタンバイデータベースがスレッドID 2、3、4を使用する3ノードのRACデータベースの場合、プロパティ値を4に指定します。
再開ポイントが遷移ポイントを超えるまで進行したら、必要に応じてこのプロパティ値を編集し、新しいプライマリデータベースからの変更データキャプチャのパフォーマンスを最適化します。
CDCのスレッド追跡によるオーバーヘッドを最小限に抑えるため、環境に適した最小値を使用することをお勧めします。
リーダースタンバイログマスク
スタンバイ接続文字列
スタンバイユーザー名
スタンバイパスワード
すべてのスタンバイプロパティを削除します。読み取り専用アクセス用に開いている物理スタンバイデータベースには適用されません。
プロパティは削除されたままです。
これらのプロパティは指定しないでください。これらはプライマリデータベースでは使用されません。
データベース接続文字列
スタンバイデータベースが開かれていない場合、プライマリデータベース用の接続文字列を定義します。
スタンバイデータベースが開かれている場合、スタンバイデータベース用の接続文字列を定義します。
ロールの遷移後にプライマリロールになるデータベース用の接続文字列を指定します。
この接続プロパティが、新しいプライマリデータベースの接続文字列を定義していることを確認してください。

Oracleアーカイブログの保持に関する考慮事項

データベース取り込みとレプリケーションの増分ロードジョブ、および初期ロードと増分ロードの組み合わせジョブは、OracleオンラインREDOログおよびアーカイブREDOログのトランザクションデータにアクセスできる必要があります。ログを利用できない場合、データベース取り込みとレプリケーションジョブはエラーで終了します。
通常、Oracle DBAは、組織の特定のビジネスニーズとOracle環境に基づいて、アーカイブログの保持期間を設定します。ログを再起動処理に使用できるように、変更キャプチャが停止または潜在的な状態になると予想される最長期間プラス約1時間にわたって、ソースアーカイブログが保持されていることを確認してください。
環境内の現在のログ保持ポリシーが、データベース取り込みとレプリケーションの変更キャプチャ処理に対応するのに十分かどうかを判断するには、次の要素を考慮してください。
ログのキャプチャ処理を再開する必要があるときにアーカイブログを使用できない場合は、DBAに、アーカイブログを復元して必要に応じて保存期間を変更するよう依頼してください。それ以外の場合は、別の初期ロードを実行してターゲットを再マテリアライズしてから、増分変更データ処理を再度開始してください。ただし、この場合、一部の変更が失われる可能性があります。

tnsnames.oraファイルへのJDBC接続の詳細入力

必要に応じて、Oracleのtnsnames.oraファイルにOracleソースのJDBC接続の詳細を入力することで、データベース取り込みおよびレプリケーションのアンロード処理とログベースのCDCに使用できます。後で接続を変更する必要がある場合でも、tnsnames.oraファイルの詳細を更新するだけで十分です。Oracle Database Ingestion接続のプロパティとtnsnames.oraファイルの両方を修正する必要はありません。
tnsnames.oraファイルは、ネイティブのOracle JDBCドライバまたはProgress DataDirect Oracle JDBCドライバのいずれかで使用できます。tnsnames.oraファイルは、ユーザー自身で作成し、設定する必要があります。また、Oracle Database Ingestion接続を定義して、データベース接続文字列を指定する必要もあります。この文字列はソースデータベースのTNSエントリを指定するものです。
この機能は、クエリベースのCDCを使用するOracleソースや、Oracleターゲットには適用されません。また、接続の詳細にtnsnames.oraファイルのみを使用する場合、SSL暗号化やKerberos認証の設定はできません。
tnsnames.oraファイルを使用するように設定するには、次の手順を実行します。
  1. 1tnsnames.oraファイルを設定します。ソースデータベースにTNSエントリを追加します。例:
  2. # Entry for the database 'MY_DB' on the server specified by the host name
    MY_DB_TNS_NAME =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = my_server_hostname)(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = my_service_name.example.com)
    )
    )
  3. 2tnsnames.oraファイルの場所を定義するには、優先度の高い順に記載されている次のシステム環境変数のいずれかを設定します。
  4. これらの場所のいずれかでtnsnames.oraを見つけられない場合、タスクは該当するエラーメッセージで失敗します。
  5. 3タスク設定ウィザードでデータベース取り込みおよびレプリケーションタスクを設定する際、アンロード処理にtnsnames.oraファイルを使用できるようにするために、[タスクの詳細 – ソースの詳細]ページでソースカスタムプロパティuseTnsNamesInJDBCUrlをtrueに設定します。
  6. 4次のプロパティを使用してOracle Database Ingestion接続を定義します。