8 Oracle GoldenGate構成のその他の考慮事項

この章では、データベース環境に適用可能な構成のその他の考慮事項について説明します。

内容は次のとおりです。

Oracle順序のサポートのインストール

Oracle順序をサポートするには、いくつかのデータベース・プロシージャをインストールする必要があります。

Oracle順序オブジェクトのインストール手順

  1. SQL*Plusで、SYSDBAとしてソースおよびターゲットのOracleシステムに接続します。

  2. Oracle GoldenGate DDLレプリケーション機能をサポートするデータベース・ユーザーがすでに割り当てられている場合は、このステップをスキップできます。そうでない場合は、両方のシステムのSQL*Plusで、DDLユーザーでもあるデータベース・ユーザーを作成します。
    CREATE USER DDLuser IDENTIFIED BY password; 
    GRANT CONNECT, RESOURCE, DBA TO DDLuser;
    
  3. 各システムのOracle GoldenGateインストール・ディレクトリからGGSCIを実行します。

  4. GGSCIで、次のコマンドを各システムで発行します。

    EDIT PARAMS ./GLOBALS
    
  5. GLOBALSファイルにGGSCHEMAパラメータを入力し、この手順の前の部分で作成したDDLユーザーのスキーマを指定します。

    GGSCHEMA schema
    
  6. ファイルを保存し、閉じます。

  7. 両方のシステムのSQL*Plusで、sequence.sqlスクリプトをOracle GoldenGateインストール・ディレクトリのルートから実行します。このスクリプトは、Oracle GoldenGateプロセスで使用するいくつかのプロシージャを作成します。(これらを手動で実行しないでください。)最初のステップで作成したユーザー情報の入力が求められます。

    @sequence.sql
    
  8. ソース・システムのSQL*Plusで、DBLOGINコマンドの発行に使用されるデータベース・ユーザーにupdateSequenceプロシージャのEXECUTE権限を付与します。このユーザーについて記録しておいてください。プロシージャをコールするFLUSH SEQUENCEコマンドを発行する前に、DBLOGINを使用してデータベースにログインします。

    GRANT EXECUTE on DDLuser.updateSequence TO DBLOGINuser;
    
  9. ターゲット・システムのSQL*Plusで、Replicatデータベース・ユーザーにreplicateSequenceプロシージャのEXECUTE権限を付与します。

    GRANT EXECUTE on DDLuser.replicateSequence TO Replicatuser;
    
  10. ソース・システムのSQL*Plusで、次の文を発行します。

    ALTER TABLE sys.seq$ ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
    

マルチテナント・データベースから順序をキャプチャする方法

  1. 順序のキャプチャ元となる各PDBにOracle GoldenGateユーザーを作成します。

  2. ユーザーをGLOBALSパラメータ・ファイルに追加します。各PDBに同じユーザーを使用する方が簡単です。そうしない場合、ステップ3を実行するたびにGLOBALSファイルを変更する必要があります。

  3. ステップ1で作成したユーザーを使用して、各PDBでsequence.sqlスクリプトを実行します。

  4. Admin ClientまたはGGSCIにログインします。

  5. DBLOGINを使用して、ソースのルート・コンテナに接続します。

  6. 各PDBに対してFLUSH SEQUENCEコマンドを発行します。

マルチテナント・データベースに順序をレプリケートする場合:
  1. ターゲットで、順序のレプリケート先となる各PDBに対して、前の項のステップ1で作成したとおりにユーザーを作成します。

  2. そのユーザーを使用してPDBに接続し、sequence.sqlスクリプトを実行します。

これらのデータベース・アカウントを保持しない場合は、ユーザーを削除するか、アカウントを非アクティブ化できます。

プロセス全体の例を次に示します。

Environment information
            OGG 19.1 Oracle 12c to Oracle 12c Replication, Integrated 
            Extract, Parallel Replicat
            Source: CDB GOLD, PDB CERTMISSN 
            Target: CDB PLAT, PDB CERTDSQ 
            Source Oracle GoldenGate Configuration
            Container User: C##GGADMIN 
            PDB User for Sequences: GGATE 
