目次

Search

  1. はじめに
  2. 一括取り込みデータベース

一括取り込みデータベース

一括取り込みデータベース

Oracleソース

Oracleソース

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

ソースの準備:

  • Secure Agentが実行されているLinuxまたはWindowsシステムで次のシステム環境変数を定義します。
    • ORACLE_HOME環境変数。WindowsのbinディレクトリまたはLinuxのlibディレクトリの1つ上のレベルにある、Oracleクライアントインストールディレクトリを指します。この環境変数は必須ではありません。ただし、これを定義しない場合は、サブディレクトリへのパスを指定する他の環境変数またはSecure Agentプロパティを定義するときに、Oracleクライアントの完全なインストールパスを指定する必要があります。
    • TNS_ADMIN環境変数。Oracleデータベース取り込み接続プロパティの
      [データベース接続文字列]
      プロパティでTNS名を指定している場合、ファイルがデフォルトの$ORACLE_HOME/network/adminディレクトリにないときは、この環境変数を使用してtsnnames.oraファイルのディレクトリの場所を指すようにします。tnsnames.oraファイルは、Oracleソースデータベースと通信するために、Oracle Call Interface(OCI)とともに使用されます。
    Administratorで、データベース取り込みエージェントサービス(DBMIエージェント)のociPathプロパティを、oci.dllまたはlibcIntsh.soファイルを含むOCIライブラリを指すように設定できます。OCIライブラリは、データベース取り込みCDCタスクによってOracleに接続するために使用されます。Oracleは、Linuxでは$ORACLE_HOME/lib、Windowsでは%ORACLE_HOME%\binのociPath値をデフォルトで使用します。
  • 一括取り込みデータベース
    ユーザーに、データベース取り込みロードタイプを実行するために必要なOracle権限があることを確認してください。
    ログベースのCDCを使用した初期ロードと増分ロードの組み合わせの場合は、選択したソーステーブルごとにGRANT FLASHBACK特権が発行されていることを確認するか、ANY TABLEオプションを使用します。
    一括取り込みデータベース
    は、SELECT AS OF
    scn
    文で構成されるOracle Flashback Queryを使用して、Oracleデータベースのソーステーブルの行データをクエリします。Oracleでは、このクエリを使用するにはGRANT FLASHBACK特権が必要です。
    詳細については、Oracle特権を参照してください。
  • ログベースのCDCを使用した
    データベース統合
    ジョブには、増分変更データを読み取るためにOracleのオンラインREDOログとアーカイブREDOログへの読み取りアクセスが必要です。REDOログが、Secure Agentが実行されているオンプレミスシステムからリモートにある場合は、ログへの読み取りアクセスが提供されていることを確認してください。例えば、Oracle Automatic Storage Management(ASM)を使用して、ログをネットワークファイルシステム(NFS)にマウントするか、またはOracleファイルシステム上にあるログへのBFILEアクセスを設定することによって、それを実現します。
  • Oracle ASMのREDOログファイルからデータを読み取る予定の場合、Informaticaでは、ローカルのsqlnet.oraファイルのsqlnet.recv_timeoutパラメータを5分未満に設定することをお勧めします。このパラメータは、クエリがタイムアウトになるまでにOracleクライアントがASMからの応答を待機する時間を指定します。ネットワークの中断やその他の要因により、Oracle接続が応答しなくなることがあります。この値を設定すると、リーダーがそのような状況に適時応答してリカバリできるようになります。
  • Oracle 11.2.04を使用する場合は、Oracle COMPATIBLE初期化パラメータを11.2.04に設定して、そのリリースの最新のRedoログ修正がすべてOracleに適用されるようにします。
  • Secure AgentがOracleと通信できるように、Oracle Database ClientまたはInstant ClientがSecure Agentサーバーにインストールされ、設定されていることを確認します。Oracleクライアントをまだインストールしていない場合は、Oracle Webサイトからクライアントをダウンロードしてインストール情報にアクセスするか、Oracle DBAにOracleクライアントのダウンロードと設定を依頼してください。
  • ログベースのCDCを使用した増分ロードまたは初期ロードと増分ロードの組み合わせ操作の場合、Oracleで次の要件タスクを実行します。
    • OracleデータベースのARCHIVELOGモードを有効にします。データベースがAmazon RDS環境にない場合は、次のSQL文を発行します。
      SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN; SHUTDOWN IMMEDIATE; STARTUP;
      Amazon RDS for Oracleデータベースの場合、データベースをARCHIVELOGモードにして、自動バックアップを有効にするために、バックアップの保存期間を設定します。
    • ログのアーカイブ先を定義します。
    • ソースデータベースでOracleの最小限のグローバルサプリメンタルロギングを有効にします。
    • Oracleソーステーブルにプライマリキーがある場合は、すべてのプライマリキーカラムに対してサプリメンタルロギングが有効になっていることを確認してください。プライマリキーのないソーステーブルの場合、変更データがキャプチャされるすべてのカラムでサプリメンタルロギングが有効になっていることを確認してください。
      データベース取り込みタスクを作成するときに、選択したソーステーブルのすべてのカラムまたはプライマリキーカラムのみのサプリメンタルロギングを実装するスクリプトを生成するオプションがあります。
    • Oracle MAX_STRING_SIZE初期化パラメータがEXTENDEDに設定されて
      いない
      ことを確認してください。EXTENDEDに設定されている場合、一括取り込みデータベースは、大きな(拡張サイズ)VARCHAR2、NVARCHAR2、またはRAWカラムで定義されたカラムを含むテーブルの挿入と更新をレプリケートできません。
    これらのタスクを実行する権限がない場合は、Oracleデータベース管理者に実行を依頼してください。詳細については、Oracleのマニュアルを参照してください。
  • クエリベースのCDCを使用する増分ロード操作の場合、ソーステーブルには、変更行を示すために使用されるCDCクエリカラムを含める必要があります。
    データベース統合
    タスクを作成する前に、クエリカラムをソーステーブルに追加する必要があります。クエリカラムでサポートされるOracleデータ型はTIMESTAMPです。
    クエリベースのCDC用に選択されたソーステーブルにCDCクエリカラムがない場合、変更データキャプチャはこれらのテーブルを無視し、残りのテーブルで処理を続行します。スキップされたテーブルの場合、ターゲットデータベースで生成された、対応するテーブルは空になります。どのソーステーブルにもCDCクエリカラムがない場合、ジョブのデプロイは失敗します。
