Oracleデータベース表での大規模なバッチ・ジョブを確認する

お客様は、増分自動リフレッシュを設定した読取り専用のキャッシュ・グループにキャッシュされているOracle Database表に対して、月末または年末に大規模なバッチ・ジョブを実行する場合があります。その場合、事前に予防策を行わないと、自動リフレッシュ操作やレプリケーションにパフォーマンスやメモリーの問題が発生する可能性があります。

この項で説明するタスクは、次のTimesTen Cache構成のコンポーネントではサポートされません。

  • TimesTen Scaleout

  • アクティブ・スタンドバイ・ペア・レプリケーション

  • 戻りサービスが指定されたアクティブ・スタンドバイ・ペア

  • 障害時リカバリ・サブスクライバが指定されたアクティブ・スタンドバイ・ペア

  • 物理的な同期Oracle Data Guard

  • Oracle RAC

キャッシュされたOracle Database表で大規模なバッチ・ジョブを実行する必要がある場合、次のタスクを実行します。

  1. バッチ・ジョブの影響を受けるAUTOREFRESH属性を持つキャッシュ・グループの自動リフレッシュの状態をPAUSEDに設定します。
  2. バッチ・ジョブの影響を直接受けないAUTOREFRESH属性を持つキャッシュ・グループの自動リフレッシュの状態をPAUSEDに設定します。これにより、バッチ処理中のデータは一貫性のあるビューになります。
  3. キャッシュされたOracle Database表でバッチ・ジョブを実行します。
  4. すべての自動リフレッシュ変更ログ記録が有効なログ順序番号(logseq)に割り当てられていることを確認します。cacheInfo.sqlスクリプトをコールします。
    % cd timesten_home/install/oraclescripts
    % sqlplus cacheuser/oracle
    SQL> @cacheInfo
    

    有効なログ順序番号でマークされていない更新の数を確認します。自動リフレッシュが一時停止の状態であるキャッシュ・グルーブのすべての表で、その数が0(ゼロ)または小さい(100未満)のが理想的です。次の例を想定してください。

    *************Autorefresh Objects Information  ***************
    Host name: host1
    Timesten datastore name: /scratch/ttuser/ds/mydsn
    Cache table name: TTUSER.NOTAFFECTED
    Change log table name: tt_05_460491_L
    Number of rows in change log table: 1
    Maximum logseq on the change log table: 1
    Timesten has autorefreshed updates up to logseq: 1
    Number of updates waiting to be autorefreshed: 0
    Number of updates that has not been marked with a valid logseq: 0
    ****************************
    Host name: host2
    Timesten datastore name: /scratch/ttuser/ds/mydsn
    Cache table name: TTUSER.AFFECTED
    Change log table name: tt_05_460489_L
    Number of rows in change log table: 100
    Maximum logseq on the change log table: 213
    Timesten has autorefreshed updates up to logseq: 213
    Number of updates waiting to be autorefreshed: 10000
    Number of updates that has not been marked with a valid logseq: 0
    ****************************
    
  5. ステップ1で変更された各キャッシュ・グループについて、パラレル・モードでキャッシュ・グルーブを手動でリフレッシュします。トランザクション・サイズ(一度にコミットされる行数)および並列度に適切な値を選択します。次に例を示します:
    REFRESH CACHE GROUP samplecg
     COMMIT EVERY n ROWS PARALLEL m;
    COMMIT;
    

    この操作は、自動更新リフレッシュの状態を自動的にONにリセットします。

  6. ステップ2で変更された各キャッシュ・グループについて、自動リフレッシュの状態をONに設定します。次に例を示します:
    ALTER CACHE GROUP sampecg2 SET AUTOREFRESH ON;
    COMMIT;