Oracle DatabaseのためのOracle GoldenGate Classic Architectureのアップグレード

ここでは、最小限のアップグレードを実行するための手順を説明します。

始める前に、次の準備情報を必ず確認しておいてください。

ノート:

統合キャプチャを使用し、トリガーベースのDDLキャプチャから新しいネイティブDDLキャプチャにアップグレードする場合、要求されるまでDDLトリガーを削除しないでください。Extractでは、REDOのCOMPATIBLEレベルまでDDLをマイニングする必要があります。たとえば、データベースがアップグレードされたときにExtractが1週間遅れている場合、ExtractはネイティブDDLキャプチャにすぐには切り替わりません。以前のREDOの処理がまず行われ、その後、ExtractはネイティブDDLキャプチャに自動的にアップグレードされます。
  1. GGSCIで次のコマンドを使用して、Extractの開始時にリストアが必要になる可能性のある最も古いアーカイブ・ログを判断します。Recovery Checkpointフィールドに、リカバリに必要な最も古いログが表示されます。

    GGSCI> INFO EXTRACT group, SHOWCH

    アップグレード・アクティビティはピーク時間外に実行することをお薦めします。実行時間の長いトランザクションがある場合、ソース・システムで、Extractを停止した時点で最も古いオープン・トランザクションの最初のレコードがシステムではなくログにあると、新しいExtractが、バインド・リカバリ・チェックポイントではなく通常のリカバリ・チェックポイントから処理を開始する可能性があります。

    Extractの再起動にかかる時間は、Extractを停止した時点でコミットされていないデータの量と直接関係します。

    次の2つのオプションがあります。

    • アーカイブを、INFO EXTRACTと表示されているリカバリ・チェックポイントで示されている時点までリストアします。

    • アップグレードしているExtractに適用されるトランザクションで、長時間実行されているものを消去します。これは、トランザクションをスキップするか、コミット済トランザクションとして強制的に証跡に書き込むことで実行します。トランザクションをスキップするとデータが失われる可能性があり、トランザクションを強制的に証跡に書き込むと、トランザクションのロールバック時に、不要なデータが追加される可能性があります。トランザクションのスキップまたは強制を実行するには、次のステップに従います。

      1. GGSCIで、次のコマンドを使用してオープン・トランザクションを表示します。クリーンアップする任意のトランザクションのトランザクションIDを記録します。

        GGSCI> SEND EXTRACT group, SHOWTRANS
      2. SEND EXTRACTコマンドで古いトランザクションをクリーンアップしますが、トランザクションをスキップするにはSKIPTRANSオプションを、コミット済トランザクションとして現在の状態を強制的に証跡に書き込むにはFORCETRANSオプションを使用します。

        GGSCI> SEND EXTRACT group, {SKIPTRANS | FORCETRANS} transaction_ID [THREAD n] [FORCE]
        
      3. 長時間実行されているトランザクションのクリーンアップが終了したら、バインド・リカバリ・チェックポイントを強制します。

        GGSCI> SEND EXTRACT group, BR BRCHECKPOINT IMMEDIATE

        ノート:

        スキップまたは強制されたトランザクションはバインド・リカバリ・チェックポイントからクリーンアップされず、SHOWTRANSが再度発行された場合に表示されるため、強制されたチェックポイントが必要です。これは既知の問題です。SEND EXTRACTの詳細は、『Oracle GoldenGateリファレンス』を参照してください。
  2. (OracleのクラシックExtractのみ)クラシックExtractを使用している場合は、DMLとDDLが停止した後で次の問合せを実行します。この問合せでは、すべてのトランザクションが確実に処理されるために必要な最小SCNを指定します。オープンしているトランザクションの最も古いSCNを問い合せます。オープンしているトランザクションがない場合は、データベースの現在のSCNを使用できます。

    SELECT MIN(SCN) AS INSTANTIATION_SCN
     FROM (SELECT MIN(START_SCN) AS SCN
             FROM gv$transaction
             UNION ALL
             SELECT CURRENT_SCN
             FROM gv$database);

    ノート:

    Oracle GoldenGateのアップグレードを行う際、DML操作は停止しなくてもかまいませんが、DDLやその他のアップグレードSQLスクリプトなどのSQLを実行する必要がある場合、DMLを停止する必要があります。

    問合せの結果は次のとおりです。

    YES = reached the logend

  3. (OracleのクラシックExtractのみ)問合せの結果からSCNを記録します。

  4. (Oracleのソース・システム用クラシックExtractのみ)取得するREDOデータがこれ以上ないことが示されるまで、LOGENDオプションを指定してSEND EXTRACTコマンドを発行します。統合Extractを使用している場合は、このステップは省略してかまいません。

    (ソース・システム。統合Extractを使用している場合) Extractのリカバリ・チェックポイントが問合せ結果の現在のSCNを過ぎるまで待ちます。ExtractがチェックポイントでそのSCNを過ぎたかどうかを判別するには、Extractレポート・ファイルを表示します。

    GGSCI> SEND EXTRACT group LOGEND

  5. (ソース・システム) GGSCIで、Extractとデータ・ポンプを停止します。

    GGSCI> STOP EXTRACT group
    
  6. 統合Extractを使用している場合は、このステップは省略してかまいません。クラシックExtractを使用している場合は、現在トリガー・ベースのDDLキャプチャ・サポートを使用している場合にのみ、ソース・システムで次のステップに従ってください。

    1. SQL*Plusを実行し、sysdba権限を持つユーザーとしてログインします。

    2. エラー(ORA-04021)を回避するために、それ以前にDDLを発行したすべてのセッションを切断します。このアップグレード中にDDLセッションが開始されないことを確認してください。

    3. Oracle GoldenGateディレクトリから、ddl_disableスクリプトを実行して、Oracle GoldenGate DDLトリガーを無効にします。

    4. ddl_removeスクリプトを実行してOracle GoldenGate DDLトリガーおよびその他の関連オブジェクトを削除し、Oracle GoldenGate DDLスキーマの名前を指定します。

      デバッグでの使用に備え、スクリプト出力を記録するddl_remove_spool.txtログ・ファイル、および現在のユーザーの環境設定を記録するddl_remove_set.txtファイルが生成されます。

    5. marker_removeスクリプトを実行してOracle GoldenGateマーカー・サポート・システムを削除し、Oracle GoldenGate DDLスキーマの名前を指定します。

      デバッグでの使用に備え、スクリプトの出力を記録するmarker_remove_spool.txtファイル、およびmarker_remove_set.txtファイルが生成されます。

  7. (ターゲット・システム) GGSCIで、すべてのReplicatプロセスを停止します。

    GGSCI> STOP REPLICAT group
  8. (ソースおよびターゲット・システム) GGSCIで、ソース・システムとターゲット・システムのManagerを停止します。

    GGSCI> STOP MANAGER
  9. ターゲット・システムのみを更新する場合、またはソース側の前にターゲット側を更新する場合は、必ずSTOPを使用して、すべてのデータ・ポンプ、およびそのターゲット上で実行されている、任意のソースについてターゲットに直接書き込むプライマリExtractを停止します。開始されている静的コレクタがあれば、同様に停止する必要があります。serverプロセスが実行されていないことを確認するには、psgrepなどのプロセスをチェックするシェル・コマンドを使用します。

  10. アウトオブプレース・アップグレードを使用する必要があります。アウトオブプレース・アップグレードでは、アップグレードの実行中に同時に既存のインストールも保持されます。詳細は、Oracle GoldenGateのインストールOracle DatabaseへのOracle GoldenGate Classic ArchitectureのインストールClassic Architectureのパッチ適用を参照してください。

  11. GGSCIで、次の順序に従って、ソース・システムとターゲット・システムのOracle GoldenGateプロセスを開始します。

    GGSCI> START MANAGER
    GGSCI> START EXTRACT group
    GGSCI> START EXTRACT pump
    GGSCI> START REPLICAT group

    ログ・ファイルをリストアする必要がある場合、Extractはリストアが必要なログを示すエラーで異常終了します。ログをそのログまでリストアし、Extractを再起動します。