Oracleソース準備用のAmazon Relational Database Service(RDS):
  1. RDSファイルシステム上にオンラインREDOログとアーカイブREDOログをそれぞれ保持するONLINELOG_DIRディレクトリおよびARCHIVELOG_DIRのディレクトリを作成します。次の実行文を使用します。
    exec rdsadmin.rdsadmin_master_util.create_archivelog_dir; exec rdsadmin.rdsadmin_master_util.create_onlinelog_dir;
  2. Amazon RDS for Oracleソースタイプに必要なOracle特権を一括取り込みデータベースユーザーに付与します。
    Amazon RDS for Oracleソースに必要な特権の詳細については、Amazon RDS for Oracleソースに対するOracle特権を参照してください。
  3. アーカイブREDOログの適切な保持時間を定義します。次の実行文を使用します。
    exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention days',
    number_of_days
    );
  4. Amazon RDSコンソールで、データベースインスタンスの自動バックアップを有効にするために、ソースデータベースのバックアップ保持期間を0より大きい値に設定します。
    この手順では、データベースに対してARCHIVELOGモードを有効にします。
  5. データベースレベルでサプリメンタルロギングが有効になっていることを確認します。次の文を使用します。
    exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');
    データベース取り込みタスクを作成するときに、選択したソーステーブルのサプリメンタルロギングを有効にするスクリプトを生成できます。
  6. オプションで、Amazon RDSコンソールでは、パラメータグループを作成し、デフォルトのバッファープールのキャッシュサイズを定義することができます。デフォルトのバッファプールは、プライマリデータベースのブロックサイズを使用するバッファを保持します。次のDB_CACHE_SIZEパラメータ値を使用します。
    • DB_2K_CACHE_SIZE
    • DB_4K_CACHE_SIZE
    • DB_16K_CACHE_SIZE
    • DB_32K_CACHE_SIZE
    次に、ソースデータベースのパラメーターグループを選択します。