sqlplus / as sysdba 
            SQL> alter session set container=CERTMISSN; 
            SQL> create user ggate identified by password default tablespace 
users temporary tablespace temp quota unlimited on users container=current;
Run @sequence 
    sqlplus / as sysdba 
    SQL> alter session set container=CERTMISSN; 
    SQL> @sequence

プロンプトが表示されたら、GGATEを入力します

GLOBALS 
            GGSCHEMA GGATE 
         Flush Sequence 
            GGSCI> DBLOGIN USERIDALIAS GGADMIN DOMAIN GOLD_QC_CDB$ROOT 
            GGSCI> FLUSH SEQUENCE CERTMISSN.SRCSCHEMA1.
Target OGG Configuration 
         PDB User: GGATE 
         Run @sequence 
                sqlplus / as sysdba 
                SQL> alter session set container=CERTDSQ;
                SQL> @sequence

プロンプトが表示されたら、GGATEを入力します

特別なデータ型の処理

異なるOracleデータ型に対する特別な構成要件について説明します。

この項は、特に断りのないかぎり、Extractがクラシック・キャプチャ・モードで動作する場合も統合キャプチャ・モードで動作する場合も該当します。

マルチバイト・キャラクタ型

マルチバイト・キャラクタは、サポートされている文字セットの一部としてサポートされます。Oracleソース・データベースのセマンティクス設定がBYTEで、Oracleターゲットの設定がCHARの場合、構成でReplicatパラメータSOURCEDEFSを使用し、DEFGENユーティリティによって生成された定義ファイルをターゲットに配置します。これらのステップは、ソースおよびターゲットのデータ定義が同一であるかどうかにかかわらず、セマンティクス内の差異のサポートに必要です。Replicatでは、定義ファイルを参照して固定サイズの文字列のサイズ上限を決定します。

Oracle Spatialオブジェクト

SDO_GEORASTERオブジェクト型の列が1つ以上含まれている表をOracleソースからOracleターゲットにレプリケートするには、それらが正しく処理されるよう、次の手順に従ってOracle GoldenGateを構成します。

  1. GeoRaster表とそれに関連するラスター・データ表に対するTABLE文とMAP文を作成します。
  2. SDO_GEORASTERデータ型のMETADATA属性の値が1MBを超える場合、XMLBUFSIZEオプションを指定してDBOPTIONSパラメータを使用し、SDO_GEORASTERデータ型の埋込みSYS.XMLTYPE属性を格納するメモリー・バッファのサイズを大きくします。バッファが小さすぎる場合、Extractは異常終了します。『Oracle GoldenGateリファレンス』XMLBUFSIZEに関する項を参照してください。
  3. ターゲットGeoRaster表と空間データの整合性を確保するために、ソースとターゲットの両方でトリガーを有効なままにします。MAPパラメータのREPERRORオプションを使用して、ターゲットでトリガーを有効なままにしたことにより発生する「ORA-01403 No data found」エラーを処理します。ソースのGeoRaster表の行を削除すると、トリガーによって削除がラスター・データ表にカスケードされます。両方の削除がレプリケートされます。レプリケートされた親削除によって、ターゲット上でカスケードされた(子)削除がトリガーされます。レプリケートされた子削除が行われると、冗長になりエラーが発生します。REPERRORを使用するには、次のようにします。
    • ラスター・データ表が含まれている各MAP文でREPERROR文を使用します。

    • Oracleエラー1403をSQLエラーとして使用します。

    • いずれかの応答オプションをエラー処理に使用します。

ターゲットのGeoRaster表のアクティブなトリガーによって生じるラスター表のエラーを処理する適切な方法は、DISCARDを指定してREPERRORを使用し、エラーをトリガーした、カスケードされた削除を破棄します。ターゲットのGeoRaster表のトリガーによって、ラスター・データ表に対して削除が実行されるため、レプリケートされた削除は不要です。

MAP geo.st_rdt, TARGET geo.st_rdt, REPERROR (-1403, DISCARD) ;