パラメータ・ファイルのコピーを作成してパラメータを変更する場合は、古いパラメータ・ファイルが格納されていたOracle GoldenGateディレクトリに新しいパラメータ・ファイルを移動し、古いパラメータ・ファイルと同じ名前に変更します。大文字と小文字を区別する場合は、パラメータ・ファイルにNOUSEANSISQLQUOTESを追加するか、convprmユーティリティを実行し、必要に応じて引用符を変換します。詳細は、「文字セット変換を使用している場合のアップグレードの考慮事項」を参照してください。

古いOracle GoldenGateリリースのアップグレードに関する考慮事項

  • (ターゲット・システム。バージョン11.2.1.0.0以前からReplicatをアップグレードする場合)各ターゲット・システムにおいてGGSCIで次のコマンドを発行し、そのシステムのReplicatチェックポイント表をアップグレードします。このステップによって表定義が更新され、Oracle GoldenGate 18c (18.1.0)リリースをサポートする列が追加されます。
    GGSCI> DBLOGIN [{SOURCEDB} data_source] | 
    [, database@host:port] | {USERID {/ | user id}
    [, PASSWORD password]   [algorithm ENCRYPTKEY {keyname | DEFAULT}] |USERIDALIAS alias 
    [DOMAIN domain]}
    GGSCI> UPGRADE CHECKPOINTTABLE [owner.table]

    チェックポイント表がGLOBALSファイル内のCHECKPOINTTABLEにリストされている名前で作成された場合は、owner.tableを省略できます。

  • (ソース・システム)ソース・システムで、ADD TRADATAを使用して表にサプリメンタル・ロギングが追加される場合は、ulg.sql scriptsysdbaとして実行します。このスクリプトは、表レベルの既存のサプリメンタル・ログ・グループを、新しいリリースで必要な新しい形式に変換します。このスクリプトはエラーなしで実行する必要があります。エラーが発生した場合は、Oracleサポートに連絡してください。ADD SCHEMATRANDATAを使用している場合は、これは必要ありません。