使用に関する考慮事項:

  • Oracleソースを使用する増分ロード操作の場合、
    一括取り込みデータベース
    は、ソースから変更データをキャプチャし、そのデータをターゲットに適用するための代替キャプチャメソッドを提供します。
    使用可能な変更キャプチャメソッドは次のとおりです。
    • ログベースの変更データキャプチャ。
      一括取り込みデータベース
      は、Oracle REDOログからデータ変更を読み取ります。この方法では、ユーザーの権限を拡張する必要があります。
    • クエリベースの変更データキャプチャ。変更データキャプチャでは、共通のCDCクエリカラムを参照するWHERE句を含むSQLステートメントを使用して、挿入および更新の変更がある行を識別します。ソースデータベースの設定は、各ソーステーブルへのCDCクエリカラムの追加に制限されます。ユーザーは、少なくともソーステーブルへの読み取り専用アクセス権を持つ必要があります。
  • 一括取り込みデータベース
    では、ソーステーブルの各行が一意であることを想定しているため、各ソーステーブルにプライマリキーを持たせることをお勧めします。
    一括取り込みデータベース
    は、プライマリキーの代わりに一意のインデックスを許可しません。プライマリキーが指定されていない場合、
    一括取り込みデータベース
    はすべてのカラムをプライマリキーの一部であるかのように扱います。例外: OracleクエリベースのCDCの場合、各ソーステーブルにプライマリキーが必要です。
  • マルチテナントアーキテクチャを使用するOracleソースの場合、ソーステーブルはマルチテナントコンテナデータベース(CDB)内の単一のプラガブルデータベース(PDB)に存在する必要があります。
  • Oracle Transparent Data Encryption(TDE)を使用して、増分ロード処理のためのOracleソーステーブルを含むテーブルスペース内のデータを暗号化できます。
    一括取り込みデータベース
    は、ファイルシステム、ASM、またはOracle Key Vault(OKV)などPKCS11インタフェースを提供する外部ハードウェアセキュリティモジュール(HSM)にあるTDEキーストアへのマスター暗号化キーの保存をサポートします。詳細については、Informaticaグローバルカスタマサポートにお問い合わせください。
  • OracleソースのCHARカラムまたはVARCHARカラムにnullが含まれている場合、
    データベース統合
    ジョブは、Amazon S3、フラットファイル、Microsoft Azure Data Lake、またはMicrosoft Azure Synapse Analyticsターゲットにデータを書き込むときに、null値を二重引用符(")マークまたはその他の区切り文字で区切りません。
  • 一括取り込みデータベース
    は、Oracle Data Guardの論理および物理スタンバイデータベースおよびFar Syncインスタンスをソースとしてサポートします。詳細については、ソースとしてのOracle Data GuardデータベースまたはFar Syncインスタンスを参照してください。
  • 一括取り込みデータベース
    は、RESETLOGS境界を越えてデータを処理できます。ソースとターゲットが同期しなくなるのを避けるため、RESETLOGSを実行する前にキャプチャ処理を停止し、RESETLOGSイベントの後にキャプチャ処理を再開することをお勧めします。そうしないと、キャプチャプロセスによってデータがターゲットに送信され、その後RESETLOGSイベントによって元に戻されて、ソースとターゲットが同期しなくなる可能性があります。
  • Oracle REDOログにアクセスするための別の戦略を利用できます。詳細については、CDCのOracleログアクセス方法を参照してください。
  • データベース取り込み増分ロードタスクまたは初期ロードと増分ロードの組み合わせタスクに、30文字を超えるOracleソーステーブル名または1つ以上のカラム名が含まれている場合、Oracleではプライマリキーと外部キーを含むテーブル全体の補足ログが抑制されます。その結果、テーブルに対するほとんどの操作が失敗します。この問題は、Oracleの制限が原因で発生します。この状況では、テーブルをキャプチャ処理から除外するか、長いテーブル名とカラム名を30文字以下の名前に変更してください。
  • データベース取り込み初期ロードジョブで、Oracle BLOB、CLOB、およびNCLOBカラムからAmazon Redshift、Amazon S3、Databricks Delta、Google BigQuery、Google Cloud Storage、Microsoft Azure Data Lake Storage Gen2、Microsoft Azure Synapse Analytics、Oracle、Oracle Cloud Object Storage、Snowflake、およびSQL Serverターゲットにデータをレプリケートできます。BLOB、CLOB、またはNCLOBカラムからデータをレプリケートするには、タスクを設定するときに、
    [ソース]
    ページの
    [詳細]
    [LOBを含める]
    を選択する必要があります。LOBカラムデータは、LOBタイプとターゲットタイプによって異なるバイト制限よりもサイズが大きい場合、ターゲットに書き込まれる前に切り詰められます。詳細については、ソースの設定を参照してください。
  • 一括取り込みデータベース
    では、ターゲットタイプまたはロードタイプを含む次のOracleソースデータ型はサポートされません。
    • ANYTYPE、ANYDATA、ANYDATASETなどの「ANYタイプ」
    • 拡張タイプ
    • INTERVAL
    • JSON
    • LOB(初期ロードジョブのBLOB、CLOB、およびNCLOBを除く)CSV出力形式を使用するAmazon S3、Google Cloud Storage、またはMicrosoft Azure Data Lake Storage Gen2ターゲット以外のターゲットを持つ
    • TIMESTAMP WITH LOCAL TIME ZONE
    • UROWID
    • XMLTYPE、URIタイプ、URIFactoryパッケージのサブタイプなどのXML定義タイプ
    • SDO_GEOMETRYなどの空間タイプ
    • OBJECT、REF、VARRAY、ネストされたテーブルタイプなどのユーザー定義タイプ
    サポートされていないデータ型を持つソースカラムは、ターゲット定義から除外されます。
    サポートされているOracleデータ型からターゲットタイプへのデフォルトのマッピングについては、Default Data Type Mappingsを参照してください。
  • OracleソースのRAWカラムをターゲットのCHARまたはVARCHARカラムにマッピングするときに、カスタムデータ型マッピングルールを使用しないようにしてください。カスタムデータ型マッピングルールを使用した場合、データベース取り込みタスクのデプロイメントが失敗する可能性があります。
  • 一括取り込みデータベース
    では、ターゲットタイプに関係なく、Oracleソースカラムの非表示カラムはサポートされていません。これらのカラムについては、
    データベース統合
    増分ロードジョブと、初期ロードジョブと増分ロードジョブの組み合わせは、対応するターゲットカラムにnullをプロパゲートします。
  • ターゲットテーブルに存在しないレコードに対してOracleソーステーブルのプライマリキー値を更新すると、そのレコードはターゲットにレプリケートされません。ただし、監視インタフェースは更新カウントを増分してプライマリキーの更新を含めます。プライマリキー値の更新前にターゲットテーブルにレコードがすでに存在する場合、データはターゲットにレプリケートされます。
  • Oracleテーブルへの更新によって既存のカラム値が変更されない場合、テーブルの監視詳細の更新カウントは引き続き増加しますが、更新行がターゲットに適用されることはありません。一括取り込みデータベースは、実際に値を変更しない更新行を無視します。また、ほとんどのデータベースターゲットにおいて、一括取り込みデータベースはターゲットに変更を書き込む前にマイクロバッチレベルで変更レコードの集計を行います。この場合、監視統計の更新カウントとターゲットに適用された行との間に不一致が発生する可能性もあります。
  • テーブル名またはテーブルカラム名が30文字を超える場合、テーブルのサプリメンタルロギング設定がOracleによって無視されることがあります。この場合、データベース取り込み増分ロードまたは組み合わせロードジョブの結果は予測できません。
  • 一括取り込みデータベース
    は、Oracleソースを持つジョブの派生カラムをサポートしていません。
  • Oracleの初期ロードと増分ロードの組み合わせジョブの場合、Oracle Flashbackクエリを使用して、変更ストリーム内の特定の時点で最新のコミット済みデータを取得します。初期ロード期間中にソーステーブルが切り詰められないようにしてください。切り詰めが発生した場合、フラッシュバッククエリ中にDDL変更を実行すると、クエリは失敗します。
  • Oracleソースを持ち、複数のエージェントが含まれているSecure Agentグループを使用するデータベース取り組み増分ロードジョブおよび初期ロードと増分ロードの組み合わせジョブは、アクティブなエージェントの実行が停止すると、次の制限に従ってグループ内の別のエージェントに切り替えることができます。
    • ジョブにKafkaターゲットを含めることはできません。
    • ジョブで永続ストレージを有効にすることはできません。
    • ジョブでは、クエリベースのCDCメソッドを使用して、タイムスタンプカラムをクエリして変更をキャプチャすることはできません。
    • 切り替えるには、ジョブを停止して再開する必要があります。
  • クエリベースのCDCメソッドを使用した増分ロードジョブ、および初期ロードと増分ロードの組み合わせジョブには、次の制限が適用されます。
    • 選択したソーステーブルごとにプライマリキーが必要です。ソーステーブルにプライマリキーが存在しない場合、変更データキャプチャはテーブルを無視し、選択されたソーステーブルの残りの処理を続行します。どのソーステーブルにもプライマリキーがない場合、ジョブは失敗します。
    • クエリベースのCDCは、削除操作をキャプチャしません。
    • 挿入と更新の操作はすべて更新/挿入として扱われ、監視インタフェースに表示され、更新としてログに記録されます。
    • 特定のサイクルの開始時に夏時間またはタイムゾーンの変更が検出された場合、またはジョブが失敗状態または停止状態から再開されたときに、
      一括取り込みデータベース
      は再開してそのサイクルで発生した変更を処理します。夏時間またはタイムゾーンの変更を適用するには、Oracleデータベースを再起動する必要があります。
    • Oracleソースを持つデータベース取り込み初期ロードと増分ロードの組み合わせジョブでは、アーカイブREDOログのコピーから変更を読み取ることができます。Oracleデータベース取り込み接続プロパティの
      [読み取りモード]
      プロパティをARCHIVECOPYに設定し、ソースのカスタムプロパティpwx.cdcreader.oracle.reader.additionalをdirおよびfileパラメータを指定して設定する必要があります。dirパラメータでは、CDCログリーダーがアーカイブログコピーをスキャンするベースディレクトリの名前を指すようにし、fileパラメータでは、ログコピーのフィルタリングに使用するマスクを指定します。
  • Oracleソースを使用したデータベース取り込みジョブの実行後、レプリケーション用に追加のソースカラムを選択してタスクを再デプロイした場合、ジョブは追加のカラムを使用してターゲットテーブルをすぐに再作成したり、それらのデータをレプリケートしたりしません。ただし、増分ロードジョブ、または初期ロードと増分ロードの組み合わせジョブでは、スキーマドリフトの
    [カラムの追加]
    オプションを
    [レプリケート]
    に設定した場合、次の新しいDML変更レコードを処理するときに、新しく選択したカラムがターゲットに追加され、データがレプリケートされます。初期ロードジョブでは、次回のジョブ実行時に、新しく選択したカラムがターゲットに追加され、データがレプリケートされます。
  • 一括取り込みデータベース
    は、Oracle Exadataマシンから変更データをキャプチャできますが、Oracle Exadata Hybrid Columnar Compression(EHCC)はサポートしていません。