エラー処理の監査証跡を保持する必要がある場合は、REPERROREXCEPTIONを使用して例外処理を呼び出します。この場合、例外表を作成して、次のようにソースのラスター・ターゲット表に2回マップします。

  • 1回目は実際のターゲットのラスター・データ表(1403エラーを処理するREPERRORを使用)。

  • 2回目は例外表で、COLMAP句を使用して1403エラーとその他の関連する情報をキャプチャします。

例外表の使用の詳細は、Oracle GoldenGateの管理for Windows and UNIXを参照してください。

REPERRORオプションの詳細は、『Oracle GoldenGateリファレンス』を参照してください。

TIMESTAMP

タイムスタンプ・データをレプリケートするために、Oracle Databaseは、TIMESTAMP WITH LOCAL TIME ZONEデータを受信先のデータベース(Oracle GoldenGateの場合はターゲット・データベース)のローカルのタイムゾーンに正規化します。適用するデータの元のタイム・スタンプを保持するために、Replicatはセッションをソース・データベースのタイムゾーンに設定します。Replicatパラメータ・ファイルのSOURCETIMEZONEを使用することで、このデフォルトをオーバーライドして、異なるタイムゾーンを指定できます。Replicatでセッションをターゲット・タイムゾーンに強制的に設定させるには、PRESERVETARGETTIMEZONEパラメータを使用します。

TIMESTAMP WITH TIME ZONETZRで表されてOracle GoldenGateが異常終了しないようにするには、ExtractパラメータTRANLOGOPTIONSINCLUDEREGIONIDWITHOFFSETで使用して、TZRで表されたTIMESTAMP WITH TIMEZONEを、バージョン10g以降のOracleソースからそれより前のOracleターゲットに、またはOracleソースからOracle以外のターゲットにレプリケートします。これらのオプションにより、TZRで表されたTIMESTAMP WITH TIME ZONEをサポートしないOracleバージョン、およびUTCオフセットで表されたタイムゾーンのみをサポートするデータベース・システムにレプリケートできます。

SOURCETIMEZONEパラメータを使用して、バージョン12.1.2より前のExtractでキャプチャされるデータのソース・タイムゾーンを指定することもできます。これらのバージョンは、ソース・タイムゾーンを証跡に書き込みません。

ラージ・オブジェクト(LOB)

クラシックと統合の両方のキャプチャ・モードでのLOBに対する構成ガイドラインは、次のとおりです。

  1. 可能な場合、行外にラージ・オブジェクトを保存します。

  2. (統合キャプチャのみ該当)統合キャプチャでは、REDOログからLOBがキャプチャされます。LOBドキュメントに対するUPDATE操作では、LOBの変更された部分のみが記録されます。変更された部分のみが記録される場合にLOBドキュメント全体の証跡への書込みを強制するには、Extractパラメータ・ファイルでFETCHPARTIALLOBオプションを指定してTRANLOGOPTIONSパラメータを使用します。Extractは、ログマイニング・サーバーから部分的なLOBコンテンツを受信すると、部分的なLOBを処理するのではなく、LOBイメージ全体をフェッチします。Oracle以外のターゲットにレプリケートする場合、またはLOBイメージ全体が必要なその他の場合にこのオプションを使用します。

XML

Oracle GoldenGate制約内でXMLを使用するためのツールは、次のとおりです。

  • クラシックと統合の両キャプチャ・モードで、XMLスキーマへの変更のキャプチャはサポートされませんが、スキーマを展開して、再同期をしなくてもそのレプリケーションを再開できます(「XMLスキーマの変更のサポート」を参照)。

  • (統合キャプチャのみ該当)統合キャプチャでは、REDOログからXMLがキャプチャされます。XMLドキュメントのUPDATE操作では、OBJECT RELATIONALまたはBINARYとして格納されている場合、XMLの変更された部分のみが記録されます。変更された部分のみが記録される場合にXMLドキュメント全体の証跡への書込みを強制するには、Extractパラメータ・ファイルでFETCHPARTIALXMLオプションを指定してTRANLOGOPTIONSパラメータを使用します。Extractは、ログマイニング・サーバーから部分的なXMLコンテンツを受信すると、部分的なXMLを処理するのではなく、XMLドキュメント全体をフェッチします。Oracle以外のターゲットにレプリケートする場合、またはXMLイメージ全体が必要なその他の場合にこのオプションを使用します。

