ヘッダーをスキップ
Oracle® GoldenGate Oracle GoldenGateの管理for Windows and UNIX
12c (12.1.2)
E49846-06
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

21 リバース・ユーティリティによるデータ変更の取消し

この章では、リバース・ユーティリティによるデータ変更の取消し方法について説明します。

この章の内容は次のとおりです。

21.1 リバース・ユーティリティの概要

リバース・ユーティリティは、変更前イメージを使用して、指定された表、レコードおよび期間のデータベース変更を元に戻します。これにより、データベース全体のリストアが必要な他の方法とは異なり、選択的な取消しを実行できます。

リバース・ユーティリティは、次の用途で使用できます。

  • テスト・データベースをテスト実行前の元の状態にリストアします。リバース・ユーティリティは変更の取消しのみを行うため、テスト・データベースを数分程度でリストアできます。これは、数時間かかることもあるデータベースの完全なリストアと比較して、ずっと効率的です。

  • データの破損または偶発的な削除によって発生したエラーを取り消します。たとえば、WHERE句を指定せずにUPDATEコマンドまたはDELETEコマンドを発行した場合、リバース・ユーティリティでその操作を取り消すことができます。

リバース・ユーティリティを使用するには、次の手順を実行します。

  • Extractを実行して変更前データを抽出します。

  • リバース・ユーティリティを実行して、トランザクションを反転します。

  • Replicatを実行して、リストアされたデータをターゲット・データベースに適用します。

リバース・ユーティリティでは、次の操作を実行して先行操作を反転します。

  • 逆の順序で処理できるように、1つの抽出ファイル、一連の抽出ファイルまたは1つの証跡におけるデータベース操作の順序を反転し、同じキーを持つレコードが適切に適用されることを保証します。

  • 削除操作を挿入操作に変更します。

  • 挿入を削除に変更します。

  • 変更前イメージの更新を変更後イメージの更新に変更します。

  • 開始トランザクション・インジケータと終了トランザクション・インジケータを反転します。

図21-1 リバース・ユーティリティのアーキテクチャ

図21-1の説明が続きます
「図21-1 リバース・ユーティリティのアーキテクチャ」の説明

21.2 リバース・ユーティリティの制限

リバース・ユーティリティでは、次の制限に従います。

  • コミット・タイムスタンプは反転手順で変更されないため、証跡の時間順序は過去に戻ります。そのため、タイムスタンプに基づいてReplicatの位置を指定することはできません。

  • Oracle GoldenGateでは、次のデータ型の変更前イメージが保存されないため、これらの型はリバース・ユーティリティではサポートされません。更新操作および削除操作を反転するには、変更前イメージが必要です。

表21-1 リバース・ユーティリティでサポートされないデータ型

DB2 (サポート対象の全OS) Oracle SQL Server Sybase Teradata
BLOB
CLOB
DBCLOB
CLOB 
BLOB
NCLOB
LONG 
LONG RAW
XMLType
UDT
Nested Tables
VARRAY
TEXT
IMAGE
NTEXT
VARCHAR (MAX)
VARBINARY
BINARY
TEXT
IMAGE

サポート対象なし。この理由は、Teradataベンダー・アクセス・モジュールによって取得されるのが行の変更後イメージのみであるためです。


21.3 リバース・ユーティリティの構成

リバース処理は、GGSCIを通じて作成および開始したオンラインのExtractプロセスとReplicatプロセスを使用して実行します。これらのプロセスは、標準のローカル証跡またはリモート証跡に書き込みます。Oracle GoldenGateでは、トランザクションの順序を維持するため、リバース処理中にファイル順序が自動的に反転されます。

リバース・ユーティリティを構成するには、表21-2および表21-3に記載されているパラメータを使用してExtractおよびReplicatのパラメータ・ファイルを作成します。これらのパラメータに加え、他の任意のパラメータや、現在の同期構成に必要とされる特別なMAP文も指定します。

表21-2 リバース・ユーティリティ用のExtractパラメータ・ファイル

