初期ロードの実行

GoldenGateでは、変更されたデータが含まれるTimesTenのキャッシュ表のみがリフレッシュされます。したがって、連続レプリケーションのためにGoldenGate Replicatプロセスを開始する前に、TimesTenデータベース内のキャッシュされた表にソース・データベース表の行を移入するために、データの初期ロードを実行する必要があります。

初期表データ・ロードは、GoldenGateレプリケーションをインスタンス化する際にデータ同期を確立するために使用されます。一般に、これを実行しているときに、ソース・データベース表に対してワークロードを実行している場合があります。

初期ロード(および連続レプリケーション用のスイッチ)を実行するには、次を実行します。

  1. ソースOracle DatabaseでGoldenGate Extractプロセスを開始していることを確認します。次のステップに進む前に、GoldenGateでソース・データベースの変更データの取得と伝播を開始していることが重要です。

  2. ソースOracle Databaseで、現在のSCN値を決定します。たとえば、SQL*Plusを介して次のSQL問合せを実行します。

    Command>SELECT CURRENT_SCN FROM V$DATABASE;

    この例では、この問合せによって返されるSCN値は12345678です。

  3. TimesTen ttIsqlユーティリティを使用して、適切なデータベース・ユーザーとしてTimesTenデータベースに接続します。このユーザーは、次の基準を満たす必要があります。

    1. ユーザーは、ターゲットTimesTenデータベースとソースOracle Databaseの両方に存在している必要があります。

    2. TimesTenデータベースとOracle Databaseの両方について、そのユーザーのパスワードを知っている必要があります。パスワードは各データベースで異なる場合があります。

    3. TimesTenでは、ユーザーはロードするすべての表に対して最低限のCREATE SESSIONおよびINSERT権限を持っている必要があります。

    4. Oracle Databaseでは、ユーザーはロード問合せを実行するために十分な権限を持っている必要があります。

    次の例では、前に作成したcacheadminユーザーを使用してTimesTenデータベースに接続します:

    $ ttIsql -connStr "DSN=cache1;UID=cacheadmin;PwdWallet=/wallets/cacheadminwallet"
  4. 初期表データ・ロードは、GoldenGateレプリケーションをインスタンス化する際にデータ同期を確立するために使用されます。初期表データ・ロードで最高のパフォーマンスを実現するには、次のようにします。

    • バックエンド・データベースがOracle Databaseである場合は、初期表データ・ロードにTimesTen ttLoadFromOracle組込みプロシージャを使用します。『Oracle TimesTen In-Memory Databaseリファレンス』「ttLoadFromOracle」を参照してください。

    • バックエンド・データベースがOracle以外のデータベースである場合は、初期表データ・ロードにTimesTen ttBulkCpユーティリティを使用します。表データをCSV形式でエクスポートし、ttBulkCPユーティリティを使用してこれをTimesTenにロードします。『Oracle TimesTen In-Memory Databaseリファレンス』「ttBulkCp」を参照してください。

    TimesTen ttLoadFromOracle組込みプロシージャを使用して、GoldenGateの各ターゲット表のデータをロードし、前述のステップ(2)で決定したSCN値をターゲットとするフラッシュバック問合せを指定します。たとえば、次のようにします:

    Command>call ttLoadFromOracle('cacheadmin', 'cachetab1', 'SELECT * FROM 
       oratt.cachetab1 AS OF SCN 12345678');
    Command>call ttLoadFromOracle('cacheadmin', 'cachetab2', 'SELECT * FROM 
       oratt.cachetab2 AS OF SCN 12345678');
    …

ノート:

表間に依存関係(外部キー制約など)がない場合は、個別のttIsqlセッションを使用してそれらをパラレルにロードできます。リソースが制約でない場合は、初期データ・ロードに必要な時間を短縮できます。

これで、TimesTenキャッシュ表にソースのOracle Databaseからデータが移入されました。詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』「キャッシュなしでのOracle DatabaseからTimesTen表へのデータのロード」を参照してください。