ユーザー定義型

Oracle Databaseがリリース12.0.0.0.0以上と互換性がある場合、統合ExtractはREDOからデータをキャプチャします(フェッチなし)。詳細は、「フラッシュバック問合せの設定」を参照してください。

NCHARNVARCHAR2またはNCLOB属性のユーザー定義型を含むソース・データをOracleターゲットにレプリケートする場合は、Replicatパラメータ・ファイルのHAVEUDTWITHNCHARパラメータを使用します。この型のデータが証跡で検出される場合は、HAVEUDTWITHNCHARによって、ReplicatがAL32UTF8でOracleターゲットに接続されます(これは、これらの属性のいずれかがユーザー定義のデータ型に含まれる場合に必要です)。HAVEUDTWITHNCHARは、NLS_LANGがターゲットでAL32UTF8に設定される場合でも必要です。デフォルトのReplicatは、NLS_LANGを無視し、データベースのネイティブ文字セットでOracle Databaseに接続します。ReplicatはOracle Call InterfaceのOCIStringオブジェクトを使用していますが、これはNCHARNVARCHAR2またはNCLOB属性をサポートしないため、ReplicatがそれらをCHARとしてバインドする必要があります。このような状況では、AL32UTF8のターゲットに接続することでデータの損失を防ぎます。HAVEUDTWITHNCHARは、パラメータ・ファイルのUSERIDまたはUSERIDALIASパラメータの前に存在する必要があります。

他のデータベース・プロパティの処理

この項では、Oracle GoldenGateに影響する可能性のあるデータベース・プロパティと、その状態の解決または回避に使用できるパラメータについて説明します。

次の表でリストされるのは、データベース・プロパティおよび関連する問題点/解決策です。

データベース・プロパティ 問題点/解決策

時間隔パーティション化がある表

時間隔パーティション化がある表をサポートするには、WILDCARDRESOLVEパラメータがそのデフォルトのDYNAMICのままであることを確認します。

仮想列のある表

仮想列は記録されません。また、Oracleで仮想列に対するDMLは許可されません。ただし、次のようにして、このデータをキャプチャし、仮想列ではないターゲット列にマップできます。

ExtractのTABLE文に表を含め、TABLEFETCHCOLSオプションを使用してデータベースの仮想列から値をフェッチします。

ReplicatのMAP文で、ソースの仮想列を仮想ではないターゲット列にマップします。

本質的に更新可能なビューを持つ表

本質的に更新可能なビューにレプリケートするには、関連付けの対象のソース表とターゲット表をマップするMAP文にKEYCOLS句を使用して、更新可能なビューの一意の列にキーを定義します。

異なる場所にあるREDOログまたはアーカイブ

TRANLOGOPTIONSパラメータには、データベースのデフォルトとは異なる場所またはExtractが実行されているのとは異なるプラットフォームにREDOログまたはアーカイブが格納される環境を処理するためのオプションが含まれます。これらのオプションは、Extractがクラシック・キャプチャ・モードで動作する場合に必要になることがあります。詳細は、『Oracle GoldenGateリファレンス』を参照してください。

TRUNCATE操作

TRUNCATE操作をレプリケートするには、次の2つのオプションのいずれかを選択します。

  • GETTRUNCATESパラメータを使用したスタンドアロンのTRUNCATEサポートでは、TRUNCATE TABLEはレプリケートされますが、他のTRUNCATEオプションはレプリケートされません。Oracle GoldenGate DDLサポートを使用している場合にのみ使用します。

  • 完全DDLサポートでは、TRUNCATE TABLEALTER TABLE TRUNCATE PARTITIONおよび他のDDLがレプリケートされます。このサポートをインストールするには、「トリガーベースのDDLキャプチャのインストール」を参照してください。

順序