パラメータ 説明
EXTRACT group

EXTRACT groupでは、Extractプロセスを指定します。GGSCIでこのプロセスを作成します。

END {time | RUNTIME}

timeによって、Extractは、このパラメータで指定された時刻より後のタイムスタンプを持つデータソースのレコードに到達したときに終了します。有効な形式は、24時間表記の時間で次のとおりです。

yyyy-mm-dd[ hh:mi[:ss[.cccccc]]

RUNTIMEによって、Extractは、現在の日時より後のタイムスタンプを持つデータソースのレコードに到達したときに終了します。この時点までのタイムスタンプを持つ未処理レコードは、すべて処理されます。RUNTIMEを使用するメリットの1つは、実行のたびにパラメータ・ファイルで日時を変更する必要がない点です。かわりに、バッチ・プログラミング内でプロセスの開始時刻を制御できます。

[SOURCEDB datasource,]
[USERIDALIAS alias | USERID user [, options]]
  • SOURCEDBでは、データソース名を指定します(接続情報で必要な場合)。

  • USERIDおよびUSERIDALIASでは、認証情報を指定します。

データベース接続情報を指定します。詳細は、11項「Oracle GoldenGateのセキュリティの構成」を参照してください。

NOCOMPRESSDELETES

このパラメータによって、Extractは、主キーに限定せずにすべての列データを出力に送信します。削除操作を挿入操作に逆変換できます。

GETUPDATEBEFORES

Oracle GoldenGateで更新をロールバックできるように変更前イメージを抽出します。

RMTHOST hostname

ターゲット・システムの名前またはIPアドレス。

{EXTTRAIL input trail |
RMTTRAIL input trail}
  • EXTTRAILを使用してローカル・システムの抽出証跡を指定します。

  • RMTTRAILを使用してリモート・システムのリモート証跡を指定します。

次のように証跡の相対名またはフルパス名を指定します(2文字の証跡名を含めます)。

EXTTRAIL /home/ggs/dirdat/rt
TABLE [container.]owner.table;

複数のTABLE文またはワイルドカードで指定した、処理する1つ以上の表。特別な選択基準およびマッピング基準を含めます。


このExtractパラメータ・ファイルの例では、リモート証跡を使用します。

例21-1 リモート証跡を使用したパラメータ・ファイルの抽出

EXTRACT ext_1
END 2011-01-09 14:12:20
USERIDALIAS ogg
GETUPDATEBEFORES
NOCOMPRESSDELETES
RMTHOST sysb, MGRPORT 8040
RMTTRAIL /home/ggs/dirdat/in
TABLE tcustmer;
TABLE tcustord;

表21-3 リバース・ユーティリティ用のReplicatパラメータ・ファイル

パラメータ 説明
REPLICAT group

REPLICAT groupでは、GGSCIで作成するReplicatプロセスを指定します。

END {time | RUNTIME}

timeによって、Extractは、このパラメータで指定された時刻より後のタイムスタンプを持つデータソースのレコードに到達したときに終了します。有効な形式は、24時間表記の時間で次のとおりです。

yyyy-mm-dd[ hh:mi[:ss[.cccccc]]

RUNTIMEによって、Replicatは、現在の日時より後のタイムスタンプを持つデータソースのレコードに到達したときに終了します。この時点までのタイムスタンプを持つ未処理レコードは、すべて処理されます。RUNTIMEを使用するメリットの1つは、実行のたびにパラメータ・ファイルで日時を変更する必要がない点です。かわりに、バッチ・プログラミング内でプロセスの開始時刻を制御できます。

[TARGETDB datasource,]
[USERIDALIAS alias | USERID user [, options]]
  • TARGETDBでは、データソース名を指定します(接続情報で必要な場合)。

  • USERIDおよびUSERIDALIASでは、認証情報を指定します。

データベース接続情報を指定します。セキュリティ・オプションの詳細は、第11章「Oracle GoldenGateのセキュリティの構成」を参照してください。

{SOURCEDEFS full_pathname} |
ASSUMETARGETDEFS
  • SOURCEDEFSは、ソース表とターゲット表に異なる定義が含まれる場合に使用します。DEFGENによって生成されたソース定義ファイルを指定します。DEFGENの詳細は、第13章「レプリケートされたデータとメタデータとの関連付け」を参照してください。

  • ASSUMETARGETDEFSは、ソース表とターゲット表に同じ定義が含まれる場合に使用します。

データ定義の解釈方法を指定します。

MAP [container.]owner.table],
TARGET owner.table;

(複数のMAP文またはワイルドカードで指定した)反転データを適用する1つ以上の表。ソース・データベースからのデータを反転する場合、ソースとターゲットのTABLEエントリは同じです。ターゲット・データベースからのレプリケート・データを反転する場合、各MAP文のソースとターゲットは異なります。


次に示すのは、Replicatパラメータ・ファイルの例です。

例21-2 Replicatパラメータ・ファイル

REPLICAT rep_1
END RUNTIME
USERIDALIAS ogg
ASSUMETARGETDEFS
MAP tcustmer, TARGET tcustmer;

21.4 リバース処理のためのプロセス・グループおよび証跡の作成

プロセス・グループを作成して取消し手順を実行するには、次の要素を作成します。

  • オンラインExtractグループ。

  • Extractグループにリンクしたローカル証跡またはリモート証跡。Extractは、データベースからデータを取得し、そのデータをこの証跡に書き込みます。これは、リバース・ユーティリティに対する入力証跡となります。

  • オンラインReplicatグループ。

  • Replicatグループにリンクしたもう1つのローカル証跡またはリモート証跡。これは、リバース・ユーティリティによって書き込まれる出力証跡となります。Replicatは、この証跡を読み取って反転データを適用します。

リバース処理用のExtractグループを作成する手順

ADD EXTRACT group, TRANLOG, BEGIN {NOW | YYYY-MM-DD HH:MM[:SS[.CCCCCC ]]}

説明:

  • groupは、Extractグループの名前です。グループ名には、最大8文字を指定できます。大/小文字は区別されません。

  • TRANLOGでは、データソースとしてトランザクション・ログを指定します。

  • BEGINでは、処理を開始する時点となる開始タイムスタンプを指定します。次のいずれかを使用します。

    • NOWでは、グループを作成するためにADD EXTRACTコマンドが実行された時点のタイムスタンプが指定された変更から抽出を開始します。

    • YYYY-MM-DD HH:MM[:SS[.CCCCCC ]]は、開始ポイントとして正確なタイムスタンプを指定するための書式です。

Extractグループにリンクした入力証跡を作成する手順

ADD {EXTTRAIL | RMTTRAIL} pathname, EXTRACT group[, MEGABYTES n]

説明:

  • EXTTRAILでは、ローカル・システムの証跡を指定します。RMTTRAILでは、リモート・システムの証跡を指定します。

  • pathnameは、2文字の名前(任意の2つの英数字)を含む入力証跡の相対名または完全修飾名です(c:\ggs\dirdat\rtなど)。これは、Extractのパラメータ・ファイルで指定したものと同じ名前である必要があります。

  • EXTRACT groupでは、Extractグループの名前を指定します。

  • MEGABYTES nは、各証跡ファイルのサイズをMB単位で設定できるオプション引数です(デフォルトは100です)。

リバース処理用のReplicatグループを作成する手順

ADD REPLICAT group, EXTTRAIL pathname
[, BEGIN {NOW | YYYY-MM-DD HH:MM[:SS[.CCCCCC ]]} | , EXTSEQNO seqno, EXTRBA rba]
[, CHECKPOINTTABLE ]
[, NODBCHECKPOINT]

説明:

  • groupは、Replicatグループの名前です。グループ名には、最大8文字を指定できます。大/小文字は区別されません。

  • EXTTRAIL pathnameは、ADD RMTTRAILコマンドを使用してこのReplicatに作成する出力証跡の相対名または完全修飾名です。

  • BEGIN {NOW | YYYY-MM-DD HH:MM[:SS[.CCCCCC ]]}では、処理のための初期チェックポイントおよび開始ポイントを確定してオンラインReplicatグループを定義します。次のいずれかを使用します。

    • NOWを使用して、グループを作成するためにADD REPLICATコマンドが実行された時点のタイムスタンプが指定されたレコードからレプリケートを開始します。

    • YYYY-MM-DD HH:MM[:SS[.CCCCCC ]]は、開始ポイントとして正確なタイムスタンプを指定するための書式として使用します。

  • EXTSEQNO seqnoでは、処理を開始する証跡内のファイルの順序番号を指定します。EXTRBA rbaでは、そのファイル内の開始ポイントとして相対バイト・アドレスを指定します。このオプションを使用しない場合、処理はデフォルトで証跡の最初から開始されます。順序番号には数値を指定しますが、埋込み用の0(ゼロ)は使用しません。たとえば、証跡ファイルがc:\ggs\dirdat\aa000026である場合、EXTSEQNO 26と指定します。このオプションを使用する前に、Oracleサポートに連絡してください。詳細は、http://support.oracle.comにアクセスしてください。

  • CHECKPOINTTABLEでは、GLOBALSファイルで指定されたデフォルト以外のチェックポイント表の所有者および名前を指定します。このオプションを使用するには、ADD CHECKPOINTTABLEコマンドを使用してデータベースにチェックポイント表を追加する必要があります。

  • NODBCHECKPOINTでは、このReplicatグループでチェックポイント表を使用しないことを指定します。

Replicatグループにリンクした出力証跡を作成する手順

ADD {EXTTRAIL | RMTTRAIL} pathname, REPLICAT group
[, MEGABYTES n]

説明:

  • EXTTRAILでは、ローカル・システムの証跡を指定します。RMTTRAILでは、リモート・システムの証跡を指定します。

  • pathnameは、2文字の名前(任意の2つの英数字)を含む出力証跡の相対名または完全修飾名です(c:\ggs\dirdat\rtなど)。これは、ADD REPLICATコマンドのEXTTRAILで指定した証跡である必要があります。

  • REPLICAT groupでは、Replicatグループの名前を指定します。

  • MEGABYTES nは、各証跡ファイルのサイズをMB単位で設定できるオプション引数です(デフォルトは100です)。

21.5 リバース・ユーティリティの実行

  1. GGSCIからExtractを実行します。

    START EXTRACT group
    
  2. Extractが指定されたレコードの取得を終了したことを示すEOFというメッセージが戻されるまで次のコマンドを発行します。

    SEND EXTRACT group, STATUS
    
  3. 完全修飾パス名を使用するか、Oracle GoldenGateディレクトリに移動してそこからreverseを実行することで、リバース・ユーティリティを実行します。


    注意:

    UNIXシステムでは、UNIXのreverseコマンドとの混同を避けるため、フルパス名またはOracle GoldenGateディレクトリを基準とする相対パスを使用することが特に重要です。

    /GoldenGate_directory/reverse input_file, output_file
    

    説明:

    • input_file は、Extractのパラメータ・ファイルのEXTTRAILまたはRMTTRAILで指定されている入力ファイルです。

    • output_fileは、ADD REPLICATコマンドのEXTTRAILで指定されている出力ファイルです。

      \home\ggs\reverse input.c:\ggs\dirdat\et, output.c:\ggs\dirdat\rt
      
  4. reverseの実行が終了したら、反転出力されたデータをデータベースに適用するためにReplicatを実行します。

    START REPLICAT group
    

21.6 リバース・ユーティリティにより実行された変更の取消し

リバース処理によって予期しない結果や意図しない結果が発生した場合、データベースに元の変更を再適用できます。これを行うには、Replicatのパラメータ・ファイルを編集し、出力ファイルのかわりに入力ファイルを指定して、Replicatを再度実行します。