この章では、リバース・ユーティリティによるデータ変更の取消し方法について説明します。
この章の内容は次のとおりです。
リバース・ユーティリティは、変更前イメージを使用して、指定された表、レコードおよび期間のデータベース変更を元に戻します。これにより、データベース全体のリストアが必要な他の方法とは異なり、選択的な取消しを実行できます。
リバース・ユーティリティは、次の用途で使用できます。
テスト・データベースをテスト実行前の元の状態にリストアします。リバース・ユーティリティは変更の取消しのみを行うため、テスト・データベースを数分程度でリストアできます。これは、数時間かかることもあるデータベースの完全なリストアと比較して、ずっと効率的です。
データの破損または偶発的な削除によって発生したエラーを取り消します。たとえば、WHERE句を指定せずにUPDATEコマンドまたはDELETEコマンドを発行した場合、リバース・ユーティリティでその操作を取り消すことができます。
リバース・ユーティリティを使用するには、次の手順を実行します。
Extractを実行して変更前データを抽出します。
リバース・ユーティリティを実行して、トランザクションを反転します。
Replicatを実行して、リストアされたデータをターゲット・データベースに適用します。
リバース・ユーティリティでは、次の操作を実行して先行操作を反転します。
逆の順序で処理できるように、1つの抽出ファイル、一連の抽出ファイルまたは1つの証跡におけるデータベース操作の順序を反転し、同じキーを持つレコードが適切に適用されることを保証します。
削除操作を挿入操作に変更します。
挿入を削除に変更します。
変更前イメージの更新を変更後イメージの更新に変更します。
開始トランザクション・インジケータと終了トランザクション・インジケータを反転します。
リバース・ユーティリティでは、次の制限に従います。
コミット・タイムスタンプは反転手順で変更されないため、証跡の時間順序は過去に戻ります。そのため、タイムスタンプに基づいてReplicatの位置を指定することはできません。
Oracle GoldenGateでは、次のデータ型の変更前イメージが保存されないため、これらの型はリバース・ユーティリティではサポートされません。更新操作および削除操作を反転するには、変更前イメージが必要です。
リバース処理は、GGSCIを通じて作成および開始したオンラインのExtractプロセスとReplicatプロセスを使用して実行します。これらのプロセスは、標準のローカル証跡またはリモート証跡に書き込みます。Oracle GoldenGateでは、トランザクションの順序を維持するため、リバース処理中にファイル順序が自動的に反転されます。
リバース・ユーティリティを構成するには、表21-2および表21-3に記載されているパラメータを使用してExtractおよびReplicatのパラメータ・ファイルを作成します。これらのパラメータに加え、他の任意のパラメータや、現在の同期構成に必要とされる特別なMAP文も指定します。
表21-2 リバース・ユーティリティ用のExtractパラメータ・ファイル
| パラメータ | 説明 |
|---|---|
EXTRACT |
|
END { |
|
[SOURCEDB
|
データベース接続情報を指定します。詳細は、11項「Oracle GoldenGateのセキュリティの構成」を参照してください。 |
NOCOMPRESSDELETES |
このパラメータによって、Extractは、主キーに限定せずにすべての列データを出力に送信します。削除操作を挿入操作に逆変換できます。 |
GETUPDATEBEFORES |
Oracle GoldenGateで更新をロールバックできるように変更前イメージを抽出します。 |
RMTHOST hostname
|
ターゲット・システムの名前またはIPアドレス。 |
{EXTTRAIL |
次のように証跡の相対名またはフルパス名を指定します(2文字の証跡名を含めます)。
|
TABLE [ |
複数の |
この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 |
|
END { |
|
[TARGETDB
|
データベース接続情報を指定します。セキュリティ・オプションの詳細は、第11章「Oracle GoldenGateのセキュリティの構成」を参照してください。 |
{SOURCEDEFS
|
データ定義の解釈方法を指定します。 |
MAP [ |
(複数の |
次に示すのは、Replicatパラメータ・ファイルの例です。
プロセス・グループを作成して取消し手順を実行するには、次の要素を作成します。
オンラインExtractグループ。
Extractグループにリンクしたローカル証跡またはリモート証跡。Extractは、データベースからデータを取得し、そのデータをこの証跡に書き込みます。これは、リバース・ユーティリティに対する入力証跡となります。
オンラインReplicatグループ。
Replicatグループにリンクしたもう1つのローカル証跡またはリモート証跡。これは、リバース・ユーティリティによって書き込まれる出力証跡となります。Replicatは、この証跡を読み取って反転データを適用します。
リバース処理用のExtractグループを作成する手順
ADD EXTRACTgroup, 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 REPLICATgroup, EXTTRAILpathname[, BEGIN {NOW |YYYY-MM-DD HH:MM[:SS[.CCCCCC]]} | , EXTSEQNOseqno, EXTRBArba] [, 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です)。
GGSCIからExtractを実行します。
START EXTRACT group
Extractが指定されたレコードの取得を終了したことを示すEOFというメッセージが戻されるまで次のコマンドを発行します。
SEND EXTRACT group, STATUS
完全修飾パス名を使用するか、Oracle GoldenGateディレクトリに移動してそこからreverseを実行することで、リバース・ユーティリティを実行します。
|
注意: UNIXシステムでは、UNIXのreverseコマンドとの混同を避けるため、フルパス名またはOracle GoldenGateディレクトリを基準とする相対パスを使用することが特に重要です。 |
/GoldenGate_directory/reverseinput_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
reverseの実行が終了したら、反転出力されたデータをデータベースに適用するためにReplicatを実行します。
START REPLICAT group
リバース処理によって予期しない結果や意図しない結果が発生した場合、データベースに元の変更を再適用できます。これを行うには、Replicatのパラメータ・ファイルを編集し、出力ファイルのかわりに入力ファイルを指定して、Replicatを再度実行します。