順序のDDL(CREATEALTERDROPRENAME)をレプリケートするには、Oracle GoldenGate DDLサポートを使用します。

順序値のみをレプリケートするには、Extractパラメータ・ファイルでSEQUENCEパラメータを使用します。これには、Oracle GoldenGate DDLサポート環境は不要です。詳細は、『Oracle GoldenGateリファレンス』を参照してください。

チェックポイント頻度の制御

TRANLOGOPTIONSパラメータのCHECKPOINTRETENTIONTIMEオプションでは、統合モードのExtractがチェックポイントを自動的にパージするまで保持する日数を制御します。

部分的な日数は、10進値を使用して指定されます。たとえば、8.25は8日と6時間を指定します。デフォルトは7日です。このパラメータの詳細は、『Oracle GoldenGateリファレンス』を参照してください。

Replicatトランザクションの除外

双方向構成では、トランザクションをマークするようにReplicatを構成する必要があり、また、Replicatトランザクションを除外するようにExtractを構成して、ソースに伝播されないようにする必要があります。

これを実行するには、次の2つの方法があります。

方法1

OracleからOracleの実装にのみ有効です。

Extractがクラシックまたは統合モード(Replicatは統合また非統合モードのいずれかが可能)の場合は、次のパラメータを使用します。

  • Replicatのパラメータ・ファイルで、DBOPTIONSSETTAGオプションとともに使用します。インバウンド・サーバーは、指定した値のタグ(これらのトランザクションをREDOストリーム内で識別)をそのReplicatのトランザクションに付けます。SETTAGのデフォルト値は00です。

  • クラシックまたは統合Extractパラメータ・ファイルでEXCLUDETAGオプションを指定してTRANLOGOPTIONSパラメータを使用します。Extractに関連付けられたログマイニング・サーバーは、SETTAG値のタグが付いたREDOを除外します。複数のEXCLUDETAG文を使用して、必要に応じて異なるタグ値を除外できます。

    OracleからOracleの場合は、これが推奨される方法です。

方法2

あらゆる実装(Oracleまたは異種データベース構成)に有効です。

あるいは、Extractがクラシック・キャプチャ・モードまたは統合キャプチャ・モードの場合は、EXCLUDEUSERまたはEXCLUDEUSERIDオプションを指定してTRANLOGOPTIONSパラメータを使用し、ユーザー名またはIDに基づいて、ReplicatのDDLおよびDMLトランザクションを無視することもできます。複数のEXCLUDEUSER文を使用できます。指定されたユーザーは、GETREPLICATESまたはIGNOREREPLICATESパラメータのルールの対象になります。

詳細は、『Oracle GoldenGateリファレンス』を参照してください。

Oracle GoldenGateの拡張構成オプション

ビジネス・ニーズに合せて、拡張オプションでOracle GoldenGateを構成する必要が生じる場合があります。

次を参照してください。

  • 特定のレプリケーション・トポロジを実現するためのその他の構成のガイドラインについては、『Oracle GoldenGateの管理』を参照してください。このガイドには、次の構成に関する手順が含まれています。

    • ライブ・レポートでのOracle GoldenGateの使用

    • リアルタイム・データ分散でのOracle GoldenGateの使用

    • リアルタイム・データ・ウェアハウスのためのOracle GoldenGateの構成

    • ライブ・スタンバイ・データベース管理のためのOracle GoldenGateの使用

    • アクティブ/ アクティブ型高可用性のためのOracle GoldenGateの使用

    ガイドには、次の点に関する情報も含まれています。

    • Oracle GoldenGateのアーキテクチャ

    • Oracle GoldenGateのコマンド

    • Oracle GoldenGateの初期ロード方式

    • セキュリティの構成

    • カスタマイズ機能の使用

    • データ・フィルタリングと操作の構成

  • ソースまたはターゲットのいずれかのデータベースがOracle以外の場合、そのデータベース用のOracle GoldenGateインストレーションおよびセットアップ・ガイドのインストールと構成の手順に従い、その他の情報については、Oracle GoldenGateの管理とリファレンスのドキュメントを参照してください。