Oracle® Fusion Middleware

Oracle GoldenGateの管理for Windows and UNIX

12c (12.2.0.1)

E70111-04(原本部品番号:E66357-04)

2016年7月

システム管理者およびデータベース管理者を対象としたドキュメントで、Oracle GoldenGateを制御するインタフェース・コンポーネントの操作方法、Oracle GoldenGateパフォーマンスの監視とトラブルシューティング、およびその他の管理操作の実行の方法について記載されています。

Oracle Fusion Middleware Oracle GoldenGateの管理for Windows and UNIX, 12c (12.2.0.1)

E70111-04

Copyright © 2013, 2016, Oracle and/or its affiliates.  All rights reserved.

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは、互換性のために法律によって規定されている場合を除き、禁止されています。

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs.No other rights are granted to the U.S. Government.

このソフトウェアもしくはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアもしくはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

OracleおよびJavaはOracle Corporationおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXはThe Open Groupの登録商標です。

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。適用されるお客様とOracle Corporationとの間の契約に別段の定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。適用されるお客様とOracle Corporationとの間の契約に定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

目次

タイトルおよび著作権情報

はじめに

- 対象読者

- ドキュメントのアクセシビリティについて

- 関連情報

- 表記規則

1 Oracle GoldenGateの概要

- 1.1 Oracle GoldenGateでサポートされる処理方法およびデータベース

- 1.2 Oracle GoldenGateアーキテクチャの概要

- 1.2.1 Extractの概要

- 1.2.2 データ・ポンプの概要

- 1.2.3 Replicatの概要

- 1.2.4 証跡の概要

- 1.2.4.1 証跡に書き込むプロセスと証跡を読み取るプロセス

- 1.2.4.2 証跡の作成およびメンテナンス

- 1.2.4.3 既存の証跡を9桁の順序番号に変換する方法

- 1.2.5 Extractファイルの概要

- 1.2.6 チェックポイントの概要

- 1.2.7 Managerの概要

- 1.2.8 Collectorの概要

- 1.3 プロセス・タイプの概要

- 1.4 グループの概要

- 1.5 コミット順序番号(CSN)の概要

2 Oracle GoldenGateのグローバリゼーション・サポート

- 2.1 キャラクタ・セットの維持

- 2.1.1 データベース構造メタデータのキャラクタ・セット

- 2.1.2 文字型データのキャラクタ・セット

- 2.1.3 データベース接続のキャラクタ・セット

- 2.1.4 テキスト入力およびテキスト出力のキャラクタ・セット

- 2.2 Unicodeおよびネイティブ文字の使用

3 Managerおよびネットワーク通信の構成

- 3.1 Managerプロセスの概要

- 3.2 Managerへのローカル通信用ポートの割当て

- 3.3 ファイアウォール経由でのリモート接続に使用するポートの管理

- 3.4 インターネット・プロトコルの選択

- 3.5 推奨されるManagerパラメータの使用

- 3.6 Managerパラメータ・ファイルの作成

- 3.7 Managerの起動

- 3.7.1 Managerをオペレーティング・システムのコマンド・シェルから起動する手順

- 3.7.2 ManagerをGGSCIから起動する手順

- 3.8 Managerの停止

- 3.8.1 UNIXおよびLinuxでのManagerの停止

- 3.8.2 WindowsでのManagerの停止

4 Oracle GoldenGateプロセス・インタフェースのスタート・ガイド

- 4.1 GGSCIコマンドライン・インタフェースの使用

- 4.1.1 コマンド引数でのワイルドカードの使用

- 4.1.2 コマンド・インタフェースのグローバリゼーション・サポート

- 4.1.3 コマンド履歴の使用

- 4.1.4 よく使用するコマンド・シーケンスの保存と呼出し

- 4.2 Oracle GoldenGateプロセスの制御

- 4.2.1 Managerの制御

- 4.2.2 ExtractおよびReplicatの制御

- 4.2.3 ExtractおよびReplicatの削除

- 4.3 コマンドの自動化

- 4.3.1 IBM i CLIを介したコマンドの発行

- 4.4 Oracle GoldenGateパラメータ・ファイルの使用

- 4.4.1 パラメータ・ファイルのグローバリゼーション・サポート

- 4.4.2 GLOBALSファイルの操作

- 4.4.3 ランタイム・パラメータの操作

- 4.4.4 パラメータ・ファイルの作成

- 4.4.4.1 GGSCIでパラメータ・ファイルを作成する方法

- 4.4.4.2 テキスト・エディタでパラメータ・ファイルを作成する方法

- 4.4.5 パラメータ・ファイルの検証

- 4.4.6 パラメータ・ファイルの表示

- 4.4.7 パラメータ・ファイルの変更

- 4.4.8 パラメータ・ファイルの作成の簡略化

- 4.4.8.1 ワイルドカードの使用

- 4.4.8.2 OBEYの使用

- 4.4.8.3 マクロの使用

- 4.4.8.4 パラメータ置換の使用

- 4.4.9 Oracle GoldenGateのパラメータに関する情報の取得

- 4.5 Oracle GoldenGateの入力におけるオブジェクト名の指定

- 4.5.1 Windowsシステムでのパラメータ・ファイルでのファイルシステム・パス名の指定

- 4.5.2 サポートされるデータベース・オブジェクト名

- 4.5.2.1 サポートされる特殊文字

- 4.5.2.2 サポートされない特殊文字

- 4.5.3 スラッシュを含む名前の指定

- 4.5.4 データベース・オブジェクト名の修飾

- 4.5.4.1 2つの部分からなる名前

- 4.5.4.2 3つの部分からなる名前

- 4.5.4.3 複数のコンテナまたはカタログからのデータの適用

- 4.5.4.4 デフォルトのコンテナまたはカタログの指定

- 4.5.5 大/小文字が区別されるデータベース・オブジェクト名の指定

- 4.5.6 データベース・オブジェクト名でのワイルドカードの使用

- 4.5.6.1 ソース・オブジェクトにワイルドカードを使用する場合のルール

- 4.5.6.2 ターゲット・オブジェクトにワイルドカードを使用する場合のルール

- 4.5.6.3 名前のフォールバック・マッピング

- 4.5.6.4 11.2.1より前のバージョンの証跡からのワイルドカード・マッピング

- 4.5.6.5 オブジェクト名におけるリテラルとしてのアスタリスクまたは疑問符

- 4.5.6.6 ワイルドカードの解決方法

- 4.5.6.7 ワイルドカード指定からのオブジェクトの除外

- 4.5.7 大/小文字が区別される列名とリテラルの区別

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

- 5.1 レポート構成の概要

- 5.1.1 フィルタリングおよび変換

- 5.1.2 読取り専用と高可用性の比較

- 5.1.3 追加情報

- 5.2 標準レポート構成の作成

- 5.2.1 ソース・システム

- 5.2.2 ターゲット・システム

- 5.3 ソース・システムでデータ・ポンプを使用するレポート構成の作成

- 5.3.1 ソース・システム

- 5.3.2 ターゲット・システム

- 5.4 中間システムでデータ・ポンプを使用するレポート構成の作成

- 5.4.1 ソース・システム

- 5.4.2 中間システム

- 5.4.3 ターゲット・システム

- 5.5 カスケード・レポート構成の作成

- 5.5.1 ソース・システム

- 5.5.2 カスケード内の2番目のシステム

- 5.5.3 カスケード内の3番目のシステム

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

- 6.1 データ分散構成の概要

- 6.2 データ分散構成の考慮事項

- 6.2.1 フォルト・トレランス

- 6.2.2 フィルタリングおよび変換

- 6.2.3 読取り専用と高可用性の比較

- 6.2.4 追加情報

- 6.3 データ分散構成の作成

- 6.3.1 ソース・システム

- 6.3.2 ターゲット・システム

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

- 7.1 データ・ウェアハウス構成の概要

- 7.2 データ・ウェアハウス構成の考慮事項

- 7.2.1 データ・レコードの分離

- 7.2.2 データ記憶域

- 7.2.3 フィルタリングおよび変換

- 7.2.4 追加情報

- 7.3 データ・ウェアハウス構成の作成

- 7.3.1 ソース・システム

- 7.3.2 ターゲット・システム

8 ライブ・スタンバイ・データベース管理のためのOracle GoldenGateの構成

- 8.1 ライブ・スタンバイ構成の概要

- 8.2 ライブ・スタンバイ構成の考慮事項

- 8.2.1 信頼できるソース

- 8.2.2 複製スタンバイ

- 8.2.3 スタンバイ・システムでのDML

- 8.2.4 Oracle GoldenGateプロセス

- 8.2.5 バックアップ・ファイル

- 8.2.6 フェイルオーバーの準備

- 8.2.7 データベースによって生成される順序値

- 8.2.8 追加情報

- 8.3 ライブ・スタンバイ構成の作成

- 8.3.1 両システムの前提条件

- 8.3.2 アクティブ・ソースからスタンバイに対する構成

- 8.4 スタンバイからアクティブ・ソースに対する構成

- 8.5 計画済スイッチオーバーでのユーザー・アクティビティの移動

- 8.5.1 ライブ・スタンバイへのユーザー・アクティビティの移動

- 8.5.2 プライマリ・システムへのユーザー・アクティビティの再移動

- 8.6 計画外フェイルオーバーでのユーザー・アクティビティの移動

- 8.6.1 ライブ・スタンバイへのユーザー・アクティビティの移動

- 8.6.2 プライマリ・システムへのユーザー・アクティビティの再移動

9 アクティブ/アクティブ型高可用性のためのOracle GoldenGateの構成

- 9.1 アクティブ/アクティブ構成の概要

- 9.2 アクティブ/アクティブ構成の考慮事項

- 9.2.1 TRUNCATES

- 9.2.2 アプリケーション設計

- 9.2.3 キー

- 9.2.4 トリガーおよびカスケード削除

- 9.2.5 データベース生成による値

- 9.2.6 データベース構成

- 9.3 データ・ループの防止

- 9.3.1 Replicat操作の取得の防止

- 9.3.1.1 Replicatトランザクションの取得の防止(Oracle)

- 9.3.1.2 Replicatトランザクションの取得の防止(Teradata)

- 9.3.1.3 Replicatトランザクションの取得の防止(他のデータベース)

- 9.3.2 Replicatトランザクションの識別

- 9.3.2.1 DB2 (z/OSおよびLUW上)、IBM iおよびInformix

- 9.3.2.2 MySQLおよびNonStop SQL/MX

- 9.3.2.3 Oracle

- 9.3.2.4 SQL Server

- 9.3.2.5 Sybase

- 9.3.2.6 Teradata

- 9.3.3 双方向構成でのDDLレプリケーション

- 9.4 競合の管理

- 9.5 追加情報

- 9.6 アクティブ/アクティブ構成の作成

- 9.6.1 両システムの前提条件

- 9.6.2 プライマリ・システムからセカンダリ・システムに対する構成

- 9.6.3 セカンダリ・システムからプライマリ・システムに対する構成

10 競合の検出および解決の構成

- 10.1 Oracle GoldenGate CDR機能の概要

- 10.2 Oracle GoldenGate CDRの構成

- 10.2.1 必要な列値をExtractで使用可能にする方法

- 10.2.2 競合解決のためのOracle GoldenGateパラメータ・ファイルの構成

- 10.2.3 エラー処理のためのOracle GoldenGateパラメータ・ファイルの構成

- 10.2.3.1 追加データを例外表にマップするためのツール

- 10.2.3.2 ソース列とターゲット列のみを含むサンプル例外マッピング

- 10.2.3.3 例外表の追加の列を含むサンプル例外マッピング

- 10.2.4 CDR統計の表示

- 10.2.4.1 レポート・ファイル

- 10.2.4.2 GGSCI

- 10.2.4.3 列変換関数

- 10.3 CDRの例1: USEMAX、OVERWRITE、DISCARDによるすべての競合タイプの処理

- 10.3.1 この例で使用する表

- 10.3.2 競合解決を指定したMAP文

- 10.3.3 MAP文の説明

- 10.3.4 エラー処理

- 10.3.5 USEMAX解決によるINSERTROWEXISTSの処理

- 10.3.6 USEMAX解決によるUPDATEROWEXISTSの処理

- 10.3.7 OVERWRITE解決によるUPDATEROWMISSINGの処理

- 10.3.8 DISCARD解決によるDELETEROWMISSINGの処理

- 10.3.9 OVERWRITE解決によるDELETEROWEXISTSの処理

- 10.4 CDRの例2: USEDELTAおよびUSEMAXによるUPDATEROWEXISTSの処理

- 10.4.1 この例で使用する表

- 10.4.2 MAP文

- 10.4.3 MAP文の説明

- 10.4.4 エラー処理

- 10.5 CDRの例3: USEDELTA、USEMAXおよびIGNOREによるUPDATEROWEXISTSの処理

- 10.5.1 この例で使用する表

- 10.5.2 MAP文

- 10.5.3 MAP文の説明

- 10.5.4 エラー処理

11 Oracle GoldenGateのセキュリティの構成

- 11.1 Oracle GoldenGateのセキュリティ・オプションの概要

- 11.2 マスター・キーとウォレット方式を使用したデータ暗号化

- 11.2.1 ウォレットの作成とマスター・キーの追加

- 11.2.2 パラメータ・ファイルでの暗号化パラメータの指定

- 11.2.3 マスター・キーの更新

- 11.2.4 失効したマスター・キーの削除

- 11.3 ENCKEYS方式を使用したデータ暗号化

- 11.3.1 ENCKEYS方式を使用したデータ暗号化

- 11.3.2 ENCKEYS方式を使用したデータ復号化

- 11.3.3 ENCKEYS方式を使用したデータ暗号化の例

- 11.4 資格証明ストアでのアイデンティティ管理

- 11.4.1 資格証明ストアの作成とデータ移入

- 11.4.2 パラメータ・ファイルまたはコマンドへの別名の指定

- 11.5 コマンドまたはパラメータ・ファイルで使用するパスワードの暗号化

- 11.5.1 パスワードの暗号化

- 11.5.2 パラメータ・ファイルまたはコマンドへの暗号化パスワードの指定

- 11.6 ENCKEYSファイルへの暗号化鍵の移入

- 11.6.1 独自の鍵の定義

- 11.6.2 KEYGENを使用した鍵の生成

- 11.6.3 ENCKEYS参照ファイルの作成とデータ移入

- 11.7 GGSCIコマンド・セキュリティの構成

- 11.7.1 コマンド・セキュリティの設定

- 11.7.2 CMDSECファイルの保護

- 11.8 ターゲット・システムからの接続開始の使用

- 11.8.1 パッシブExtractグループの構成

- 11.8.2 別名Extractグループの構成

- 11.8.3 パッシブ・プロセスと別名プロセスの起動および停止

- 11.8.4 抽出アクティビティの管理

- 11.8.5 パッシブ/別名Extract使用時のその他の考慮事項

- 11.9 Managerの保護

12 データのマッピングおよび操作

- 12.1 サポートの制限

- 12.2 マッピングおよびデータ統合を制御するパラメータ

- 12.3 異なるデータベース間のマッピング

- 12.4 データのマッピングおよび変換の実行場所の決定

- 12.4.1 WindowsシステムとUNIXシステムでのマッピングおよび変換

- 12.4.2 NonStopシステムでのマッピングおよび変換

- 12.5 データ・マッピング時のグローバリゼーションに関する考慮事項

- 12.5.1 キャラクタ・セット間の変換

- 12.5.1.1 データベース・オブジェクト名

- 12.5.1.2 列データ

- 12.5.2 ロケールの維持

- 12.5.3 エスケープ・シーケンスのサポート

- 12.6 列のマッピング

- 12.6.1 列名での大/小文字の区別および特殊文字のサポート

- 12.6.2 COLMAPによる表レベルの列マッピングの構成

- 12.6.2.1 COLMAP句でマップされる列の指定

- 12.6.2.2 USEDEFAULTSを使用したデフォルトの列マッピングの有効化

- 12.6.2.3 COLMAPでのデータ定義ファイル必要性の判定

- 12.6.3 COLMATCHによるグローバル列マッピングの構成

- 12.6.4 デフォルトの列マッピングの理解

- 12.6.5 列間でのデータ型のマッピング

- 12.6.5.1 数値の列

- 12.6.5.2 文字型の列

- 12.6.5.3 日時の列

- 12.7 行の選択とフィルタリング

- 12.7.1 FILTER句を使用した行の選択

- 12.7.2 WHERE句を使用した行の選択

- 12.7.3 FILTERおよびWHEREを使用して行を選択する場合の考慮事項

- 12.7.3.1 フィルタでのデータ使用可能性の確保

- 12.7.3.2 列値の比較

- 12.7.3.3 NULL値のテスト

- 12.8 変更前の値と変更後の値の取得

- 12.9 列の選択

- 12.10 SQL操作の選択および変換

- 12.11 トランザクション履歴の使用

- 12.12 データのテストおよび変換

- 12.12.1 関数での列名およびリテラルの処理

- 12.12.2 適切な関数の使用

- 12.12.3 日付の変換

- 12.12.4 算術演算の実行

- 12.12.4.1 @COMPUTEの省略

- 12.12.5 数値および文字列の操作

- 12.12.6 NULL値、無効なデータおよび欠落データの処理

- 12.12.6.1 @COLSTATの使用

- 12.12.6.2 @COLTESTの使用

- 12.12.6.3 @IFの使用

- 12.12.7 テストの実行

- 12.12.7.1 @CASEの使用

- 12.12.7.2 @VALONEOFの使用

- 12.12.7.3 @EVALの使用

- 12.13 トークンの使用

- 12.13.1 トークンの定義

- 12.13.2 ターゲット表でのトークン・データの使用

13 レプリケートされたデータとメタデータとの関連付け

- 13.1 概要

- 13.2 データ定義ファイルの理解

- 13.2.1 定義ファイルの内容

- 13.2.2 使用する定義ファイルのタイプと場所

- 13.2.3 定義ファイルのキャラクタ・セットの影響の理解

- 13.2.3.1 データのマッピングと変換をReplicatプロセスに限定

- 13.2.3.2 オペレーティング・システムのキャラクタ・セットが原因のファイルの破損の回避

- 13.2.3.3 既存の定義ファイルのキャラクタ・セットの変更

- 13.2.3.4 z/OSシステムから別のプラットフォームへのダウンロード

- 13.2.4 定義テンプレートの使用

- 13.2.5 データ定義を取得するためのOracle GoldenGateの構成

- 13.2.5.1 DEFGENの構成

- 13.2.5.2 DEFGENの実行

- 13.2.5.3 リモート・システムへの定義ファイルの転送

- 13.2.5.4 定義ファイルの指定

- 13.2.6 定義テンプレートに一致する表の追加

- 13.2.7 定義ファイルの使用例

- 13.2.7.1 ターゲット・システム上で使用するソース定義ファイルの作成

- 13.2.7.2 ソース・システム上で使用するターゲット定義ファイルの作成

- 13.2.7.3 ターゲット・システム上で使用する複数のソース定義ファイルの作成

- 13.3 自動証跡ファイル・リカバリの使用方法

- 13.4 Oracle GoldenGateを自己記述型の証跡ファイルに対して構成する方法

- 13.4.1 サポートに関する考慮事項

- 13.4.2 自己記述型の証跡ファイルの使用方法

- 13.4.3 パラメータ・ファイルの例

- 13.5 同一のメタデータを想定するためのOracle GoldenGateの構成

- 13.5.1 表が同一とみなされるためのルール

- 13.6 異なるメタデータを想定するためのOracle GoldenGateの構成

- 13.7 同じ定義と異なる定義の組合せを使用するためのOracle GoldenGateの構成

14 オンライン変更同期の構成

- 14.1 オンライン変更同期の概要

- 14.1.1 初期同期

- 14.2 プロセスとファイルの名前の選択

- 14.2.1 プロセスのネーミング規則

- 14.2.2 ファイル名の選択

- 14.3 チェックポイント表の作成

- 14.3.1 チェックポイント表作成のオプション

- 14.3.2 Oracle RACにおける調整Replicatへの対応

- 14.4 オンラインExtractグループの作成

- 14.5 証跡の作成

- 14.5.1 Oracle GoldenGate証跡の記憶域の割当て

- 14.5.2 証跡用の領域の見積り

- 14.5.3 証跡の追加

- 14.6 オンライン抽出用のパラメータ・ファイルの作成

- 14.7 オンラインReplicatグループの作成

- 14.7.1 クラシックReplicatモードについて

- 14.7.2 調整Replicatモードについて

- 14.7.2.1 バリア・トランザクションについて

- 14.7.2.2 バリア・トランザクションの処理方式

- 14.7.2.3 グローバル水位標について

- 14.7.3 統合Replicatモードについて

- 14.7.4 パラメータ変更との関係で見たReplicat処理の理解

- 14.7.5 Replicatグループの作成

- 14.8 オンライン・レプリケーション用のパラメータ・ファイルの作成

15 処理エラーへの対処

- 15.1 Oracle GoldenGateのエラー処理の概要

- 15.2 Extractエラーの処理

- 15.3 DML操作中のReplicatエラーの処理

- 15.3.1 例外としてのエラーの処理

- 15.3.1.1 EXCEPTIONSONLYの使用

- 15.3.1.2 MAPEXCEPTIONの使用

- 15.3.1.3 例外表について

- 15.4 DDL操作中のReplicatエラーの処理

- 15.5 TCP/IPエラーの処理

- 15.6 更新されたエラー・メッセージの管理

- 15.7 Oracle GoldenGateエラーの解決

16 初期ロードによるOracle GoldenGateのインスタンス化

- 16.1 初期ロード手順の概要

- 16.1.1 初期ロードのパフォーマンスの向上

- 16.1.2 初期ロードの前提条件

- 16.1.2.1 DDL処理の無効化

- 16.1.2.2 ターゲット表の準備

- 16.1.2.3 Managerプロセスの構成

- 16.1.2.4 データ定義ファイルの作成

- 16.1.2.5 変更同期グループの作成

- 16.1.2.6 プロセス・グループ間でのパラメータの共有

- 16.2 データベース・ユーティリティを使用したデータのロード

- 16.3 Oracle Data Pumpを使用したデータのロード

- 16.3.1 自動的な表ごとのインスタンス化の使用方法

- 16.3.2 Oracle Data Pumpの表のインスタンス化の使用方法

- 16.4 ファイルからReplicatへのデータのロード

- 16.5 ファイルからデータベース・ユーティリティへのデータのロード

- 16.6 Oracle GoldenGateダイレクト・ロードを使用したデータのロード

- 16.7 ダイレクト・バルク・ロードを使用したSQL*Loaderへのデータのロード

- 16.8 Teradataロード・ユーティリティを使用したデータのロード

17 Oracle GoldenGate処理のカスタマイズ

- 17.1 SQLEXECを使用したコマンド、ストアド・プロシージャおよび問合せの実行

- 17.1.1 SQLEXECを使用した処理の実行

- 17.1.2 SQLEXECの使用

- 17.1.3 TABLE文またはMAP文内でのSQLEXECの実行

- 17.1.4 スタンドアロン文としてのSQLEXECの実行

- 17.1.5 入力パラメータと出力パラメータの使用

- 17.1.5.1 入力パラメータへの値の受渡し

- 17.1.5.2 出力パラメータへの値の受渡し

- 17.1.5.3 パラメータを使用するSQLEXECの例

- 17.1.6 SQLEXECエラーの処理

- 17.1.6.1 紛失した列値の処理

- 17.1.6.2 データベース・エラーの処理

- 17.1.7 SQLEXECのその他のガイドライン

- 17.2 Oracle GoldenGateマクロを使用した作業の簡略化および自動化

- 17.2.1 マクロの定義

- 17.2.2 マクロの呼出し

- 17.2.2.1 パラメータを含むマクロの呼出し

- 17.2.2.2 入力パラメータのないマクロの呼出し

- 17.2.3 マクロからの他のマクロの呼出し

- 17.2.4 マクロ・ライブラリの作成

- 17.2.5 マクロ展開のトレース

- 17.3 ユーザー・イグジットを使用したOracle GoldenGate機能の拡張

- 17.3.1 ユーザー・イグジットを実装する場合

- 17.3.2 Oracle GoldenGateレコード情報のルーチンへの使用可能化

- 17.3.3 ユーザー・イグジットの作成

- 17.3.4 ユーザー・イグジットでのキャラクタ・セット変換のサポート

- 17.3.5 名前のメタデータをチェックするマクロの使用

- 17.3.6 文字形式の説明

- 17.3.7 ユーザー・イグジットのアップグレード

- 17.3.8 ユーザー・イグジット関数を使用する方法のサンプルの表示

- 17.4 イベント・マーカー・システムを使用したデータベース・イベントの起動

- 17.4.1 イベント・マーカー・システムの使用方法のケース・スタディ

- 17.4.1.1 日次処理の起動

- 17.4.1.2 初期ロードから変更同期への移行の簡略化

- 17.4.1.3 データ異常値が検出された場合の処理の停止

- 17.4.1.4 特定の注文番号のトレース

- 17.4.1.5 バッチ・プロセスの実行

- 17.4.1.6 結果となる操作を除くSQL文のみの伝播

- 17.4.1.7 長時間実行トランザクション開始前の他のトランザクションのコミット

- 17.4.1.8 データ検証のためのシェル・スクリプトの実行

18 Oracle GoldenGate処理の監視

- 18.1 GGSCIでの情報コマンドの使用

- 18.2 Extractリカバリの監視

- 18.3 ラグの監視

- 18.3.1 ラグについて

- 18.3.2 ラグのレポート方法の制御

- 18.4 自動ハートビート表を使用した監視

- 18.4.1 ハートビート表のエンドツーエンド・レプリケーション・フローの理解

- 18.4.2 ハートビート表の更新

- 18.4.3 ハートビート履歴表のパージ

- 18.4.4 ベスト・プラクティス

- 18.4.5 自動ハートビート・コマンドの使用方法

- 18.5 処理量の監視

- 18.6 エラー・ログの使用

- 18.7 プロセス・レポートの使用

- 18.7.1 プロセス・レポートの実行時統計のスケジュール

- 18.7.2 プロセス・レポートのレコード数の表示

- 18.7.3 ReplicatレポートがSQLエラーで一杯になることを防止する方法

- 18.8 破棄ファイルの使用

- 18.9 破棄ファイルとレポート・ファイルの維持

- 18.10 システム・ログの使用

- 18.11 時間の差異の調整

- 18.12 NonStopシステムへのイベント・メッセージの送信

- 18.12.1 WindowsまたはUNIXシステムでのEMSCLNTの実行

- 18.12.2 NonStopでのCollectorの実行

- 18.13 パフォーマンス・チューニングに関するヘルプ情報の取得

19 Oracle GoldenGateのパフォーマンスのチューニング

- 19.1 複数のプロセス・グループの使用

- 19.1.1 複数のプロセス・グループの使用に関する考慮事項

- 19.1.1.1 データ整合性の維持

- 19.1.1.2 グループの数

- 19.1.1.3 メモリー

- 19.1.1.4 処理が集中している表の分離

- 19.1.2 ターゲット・システムでのパラレルReplicatグループの使用

- 19.1.2.1 Extractグループの作成

- 19.1.2.2 Replicatグループの作成

- 19.1.3 複数のExtractグループと複数のReplicatグループの使用

- 19.1.3.1 Extractグループの作成

- 19.1.3.2 Replicatグループの作成

- 19.2 行範囲によるプロセス・グループ間での表の分割

- 19.3 ネットワークを効率的に使用するためのOracle GoldenGateの構成

- 19.3.1 Oracle GoldenGateに影響するネットワーク・ボトルネックの検出

- 19.3.2 データ・ポンプの使用による帯域幅の制限の回避

- 19.3.3 Oracle GoldenGateの帯域幅の要件の削減

- 19.3.4 TCP/IPパケット・サイズの増加

- 19.4 ディスクI/Oボトルネックの除外

- 19.4.1 システム構成内のI/Oパフォーマンスの向上

- 19.4.2 Oracle GoldenGate構成内のI/Oパフォーマンスの向上

- 19.5 仮想メモリーとページングの管理

- 19.6 データのフィルタリングおよび変換の最適化

- 19.7 Replicatトランザクションのチューニング

- 19.7.1 バリア・トランザクションに対する調整パフォーマンスのチューニング

- 19.7.2 配列での同様のSQL文の適用

- 19.7.3 キーがない場合の完全な表スキャンの防止

- 19.7.4 大規模トランザクションの分割

- 19.7.5 オープン・カーソルの調整

- 19.7.6 更新速度の向上

- 19.7.7 Replicatトランザクション・タイムアウトの設定

20 管理操作の実行

- 20.1 アプリケーション・パッチの実行

- 20.2 トランザクション・ログの初期化

- 20.3 システムの停止

- 20.4 データベース属性の変更

- 20.4.1 データベース・メタデータの変更

- 20.4.2 Oracle GoldenGate構成への表の追加

- 20.4.3 ソースとターゲットの間の表属性の調整

- 20.4.4 DB2 z/OSの表の列を追加するALTER TABLEの実行

- 20.4.5 ソース表の削除および再作成

- 20.4.6 クラシック・キャプチャを使用する場合のOracle RACスレッド数の変更

- 20.4.7 ORACLE_SIDの変更

- 20.4.8 アーカイブ・ログの消去

- 20.4.9 DB2表の再編成(z/OSプラットフォーム)

- 20.5 アクティブな構成へのプロセス・グループの追加

- 20.5.1 作業を開始する前に

- 20.5.2 アクティブな構成への別のExtractグループの追加

- 20.5.3 アクティブな構成への別のデータ・ポンプの追加

- 20.5.4 アクティブな構成への別のReplicatグループの追加

- 20.6 証跡ファイルのサイズの変更

- 20.7 クラシック・モードから統合モードへExtractの切替え

- 20.8 統合モードからクラシック・モードへExtractの切替え

- 20.9 非統合モードから統合モードへReplicatの切替え

- 20.10 統合モードから非統合モードへReplicatの切替え

- 20.11 調整モードへのReplicatの切替え

- 20.11.1 手順の概要

- 20.11.2 調整済Replicatへの切替えの実行

- 20.12 調整Replicat構成の管理

- 20.12.1 ワークロードの計画済の再パーティション化の実行

- 20.12.2 計画外の再パーティション化後のReplicatのリカバリ

- 20.12.2.1 HANDLECOLLISIONSを使用した低基準値からの再処理

- 20.12.2.2 自動保存されたパラメータ・ファイルの使用

- 20.12.3 異常停止後のスレッドの同期

- 20.13 システム障害または破損の後のプライマリExtractの再起動

- 20.13.1 この手順の詳細

- 20.13.2 リカバリの実行

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

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

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

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

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

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

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

A サポートされるキャラクタ・セット

- A.1 サポートされるキャラクタ・セット - Oracle

- A.2 サポートされるキャラクタ・セット - Oracle以外

B サポートされるロケール

C Oracle GoldenGate証跡について

- C.1 証跡リカバリ・モード

- C.2 証跡ファイルのヘッダー・レコード

- C.3 証跡のレコード形式

- C.4 Oracle GoldenGateレコードの例

- C.5 レコード・ヘッダー領域

- C.5.1 ヘッダー・フィールドの説明

- C.5.2 ヘッダー・データの使用

- C.6 レコード・データ領域

- C.6.1 完全レコード・イメージ形式(NonStopソース)

- C.6.2 圧縮レコード・イメージ形式(Windows、UNIX、Linuxソース)

- C.7 トークン領域

- C.8 Oracle GoldenGateの操作タイプ

- C.9 Oracle GoldenGate証跡のヘッダー・レコード

D コミット順序番号について

E チェックポイントについて

- E.1 Extractチェックポイント

- E.1.1 Extract読取りチェックポイントについて

- E.1.1.1 開始チェックポイント

- E.1.1.2 リカバリ・チェックポイント

- E.1.1.3 現在のチェックポイント

- E.1.2 Extract書込みチェックポイントについて

- E.2 Replicatチェックポイント

- E.2.1 Replicatチェックポイントについて

- E.2.1.1 開始チェックポイント

- E.2.1.2 現在のチェックポイント

- E.3 内部チェックポイント情報

- E.4 Oracle GoldenGateチェックポイント表

はじめに

このガイドでは、次の点について説明します。

- Oracle GoldenGateを制御するインタフェース・コンポーネントの操作。

- Oracle GoldenGateのパフォーマンスの管理とトラブルシューティング。

- その他の管理操作の実行。

対象読者

このガイドは、Oracle GoldenGateの運用およびパフォーマンス管理の担当者を対象としています。この対象読者には、一般的にシステム管理者やデータベース管理者が含まれますが、これに制限されるものではありません。

ドキュメントのアクセシビリティについて

Oracleのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWeb サイト(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc)を参照してください。

Oracle Supportへのアクセス

サポート契約がある場合には、My Oracle Supportを通して電子支援をご利用いただけます。詳細情報はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=infoか、聴覚に障害のあるお客様はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=trsを参照してください。

関連情報

Oracle GoldenGate製品のドキュメント・ライブラリは、次の場所にあります。

Oracle GoldenGate

Oracle GoldenGate Application Adapters

Oracle GoldenGate for Big Data

Oracle GoldenGate Director

Oracle GoldenGate Plug-in for EMCC

Oracle GoldenGate for HP NonStop (Guardian)

Oracle GoldenGate Monitor

Oracle GoldenGate Veridata

Oracle GoldenGate Studio

Oracle GoldenGateのベスト・プラクティス、記事およびソリューションを含む追加情報は、次の場所にあります。

Oracle GoldenGate A-Team Chronicles

表記規則

このマニュアルでは次の表記規則を使用します。

規則

意味

太字

太字は、操作に関連するグラフィカル・ユーザー・インタフェース要素("「ファイル」メニューから「保存」を選択します"など)を示します。太字は、本文中で定義されている用語および用語集に記載されている用語も示します。

イタリック体

イタリック体

イタリックは、ユーザーが特定の値を指定するプレースホルダ変数(パラメータ文TABLE table_nameなど)を示します。イタリックは、ドキュメントのタイトルおよび強調にも使用されます。

固定幅フォント

大文字の固定幅フォント

固定幅フォントは、ユーザー・イグジットやスクリプトなどのコードのコンポーネント、ファイルおよびデータベース・オブジェクトの名前、URLのパス、および画面に表示される入出力テキストを示します。大文字の固定幅フォントは、Oracle GoldenGateのパラメータ、コマンド、ユーザーが構成可能な関数およびSQLコマンドとキーワードを表すために使用されます。

大文字

通常フォントの大文字は、特別な場合を除き、ユーティリティの名前を表します。

{ }

構文内の中カッコは、パイプ記号で区切ったオプションのセットを囲み、その中の1つを選択する必要があることを表します。たとえば、{option1 | option2 | option3}です。

[ ]

構文内の大カッコは、オプションの要素を示します。たとえば、CLEANUP REPLICAT group_name [, SAVE count]という構文では、SAVE句がオプションです。オプション要素内の複数の要素は、パイプ記号で区切ります(例: [option1 | option2])。

1 Oracle GoldenGateの概要

この章では、Oracle GoldenGateの機能、基本用語および処理ロジックとアーキテクチャについて説明します。

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

- Oracle GoldenGateでサポートされる処理方法およびデータベース

- Oracle GoldenGateアーキテクチャの概要

- プロセス・タイプの概要

- グループの概要

- コミット順序番号(CSN)の概要

1.1 Oracle GoldenGateでサポートされる処理方法およびデータベース

Oracle GoldenGateでは、エンタープライズの複数の異機種プラットフォーム間において、トランザクション・レベルでデータを交換および操作できます。トランザクションの整合性を維持したまま、既存インフラストラクチャへのオーバーヘッドを最小限に抑えて、コミットされたトランザクションを移動します。そのモジュール型のアーキテクチャによって、選択したデータ・レコード、トランザクション変更およびDDL(データ定義言語)変更を様々なトポロジ間で柔軟に抽出およびレプリケートできます。

注意:

DDLサポート、トポロジおよび取得または配信の構成はデータベース・タイプごとに異なります。サポートされる機能および構成の詳細情報は、使用中のデータベースに対応するOracle GoldenGateのインストレーションおよび構成のドキュメントを参照してください。

この柔軟性と、Oracle GoldenGateのフィルタリング、変換およびカスタム処理の各機能により、次のような多くのビジネス要件に対応できます。

- ビジネス継続性および高可用性。

- 初期ロードおよびデータベース移行。

- データ統合。

- 意志決定支援およびデータ・ウェアハウス。

図1-1 Oracle GoldenGateでサポートされるトポロジ

表1-1 サポートされる処理方法

データベース

ログベース抽出(取得)

非ログベース抽出(取得)

レプリケーション(配信)

* 非ログベース抽出では、Oracle GoldenGate APIと通信する取得モジュールを使用して、変更データをOracle GoldenGateに送信します。

DB2 for i

n/a

n/a

X

DB2 for Linux、UNIX、Windows

X

n/a

X

DB2 for z/OS

X

n/a

X

Oracle

X

n/a

X

MySQL

X

n/a

X

SQL/MX

X

n/a

X

SQL Server

X

n/a

X

Sybase

X

n/a

X

Teradata

n/a

X

X

TimesTen*

n/a

n/a

X

処理方法、サポートされるトポロジと機能、および構成要件の詳細は、使用中のデータベースに対応するOracle GoldenGateのドキュメントを参照してください。

1.2 Oracle GoldenGateアーキテクチャの概要

Oracle GoldenGateは、次の目的で構成できます。

- あるデータベースからデータ・レコードの静的抽出を行い、別のデータベースにそのレコードをロードする場合。

- ソースとターゲットのデータ一貫性を維持するために、トランザクションデータ操作言語(DML)操作とデータ定義言語(DDL)変更(サポートされるデータベースの場合)を継続的に抽出およびレプリケートする場合。

- データベースから抽出を行い、データベース以外の場所にあるファイルにレプリケートする場合。

Oracle GoldenGateは、次のコンポーネントで構成されます。

- Extract

- データ・ポンプ

- Replicat

- 証跡または抽出ファイル

- チェックポイント

- Manager

- Collector

図1-2は、初期データ・ロードとDML操作およびDDL操作の同期に対応するOracle GoldenGateの論理アーキテクチャを示しています。これは基本構成です。このモデルは、ビジネス要件に応じて変更することをお薦めします。

図1-2 Oracle GoldenGateの論理アーキテクチャ

1.2.1 Extractの概要

Extractプロセスは、Oracle GoldenGateの抽出(取得)メカニズムです。Extractは、データベース要件および実装要件に応じて、ソース・システムまたはダウンストリーム・データベース、あるいはその両方で実行されます。

Extractは次のいずれかの方法で構成できます。

- 初期ロード: 初期データ・ロードの場合、Extractは、ソース・オブジェクトから現在の静的データセットを直接抽出(取得)します。

- 変更同期: ソース・データと別のデータセットとの同期を維持するため、Extractは、初期同期の発生後にDML操作およびDDL操作を取得します。

Extractが取得するのは次のいずれかのデータソースからです。

- ソース表(実行するのが初期ロードの場合)。

- データベースのリカバリ・ログまたはトランザクション・ログ(Oracle REDOログやSQL/MX監査証跡など)。ログから取得する実際の方法は、データベース・タイプに応じて異なります。たとえば、Oracle GoldenGate for Oracleに用意されている統合キャプチャ・モードでは、Extractは、Oracleトランザクション・ストリームをマイニングするデータベース・ログマイニング・サーバーと直接通信します。統合取得の詳細は、Oracle DatabaseのためのOracle GoldenGateのインストールおよび構成の統合取得についてを参照してください。

- サード・パーティの取得モジュール。この方法では、データおよびメタデータを外部APIからExtract APIに渡すための通信レイヤーが提供されます。データベース・ベンダーまたはサード・パーティ・ベンダーによって、データ操作を抽出してExtractに渡すコンポーネントが用意されます。

変更同期用に構成されている場合、Extractは、Extract構成内のオブジェクトに対して実行されるDML操作およびDDL操作を取得します。Extractは、操作が含まれるトランザクションのコミット・レコードまたはロールバックを受信するまで、それらの操作を格納します。Extractがロールバックを受信すると、そのトランザクションの操作は破棄されます。Extractがコミットを受信すると、トランザクションはディスクの証跡と呼ばれる一連のファイルに永続化され、ターゲット・システムへの伝播を待つキューに入ります。各トランザクションの操作はすべて、順次編成されたトランザクション単位として証跡に書き込まれます。この設計によって、処理速度とデータ整合性の両方が保証されます。

注意:

Extractでは、Extract構成に存在しないオブジェクトに対する操作は無視されます。この動作は、Extract構成に存在するオブジェクトに対する操作が同じトランザクションに含まれている場合でも同様です。

複数のExtractプロセスを異なるオブジェクトに対して同時に動作させることができます。たとえば、データベースの規模が大きい場合、ターゲットのレイテンシを最小化するために、2つのExtractプロセスで抽出を行い、(2つの永続性証跡を使用する)2つのReplicatプロセスにパラレルに送信することもできます。異なるExtractプロセスどうしを区別するには、各プロセスにグループ名を割り当てます(「グループの概要」を参照)。

1.2.2 データ・ポンプの概要

データ・ポンプは、ソースOracle GoldenGate構成内のセカンダリExtractグループです。データ・ポンプを使用しない場合、Extractは、取得したデータ操作をターゲットのリモート証跡に送信する必要があります。一方で、データ・ポンプを使用する標準的な構成では、プライマリExtractグループがソース・システムの証跡に書き込みます。データ・ポンプは、この証跡を読み取り、データ操作をネットワーク経由でターゲットのリモート証跡に送信します。データ・ポンプによって、記憶域の柔軟性が向上すると同時に、プライマリExtractプロセスがTCP/IPアクティビティから分離されます。

一般に、データ・ポンプはデータのフィルタリング、マッピングおよび変換を実行できますが、データを操作せずにそのままの状態で単純に転送するパススルー・モードでデータ・ポンプを構成することも可能です。パススルー・モードでは、オブジェクト定義を参照するすべての機能が回避されるため、データ・ポンプのスループットが向上します。

ほとんどのビジネス環境で、データ・ポンプを使用する必要があります。データ・ポンプを使用する理由として、次のことがあげられます。

- ネットワークおよびターゲットの障害に対する保護: ターゲット・システムに証跡のみが存在するOracle GoldenGateの基本構成では、Extractが継続的にメモリーに抽出するデータ操作の格納場所がソース・システム上に存在しません。ネットワークまたはターゲット・システムが使用できなくなると、Extractはメモリーを使い果して異常終了する可能性があります。これに対し、ソース・システムに証跡とデータ・ポンプがあれば、取得データをディスクに移動して、プライマリExtractの異常終了を防ぐことができます。接続が回復されると、データ・ポンプは、ソース証跡からデータを取得して1つ以上のターゲット・システムに送信します。

- データのフィルタリングまたは変換の複数フェーズによる実装。複雑なフィルタリング構成またはデータ変換構成を使用する場合、データ・ポンプを構成して、最初の変換をソース・システムまたはターゲット・システムのいずれかで(あるいは中間システムで)実行し、別のデータ・ポンプまたはReplicatグループを使用して2番目の変換を実行できます。

- 多くのソースから中央ターゲットへのデータの統合。複数のソース・データベースと中央ターゲット・データベースとを同期する場合、抽出したデータ操作を各ソース・システムに格納し、それらの各システムでデータ・ポンプを使用してターゲット・システムの証跡にデータを送信できます。記憶域の負荷がソース・システムとターゲット・システムで分割されるため、複数のソースから送信されるデータに対応するためにターゲット・システムに大量の領域を用意する必要がなくなります。

- 1つのソースと複数のターゲットの同期。複数のターゲット・システムにデータを送信する場合、ソース・システムで各ターゲット用のデータ・ポンプを構成できます。いずれかのターゲットに対するネットワーク接続が切断されても、他のターゲットにデータを送信できます。

1.2.3 Replicatの概要

Replicatプロセスは、ターゲット・システムで実行されるもので、そのシステムの証跡を読み取り、DML操作またはDDL操作を再構成してターゲット・データベースに適用します。Replicatは動的SQLを使用して1つのSQL文を一度だけコンパイルした後、異なるバインド変数を使用してこの文を何回も実行します。

Replicatは次のいずれかの方法で構成できます。

- 初期ロード: 初期データ・ロードの場合、Replicatは、静的データ・コピーをターゲット・オブジェクトに適用するか、高速なバルク・ロード・ユーティリティにルーティングします。

- 変更同期: 変更同期用に構成されている場合、Replicatは、データベース・タイプに応じてネイティブ・データベース・インタフェースまたはODBCを使用して、レプリケートされたソース操作をターゲット・オブジェクトに適用します。

複数のReplicatプロセスを1つ以上のExtractプロセスおよびデータ・ポンプとともにパラレルに使用して、スループットを向上できます。データ整合性を維持するため、プロセスのセットごとに異なるオブジェクトを処理します。Replicatプロセスどうしを区別するには、各プロセスにグループ名を割り当てます(「グループの概要」を参照)。

複数のReplicatプロセスを使用するかわりに、1つのReplicatを調整モードまたは統合モードで構成できます。

- 調整モードは、Oracle GoldenGateでサポートされているすべてのデータベースに対応しています。調整モードでは、Replicatがスレッド化されます。1つのコーディネータ・スレッドが、レプリケートされたSQL操作をパラレルに実行する1つ以上のスレッドを作成して調整します。調整Replicatは1つのパラメータ・ファイルを使用し、1つの単位として監視および管理されます。詳細は、「オンラインReplicatグループの作成」を参照してください。

- 統合モードは、Oracle 11.2.0.4以降のバージョンでサポートされます。統合モードのReplicatでは、Oracleデータベース内で利用可能な適用処理機能を使用します。単一のReplicat構成内で、適用サーバーと呼ばれるインバウンド・サーバーの複数の子プロセスがトランザクションをパラレルに適用し、元のトランザクションのアトミック性を保持します。統合モードの詳細は、Oracle DatabaseのためのOracle GoldenGateのインストールおよび構成を参照してください。

Replicatは、レプリケートされた操作をターゲット・データベースに適用する前に一定の時間待機するよう遅延させることができます。遅延が推奨される場合として、たとえば、間違ったSQLの伝播を防ぐ場合、異なるタイムゾーンにわたるデータの受信を制御する場合、または他の計画済イベントの発生に備えて時間を考慮する場合があげられます。遅延の長さは、DEFERAPPLYINTERVALパラメータで制御します。

各種パラメータを使用して、Replicatがソース・トランザクションをターゲット・トランザクションに変換する方法を制御します。たとえば、BATCHSQL、GROUPTRANSOPS、MAXTRANSOPSなどのパラメータがあります。これらのパラメータとその他のReplicatパラメータの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

1.2.4 証跡の概要

データベース変更の継続的な抽出およびレプリケーションをサポートするために、Oracle GoldenGateは、取得した変更のレコードをディスク上の証跡と呼ばれる一連のファイルに一時的に格納します。証跡は、Oracle GoldenGateの構成方法に応じて、ソース・システム、中間システム、ターゲット・システムのいずれか、またはこれらを組み合せたシステムに配置できます。これは、ローカル・システムでは抽出証跡(またはローカル証跡)と呼ばれます。 リモート・システムでは、リモート証跡と呼ばれます。

Oracle GoldenGateでは、記憶域として証跡を使用することで、データの正確性とフォルト・トレランスをサポートします(「チェックポイントの概要」を参照)。また、証跡の使用により、抽出アクティビティとレプリケーション・アクティビティを相互に独立して実行できます。これらのプロセスが分離されることで、データを処理して配信する方法の選択肢が広がります。たとえば、変更を継続的に抽出してレプリケートするかわりに、変更を継続的に抽出しながら、ターゲット・アプリケーションの必要に応じて後からいつでもターゲットにレプリケートできるように、それらの変更を証跡に格納することができます。

1.2.4.1 証跡に書き込むプロセスと証跡を読み取るプロセス

プライマリExtractとデータ・ポンプExtractが証跡に書き込みます。すべてのオンラインExtractプロセスが証跡にリンクしている必要があります。所定のローカル証跡に書き込めるのは、1つのプライマリExtractプロセスのみです。ローカル証跡ごとに異なる名前を付ける必要があります。

複数のデータ・ポンプExtractプロセスで、それぞれ同じ名前の証跡に書き込むことはできますが、物理証跡自体は異なるリモート・システム(データ分散トポロジなど)に配置する必要があります。たとえば、データ・ポンプ1pumpとデータ・ポンプ2pumpを両方ともsys01に配置して、リモート証跡aaに書き込むことができます。その場合、データ・ポンプ1pumpはsys02の証跡aaに、データ・ポンプ2pumpはsys03の証跡aaに書き込むようにします。

証跡を読み取るプロセスには、次のものがあります。

- データ・ポンプExtract: 前のExtract(通常はプライマリExtract)にリンクしているローカル証跡からDML操作およびDDL操作を抽出し、必要に応じてさらに処理を行い、後続のOracle GoldenGateプロセス(通常はReplicatだが、必要に応じて別のデータ・ポンプの場合もある)によって読み取られる証跡にデータを転送します。

- Replicat: 証跡を読み取り、レプリケートされたDML操作およびDDL操作をターゲット・データベースに適用します。

1.2.4.2 証跡の作成およびメンテナンス

証跡ファイル自体は処理中に必要に応じて作成されますが、ADD RMTTRAILコマンドまたはADD EXTTRAILコマンドでOracle GoldenGate構成に追加するときに、2文字の証跡名を指定します。デフォルトでは、証跡は、Oracle GoldenGateディレクトリのdirdatサブディレクトリに格納されます。TRAIL_SEQLEN_9D | TRAIL_SEQLEN_6D GLOBALSパラメータを使用して、6桁または9桁の順序番号を指定できます。TRAIL_SEQLEN_9Dがデフォルトで設定されています。

証跡ファイルが自動的にエージングされるので、ファイル・メンテナンスのために処理を中断する必要はありません。新しいファイルを作成すると、各ファイルが2文字の証跡名を継承し、それに一意の9桁の順序番号(000000000から999999999)が追加されます(たとえば、c:\ggs\dirdat\tr000000001のようになります)。順序番号が999999999に達すると、再度000000000から番号付けが始まり、前の証跡ファイルは上書きされます。証跡ファイルは、ManagerパラメータのPURGEOLDEXTRACTSを使用して、ルーチンごとに消去できます。9桁の証跡ファイル・フォーマットがデフォルトです。

異なるオブジェクトまたはアプリケーションからデータを分離するために、複数の証跡を作成できます。TABLEまたはSEQUENCEパラメータで指定したオブジェクトを、Extractパラメータ・ファイルのEXTTRAILまたはRMTTRAILパラメータで指定した証跡にリンクします。

スループットを最大化し、システムのI/O負荷を最小化するため、抽出データの証跡に対する入出力は、サイズの大きいブロック単位で行われます。トランザクション順序は保持されます。

証跡と証跡に含まれるレコードの詳細は、Oracle GoldenGate証跡についてを参照してください。

1.2.4.3 既存の証跡を9桁の順序番号に変換する方法

指定したextractグループについて、証跡ファイルを9桁から6桁のチェックポイント・レコードに変換できます。convchkネイティブ・コマンドを使用して、Extractを正常に停止して9桁の証跡に変換してから、convchkを使用して次のようにアップグレードします。

convchk extract trail seqlen_9d

Extractを起動します。

9桁から6桁の証跡にダウングレードするには、このconvchkコマンドを使用して、同じ手順を実行します。

convchk extract trail seqlen_6d

1.2.5 Extractファイルの概要

一部の構成では、Oracle GoldenGateは抽出したデータを証跡ではなく抽出ファイルに格納します。抽出ファイルは、単一のファイルとすることも、オペレーティング・システムのファイル・サイズ制限を考慮して複数のファイルにロールオーバーするように構成することもできます。この点で、抽出ファイルは証跡と似ていますが、チェックポイントは記録されません。実行中に1つ以上のファイルが自動的に作成されます。証跡に適用されるバージョニング機能と同じ機能が、抽出ファイルにも適用されます。

1.2.6 チェックポイントの概要

チェックポイントは、プロセスの現在の読取り位置と書込み位置をリカバリ目的でディスクに格納します。チェックポイントは、同期のためにマークされたデータ変更が、実際にExtractにより取得されてReplicatによりターゲットに適用されることを保証し、重複処理を防止します。チェックポイントによって、システム、ネットワークまたはOracle GoldenGateプロセスを再起動した場合のデータ損失が防止され、フォルト・トレランスが実現します。複雑な同期構成では、チェックポイントにより、複数のExtractプロセスまたはReplicatプロセスを使用して同じ証跡セットから読取りを行うことができます。

チェックポイントは、メッセージがネットワーク内で失われないように、プロセス間の確認応答と連携して動作します。Oracle GoldenGateには、独自仕様のメッセージ配信保証テクノロジがあります。

Extractは、データソースおよび証跡内にその位置を示すチェックポイントを作成します。Extractはコミットされたトランザクションのみを取得するので、オープン・トランザクションのいずれかがコミットされた場合に備えて、すべてのオープン・トランザクションの操作を追跡します。そのため、トランザクション・ログ内で現在読取りを行っている場所を示すチェックポイントと、最も古いオープン・トランザクションの開始位置(現在のログまたは以前のいずれかのログ内)を記録することが求められます。

また、Oracleデータベースの停止後に再処理が必要になるトランザクション・ログの量を抑えるため、Extractは、処理の現在の状態およびデータ(長時間実行トランザクションの状態およびデータがあればそれも含む)を特定の間隔でディスクに永続化します。この間隔の後、Extractが停止した場合は、直前の間隔における位置または最後のチェックポイントからリカバリを実行できるので、最も古いオープンの長時間実行トランザクションが最初に現れたログ位置まで戻る必要はありません。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXのBRパラメータに関する項を参照してください。

Replicatは、証跡内にその位置を示すチェックポイントを作成します。Replicatは、これらのチェックポイントをターゲット・データベース内の表(チェックポイント表)とディスク上のチェックポイント・ファイルに格納します。チェックポイント表は、ユーザーが指定した名前と場所で格納されます。チェックポイント・ファイルは、Oracle GoldenGateディレクトリのdirchkサブディレクトリに格納されます。

各トランザクションが完了すると、Replicatはトランザクションに関する情報をチェックポイント表の行に書き込み、そのトランザクションに特定の証跡ファイル内の一意の位置をリンクします。Replicatはトランザクションの完了時にチェックポイントをチェックポイント・ファイルにも書き込みます。また、一定の間隔で現在の読取り位置もチェックポイント・ファイルに書き込みます。通常、これらの位置はトランザクション境界ではなく、トランザクション内の任意の位置にあります。間隔の長さは、CHECKPOINTSECSパラメータで制御されます。

チェックポイント表はデータベースの一部で、データベースのリカバリ・システムを利用できるため、Replicatのリカバリ・ポイントがより効率的になります。チェックポイント・ファイル内の最後のチェックポイントが最新のトランザクション境界とはかぎりません。Replicatによってまだ適用されていないトランザクションや、すでに適用済の過去のトランザクションの途中である可能性があります。チェックポイント表によって、Replicatは適切なトランザクション境界から開始できるので、各トランザクションが1回のみ適用されることが保証されます。チェックポイント表内の情報はリカバリに利用できる場合もありますが、主にGGSCIのINFOコマンドなどで使用します。

Oracle GoldenGate環境(証跡を含む)の定期的なバックアップは、データベースのバックアップ、リカバリおよび保存の各ポリシーに適合している必要があります。データベース(とチェックポイント表)を過去のある時点にリストアすると、Replicatはその時刻と一致する過去のチェックポイントに位置を戻します。この期間の必要な証跡ファイルがすでにシステムからエージングされている場合、それらをバックアップからリストアする必要があります。証跡の管理とエージングの方法は、証跡の概要を参照してください。

非継続的なタイプの構成(バッチ・ロードや初期ロードなど)の場合、チェックポイントは不要です。障害が発生した場合は、これらのプロセスを最初の開始位置から再開できます。

チェックポイントおよびチェックポイント表の詳細は、チェックポイントについてを参照してください。

1.2.7 Managerの概要

Managerは、Oracle GoldenGateの制御プロセスです。Managerは、ExtractまたはReplicatが起動される前に、Oracle GoldenGate構成内の各システムで稼働している必要があります。Managerは、リソース管理機能を実行するために、これらのプロセスの実行中は稼働し続ける必要があります。Managerは次の機能を実行します。

- Oracle GoldenGateプロセスの起動

- 動的プロセスの起動

- プロセスのポート番号の管理

- 証跡管理の実行

- イベント、エラーおよびしきい値レポートの作成

1つのManagerプロセスで、複数のExtractまたはReplicatプロセスを制御できます。Windowsシステムでは、Managerはサービスとして実行できます。ManagerプロセスおよびTCP/IP接続の構成の詳細は、Managerおよびネットワーク通信の構成を参照してください。

1.2.8 Collectorの概要

Collectorは、継続的なオンライン変更同期がアクティブである場合に、ターゲット・システム上でバックグラウンドで実行されるプロセスです。Collectorは次の処理を実行します。

- リモートExtractからMangerへの接続リクエストが発生すると、スキャンを行って使用可能なポートにバインドし、リクエスト元のExtractプロセスに割り当てるポート番号をManagerに送信します。

- Extractによって送信された抽出済のデータベース変更を受信し、証跡ファイルに書き込みます。ネットワーク接続が必要なときはManagerがCollectorを自動的に起動するので、Oracle GoldenGateユーザーがCollectorを操作する必要はありません。Collectorは1つのExtractプロセスからしか情報を受信できないので、使用するExtractごとにCollectorが1つ存在します。Collectorは、関連するExtractプロセスが終了すると終了します。

注意:

Collectorは、必要に応じて手動で実行できます。これは、通常の動的Collectorと対比して、静的Collectorと呼ばれます。複数のExtractプロセスで1つの静的Collectorを共有できますが、1対1の比率が最適です。静的Collectorを使用すると、プロセスを確実に特定のポートで動作させることができます。静的Collectorの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。Managerによるポート割当て方法の詳細は、Managerおよびネットワーク通信の構成を参照してください。

デフォルトでは、Extractがソース・システムからターゲットのCollectorに対してTCP/IP接続を開始しますが、Collectorがターゲットから接続を開始するようにOracle GoldenGateを構成することもできます。ターゲットから接続を開始する必要があるのは、たとえば、ターゲットが信頼できるネットワーク・ゾーンにある一方で、ソースのネットワーク・ゾーンの信頼度がそれより低い場合です。

1.3 プロセス・タイプの概要

Oracle GoldenGateは、要件に応じて、次の処理タイプでの構成が可能です。

- オンラインExtractプロセスまたはReplicatプロセスは、ユーザーが停止するまで実行されます。オンライン・プロセスは、証跡にリカバリ・チェックポイントを保持するため、処理を中断しても再開することができます。ソース・オブジェクトとターゲット・オブジェクトの同期を維持するために、DML操作およびDDL操作(サポートされる場合)を継続的に抽出してレプリケートするには、オンライン・プロセスを使用します。このプロセス・タイプには、EXTRACTパラメータとREPLICATパラメータが適用されます。

- ソース表(初期ロードExtractとも呼ばれる)Extractプロセスは、別のデータベースへの初期ロードの準備として、現在の静的データセットをソース・オブジェクトから直接抽出します。このプロセス・タイプでは、チェックポイントは使用されません。このプロセス・タイプには、SOURCEISTABLEパラメータが適用されます。

- 特別実行Replicatプロセスは、既知の開始ポイントと終了ポイントの範囲内でデータを適用します。Replicatの特別実行は初期データ・ロードで使用しますが、オンラインExtractと一緒に使用して、証跡内のデータ変更をバッチ形式で(継続的にではなく、1日1回など)適用することもできます。このプロセス・タイプでは、同じ開始ポイントと終了ポイントを使用して最初から実行しなおせるため、チェックポイントは保持されません。このプロセス・タイプには、SPECIALRUNパラメータが適用されます。

- リモート・タスクは、特殊なタイプの初期ロード・プロセスであり、ExtractがTCP/IP経由で直接Replicatと通信します。Collectorプロセスも、証跡またはファイルの一時ディスク記憶域も使用されません。このタスクは、RMTTASKパラメータを使用してExtractパラメータ・ファイルに定義します。

1.4 グループの概要

システムの複数のExtractプロセスまたはReplicatプロセスを区別するには、処理グループを定義します。たとえば、異なるデータセットをパラレルにレプリケートするには、2つのReplicatグループを作成します。

処理グループは、プロセス(ExtractまたはReplicat)、パラメータ・ファイル、チェックポイント・ファイル、およびそのプロセスに関連する他のファイルで構成されます。Replicatの場合、グループには関連するチェックポイント表も含まれる場合があります。グループを定義するには、Oracle GoldenGateのコマンド・インタフェースであるGGSCIで、ADD EXTRACTコマンドおよびADD REPLICATコマンドを使用します。

グループに関連するすべてのファイルおよびチェックポイントでは、グループ自体に割り当てられた名前を共有します。処理を制御または表示するコマンドを発行する場合、常に単一のグループ名または(ワイルドカードを使用して)複数のグループ名を指定します。

1.5 コミット順序番号(CSN)の概要

Oracle GoldenGateを使用する場合、コミット順序番号(CSN)を参照する必要がある場合があります。CSNは、トランザクション一貫性とデータ整合性を維持する目的でトランザクションを識別するためにOracle GoldenGateが作成する識別子です。これにより、トランザクションがデータベースにコミットされた時点を一意に識別します。

CSNは、トランザクション・ログでExtractの位置を指定する場合、証跡でReplicatの位置を再指定する場合、またはその他の目的で必要になることがあります。変換関数の中にはこれを返すものがあります。また、レポートおよび一部のGGSCI出力に含まれます。

CSNの詳細とデータベースごとのCSN値のリストは、コミット順序番号についてを参照してください。

2 Oracle GoldenGateのグローバリゼーション・サポート

この章では、ネイティブ言語のエンコーディングでのデータ処理を可能にする、Oracle GoldenGateのグローバリゼーション・サポートについて説明します。

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

- キャラクタ・セットの維持

- Unicodeおよびネイティブ文字の使用

2.1 キャラクタ・セットの維持

データをネイティブ言語のエンコーディングで処理するために、Oracle GoldenGateでは、データベースのキャラクタ・セットとオペレーティング・システム・ロケール(該当する場合)が考慮されます。

2.1.1 データベース構造メタデータのキャラクタ・セット

Oracle GoldenGateでは、カタログ、スキーマ、表および列の名前は、ソース・データベースおよびターゲット・データベースのキャラクタ・セット・エンコーディングに従って、ネイティブ言語で処理されます。この処理は、パラメータ・ファイルとコマンド・インタプリタにも適用されます(それらはオペレーティング・システム・ロケールに従って処理されます)。これらのオブジェクトは、クライアント・インタフェース全般、コンソールおよびファイルに、ローカライズ形式で表示されます。

2.1.2 文字型データのキャラクタ・セット

Oracle GoldenGateの適用プロセス(Replicat)では、文字型の列にデータが含まれている場合に、あるキャラクタ・セットから別のキャラクタ・セットへのデータ変換がサポートされます。キャラクタ・セット変換のサポートは、TABLE文またはMAP文のCOLMAP句またはUSEDEFAULTS句で実行される列から列へのマッピングに限定されています。列変換関数、SQLEXECまたはTOKENS機能ではサポートされません。

キャラクタ・セット、キャラクタ・セット間の変換、およびデータ・マッピングの詳細は、データのマッピングおよび操作を参照してください。

2.1.3 データベース接続のキャラクタ・セット

ExtractプロセスおよびReplicatプロセスは、データベースへの接続時にセッション・キャラクタ・セットを使用します。Oracleデータベースの場合、セッション・キャラクタ・セットはExtractとReplicatの両方で設定されるデータベース・キャラクタ・セットと同様に設定されています。Sybase、TeradataおよびMySQLの場合、セッション・キャラクタ・セットはSOURCEDBおよびTARGETDBのSESSIONCHARSETオプション、またはGLOBALSファイルでグローバルに設定されるSESSIONCHARSETパラメータから取得されます。その他のデータベース・タイプの場合は、プログラムによって取得されます。また、Oracle GoldenGateプロセスは、Oracle GoldenGateとデータベースの間の通信やデータ転送(SQL問合せ、フェッチ、データ適用など)にもセッション・キャラクタ・セットを使用します。

2.1.4 テキスト入力およびテキスト出力のキャラクタ・セット

Oracle GoldenGateでは、次の場所で、ホスト・オペレーティング・システムのデフォルト・キャラクタ・セットでのテキスト入力およびテキスト出力がサポートされます。

- コンソール

- コマンドラインでの入力および出力

- FORMATASCII、FORMATSQL、FORMATXMLの各パラメータ、パラメータ・ファイル、データ定義ファイル、エラー・ログ、プロセス・レポート、破棄ファイルなどのテキスト・ファイル、およびOracle GoldenGateユーザーがOracle GoldenGate環境の構成、実行、監視に使用するその他の判読可能なファイル

プラットフォームで、必要なキャラクタ・セットがオペレーティング・システムのデフォルトとしてサポートされていない場合は、次のパラメータを使用してキャラクタ・セットを指定できます。

- CHARSETパラメータ(プロセスがパラメータ・ファイルの読取りに使用するキャラクタ・セットを指定する場合)

- DEFSFILEパラメータのCHARSETオプション(特定のキャラクタ・セットでデータ定義ファイルを生成する場合)

GGSCIコマンド・コンソールは、キーボードとOBEYファイルの入力、およびコンソール出力に関して、常にローカル・オペレーティング・システムのキャラクタ・セットで動作します。

2.2 Unicodeおよびネイティブ文字の使用

Oracle GoldenGateでは、Unicodeで、またはWindows、UNIXおよびLinuxオペレーティング・システムのネイティブ文字エンコーディングで文字を表すためのエスケープ・シーケンスの使用がサポートされています。エスケープ・シーケンスは、オペレーティング・システムで必要な文字がサポートされていない場合に、または必要に応じて他の目的で使用できます。このサポートの詳細は、エスケープ・シーケンスのサポートを参照してください。

3 Managerおよびネットワーク通信の構成

この章では、Managerプロセスの構成方法とローカルおよびリモートのネットワーク通信に使用するポートの指定方法について説明します。

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

- Managerプロセスの概要

- Managerへのローカル通信用ポートの割当て

- ファイアウォール経由でのリモート接続に使用するポートの管理

- インターネット・プロトコルの選択

- 推奨されるManagerパラメータの使用

- Managerパラメータ・ファイルの作成

- Managerの起動

- Managerの停止

3.1 Managerプロセスの概要

Oracle GoldenGateを構成して実行するためには、Oracle GoldenGateのソース・システムとターゲット・システムのすべて、および中間システム(構成内で使用している場合)でManagerプロセスを実行する必要があります。Managerは、Oracle GoldenGateプロセスのインスタンス化、ポート番号の割当ておよびファイル・メンテナンスを行うコントローラ・プロセスです。Managerプロセスとその子プロセス、およびそれに関連するプログラムとファイルを合せてOracle GoldenGateインスタンスを構成します。Managerプロセスは次の機能を実行します。

- Oracle GoldenGateプロセスの起動

- 動的プロセスの起動

- Collectorプロセスの起動

- プロセスのポート番号の管理。(Oracle GoldenGateのポートはすべて構成可能です。)

- 証跡管理の実行

- イベント、エラーおよびしきい値レポートの作成

Oracle GoldenGateのインストール環境ごとに1つのManagerがあります。1つのManagerで、Oracle GoldenGateの複数の抽出プロセスおよびレプリケーション・プロセスに対応できます。

3.2 Managerへのローカル通信用ポートの割当て

Managerプロセスは、Oracle GoldenGateのインストール環境ごとに、他のローカルOracle GoldenGateプロセスと通信を行うための専用ポートを必要とします。このポートを指定するには、Managerパラメータ・ファイルのPORTパラメータを使用します。次のガイドラインに従ってください。

- Managerのデフォルト・ポート番号は7809です。デフォルト・ポート番号(使用可能であれば、こちらを推奨)または任意の別のポートを指定する必要があります。

- これは、予約されていない制限なしのポートである必要があります。

- システム上のManagerインスタンスごとに異なるポート番号を使用する必要があります。

PORTの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

3.3 ファイアウォール経由でのリモート接続に使用するポートの管理

Oracle GoldenGateのターゲットの場所でファイアウォールを使用している場合、リモートOracle GoldenGateプロセスからの動的TCP/IP通信を受信するには、ターゲット・システムに追加のポートが必要です。具体的には次のポートです。

- リモートのオンラインExtractプロセスから伝播されたトランザクション・データを受信するためにローカルのManagerが起動する各Collectorプロセス用に1ポート。Extractプロセスがターゲットにデータを送信すると、ターゲットのManagerが専用のCollectorプロセスを起動します。

- ローカルのManagerがリモート・タスクの一環として起動する各Replicatプロセス用に1ポート。リモート・タスクは初期ロードに使用されるもので、RMTTASKパラメータで指定します。このポートは、リモートExtractプロセスからの着信リクエストを受信するために使用されます。RMTTASKの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

- ローカルOracle GoldenGate構成の拡張に必要な場合は、追加で数ポート。

- 他のOracle GoldenGate製品がOracle GoldenGateのローカル・インスタンスとやり取りする場合は、その製品用のポート(各製品のドキュメントを参照)。

これらのポートを指定するには、Managerパラメータ・ファイルのDYNAMICPORTLISTパラメータを使用します。次のガイドラインに従ってください。

- 次の形式を自由に組み合せて、最大5000のポートを指定できます。

7830, 7833, 7835
7830-7835
7830-7835, 7839

- 予約されていない制限なしのポートである必要があります。

- システム上のManagerインスタンスごとに異なるポート・リストを使用する必要があります。

必須パラメータではありませんが、最高のパフォーマンスを得るためにDYNAMICPORTLISTを使用することを強くお薦めします。Collectorプロセスの役割は、使用可能なポートを見つけてバインドすることですが、有効なポートの既知のリストがあれば、このプロセスが迅速化されます。DYNAMICPORTLISTがない(または、DYNAMICPORTLISTに十分な数のポートが指定されていない)場合、Collectorはポート7840を使用してリモート・リクエストを行おうとします。7840が使用できない場合、Collectorは使用可能なポートが見つかるまで番号を1ずつ増やします。これが原因で、リモート・リクエストの受入れが遅れる可能性があります。CollectorがDYNAMICPORTLISTリスト内のポートを使い果すと、次の処理が発生します。

- Managerは、プロセス・レポートおよびOracle GoldenGate ggserrログにエラーを記録します。

- Collectorは、Oracle GoldenGate tcperrsファイルのルールに基づいて再試行します。tcperrsファイルの詳細は、「TCP/IPエラーの処理」を参照してください。

DYNAMICPORTLISTの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

3.4 インターネット・プロトコルの選択

デフォルトでは、Oracle GoldenGateは接続が成功する可能性を最大限に高めるために、次の優先順位でソケットを選択します。

- IPv6デュアルスタック

- IPv4(IPv6デュアルスタックが使用できない場合)

- IPv6

ネットワーク内にデュアルスタック・モードをサポートしていないIPv6ネットワーク機器がある場合、USEIPV6パラメータを使用すると、Oracle GoldenGateにすべての接続でIPv6を使用させることができます。これは、Oracle GoldenGateインスタンスのすべてのプロセスに適用されるGLOBALSパラメータの1つです。USEIPV6を使用するときは、接続障害が発生しないように、ネットワーク全体をIPv6対応にする必要があります。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

3.5 推奨されるManagerパラメータの使用

次のパラメータはManagerプロセスではオプションですが、使用することをお薦めします。

- AUTOSTART: Managerの起動時にExtractプロセスおよびReplicatプロセスを起動します。このパラメータはクラスタ構成では必須であり、システムの起動後ただちにOracle GoldenGateアクティビティを開始する必要がある場合に便利です。(Managerが起動ルーチンの一部であることが必要です。)同じパラメータ・ファイルで複数のAUTOSTART文を使用できます。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

- AUTORESTART: 異常終了の後にExtractプロセスおよびReplicatプロセスを再起動します。このパラメータはクラスタ構成では必須ですが、どのような構成でも処理を確実に継続するのに便利です。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

- PURGEOLDEXTRACTS: Oracle GoldenGateによる処理が終了した証跡ファイルを消去します。PURGEOLDEXTRACTSを使用しない場合、消去は実行されないため、証跡ファイルが大量のディスク領域を消費する可能性があります。最適な結果を得るため、PURGEOLDEXTRACTSはExtractパラメータやReplicatパラメータとしてではなく、Managerパラメータとして使用してください。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

- STARTUPVALIDATIONDELAY | STARTUPVALIDATIONDELAYCSECS: Managerがプロセスの実行ステータスを検証するまでの遅延時間を設定します。起動時に検証を行うことで、Oracle GoldenGateユーザーは、エラー・メッセージやプロセス・レポートが生成される前に、失敗したプロセスを認識できます。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

3.6 Managerパラメータ・ファイルの作成

必須のポート情報とオプションのパラメータでManagerを構成するには、次の手順に従ってパラメータ・ファイルを作成します。Oracle GoldenGateのパラメータ・ファイルの詳細は、Oracle GoldenGateプロセス・インタフェースのスタート・ガイドを参照してください。

注意:

Oracle GoldenGateがクラスタ内に位置する場合は、ベンダーのドキュメントに従ってクラスタ・アプリケーション内でManagerプロセスを構成し、Oracle GoldenGateが他のアプリケーションに適切にフェイルオーバーされるようにしてください。クラスタへのOracle GoldenGateのインストールの詳細は、使用中のデータベースに対応するOracle GoldenGateのドキュメントを参照してください。

1. Oracle GoldenGateディレクトリからGGSCIプログラムを実行して、Oracle GoldenGateソフトウェア・コマンド・インタフェース(GGSCI)を開きます。

2. GGSCIで、次のコマンドを発行してManagerのパラメータ・ファイルを編集します。

EDIT PARAMS MGR

3. Managerプロセスに使用するパラメータを1行に1つずつ追加します。

4. ファイルを保存して閉じます。

例3-1 UNIXシステムでのManagerファイルの例

PORT 7809
DYNAMICPORTLIST 7810-7820, 7830
AUTOSTART ER t*
AUTORESTART ER t*, RETRIES 4, WAITMINUTES 4
STARTUPVALIDATIONDELAY 5
USERIDALIAS mgr1
PURGEOLDEXTRACTS /ogg/dirdat/tt*, USECHECKPOINTS, MINKEEPHOURS 2

次に示すのは、必須および推奨のパラメータを使用したUNIXシステムでのManagerパラメータ・ファイルの例です。

3.7 Managerの起動

Managerは、他のOracle GoldenGateプロセスが起動する前に実行されている必要があります。Managerは次の方法を使用して起動できます。

- オペレーティング・システムのコマンドライン。手順については、Managerをオペレーティング・システムのコマンド・シェルから起動する手順を参照してください。

- GGSCIコマンドライン・インタフェース。手順については、ManagerをGGSCIから起動する手順」を参照してください。

- Windowsシステムの「サービス」アプレット(Managerをサービスとしてインストールした場合)。Windowsのドキュメントを参照するか、システム管理者に連絡してください。

- クラスタ・アドミニストレータ・ツール(システムがWindowsクラスタの一部である場合)。この方法は、Managerリソースをオンラインにする場合に推奨されます。クラスタのドキュメントを参照するか、システム管理者に連絡してください。

- UNIXまたはLinuxクラスタのクラスタ・ソフトウェア。クラスタ・ベンダーから提供されているドキュメントを参照して、Managerをクラスタから起動するか、GGSCIまたはオペレーティング・システムのコマンドラインを使用して起動するかを確認してください。

3.7.1 Managerをオペレーティング・システムのコマンド・シェルから起動する手順

Managerをオペレーティング・システムのコマンド・シェルから起動するには、次のコマンドを発行します。

mgr paramfile parameter_file [reportfile report_file]

reportfile引数はオプションです。この引数は、Oracle GoldenGateのインストール場所にあるデフォルトのdirrptディレクトリ以外の場所にManagerプロセス・レポートを格納する場合に使用できます。

3.7.2 ManagerをGGSCIから起動する手順

ManagerをGGSCIから起動するには、Oracle GoldenGateディレクトリでGGSCIを実行してから、次のコマンドを発行します。

START MANAGER

注意:

ユーザー・アカウント制御を有効にした状態でコマンドラインまたはGGSCIからManagerを起動すると、プログラム実行の許可または拒否を求めるUACプロンプトが表示されます。

3.8 Managerの停止

Managerは、ユーザーが停止するまで無制限に実行されます。通常、同期アクティビティの実行中は、常にManagerが実行されている必要があります。Managerは、重要な監視機能およびメンテナンス機能を実行するため、Managerが稼働していないとプロセスを起動できません。

3.8.1 UNIXおよびLinuxでのManagerの停止

UNIXおよびLinux(z/OS上のUSSを含む)では、GGSCIのSTOP MANAGERコマンドを使用してManagerを停止する必要があります。

STOP MANAGER [!]

説明:

!は、ユーザー確認なしでManagerを停止します。

UNIXまたはLinuxクラスタの場合、クラスタ・ベンダーから提供されているドキュメントを参照して、Managerをクラスタから停止する必要があるか、GGSCIを使用して停止する必要があるかを確認してください。

3.8.2 WindowsでのManagerの停止

Windowsでは、「サービス」アプレットからManagerを停止できます(Managerをサービスとしてインストールしている場合)。Windowsのドキュメントを参照するか、システム管理者に連絡してください。

Managerがサービスとしてインストールされていない場合、GGSCIのSTOP MANAGERコマンドを使用してManagerを停止できます。

STOP MANAGER [!]

Windowsクラスタでは、クラスタ・アドミニストレータからManagerリソースをオフラインにする必要があります。GGSCIインタフェースからManagerを停止しようとすると、クラスタ・モニターがその操作をリソース障害と解釈し、リソースを再度オンラインにしようとします。GGSCIを介して起動リクエストが何度も行われると、最終的にはManagerクラスタ・リソースの起動しきい値を超えてしまい、クラスタ・モニターがManagerリソースを障害状態としてマークします。

4 Oracle GoldenGateプロセス・インタフェースのスタート・ガイド

この章では、Oracle GoldenGateユーザーが、GGSCI(Oracle GoldenGateソフトウェア・コマンド・インタフェース)、バッチ・スクリプトとシェル・スクリプトおよびパラメータ・ファイル経由で、プロセスに指示を送る方法について説明します。

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

- GGSCIコマンドライン・インタフェースの使用

- Oracle GoldenGateプロセスの制御

- コマンドの自動化

- Oracle GoldenGateパラメータ・ファイルの使用

- Oracle GoldenGateの入力におけるオブジェクト名の指定

4.1 GGSCIコマンドライン・インタフェースの使用

GGSCIは、Oracle GoldenGateのコマンドライン・インタフェースです。GGSCIを使用して、Oracle GoldenGateを構成、制御および監視する全種類のコマンドを発行できます。

GGSCIを起動するには、ディレクトリをOracle GoldenGateインストール・ディレクトリに変更してから、ggsci実行可能ファイルを実行します。

Oracle GoldenGateコマンドの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

4.1.1 コマンド引数でのワイルドカードの使用

一部のOracle GoldenGateコマンドでワイルドカードを使用して、複数のExtractグループおよびReplicatグループを1つの単位として制御できます。Oracle GoldenGateでサポートされるワイルドカード記号は、アスタリスク(*)です。アスタリスクは、任意の数の文字を表します。たとえば、名前に文字Xを含むすべてのExtractグループを起動するには、次のコマンドを発行します。

START EXTRACT *X*

4.1.2 コマンド・インタフェースのグローバリゼーション・サポート

コマンド入力と関連のコンソール出力はすべて、ローカル・オペレーティング・システムのデフォルト・キャラクタ・セットで表示されます。ローカル・オペレーティング・システムのキャラクタ・セットと互換性のない文字を指定するには、Unicode表記法を使用します。たとえば、次のUnicode表記は、名前にユーロ記号が含まれている表名に相当します。

ADD TRANDATA \u20AC1

Unicode表記の使用方法の詳細は、「エスケープ・シーケンスのサポート」を参照してください。

注意:

Oracle GoldenGateのグループ名は大/小文字が区別されません。

4.1.3 コマンド履歴の使用

次のツールを使用すると、複数のコマンドを簡単に実行できます。

- 以前実行したコマンドのリストを表示するには、HISTORYコマンドを使用します。

- 以前のコマンドを編集せずに再実行するには、!コマンドを使用します。

- 以前のコマンドを編集してから再実行するには、FCコマンドを使用します。

4.1.4 く使用するコマンド・シーケンスの保存と呼出し

よく使用する一連のコマンドは、OBEYファイルおよびOBEYコマンドを使用して自動化できます。OBEYファイルでは、ローカル・オペレーティング・システムのキャラクタ・セットが認識されます。そのキャラクタ・セットと互換性のない文字を指定するには、Unicode表記法を使用します。Unicode表記の使用方法の詳細は、「エスケープ・シーケンスのサポート」を参照してください。

OBEYを使用する手順

1. 1行に1つのコマンドを含むテキスト・ファイルを作成して保存します。これがユーザーのOBEYファイルになります。オペレーティング・システムでサポートされる任意の名前を指定します。OBEYファイル内に他のOBEYファイルをネストできます。

2. GGSCIを実行します。

3. (オプション)ネストしたOBEYファイルを含むOBEYファイルを使用する場合、次のコマンドを発行します。このコマンドによって、GGSCIの現在のセッションでネストしたOBEYファイルを使用できるようになります。ネストしたOBEYファイルを使用する場合、常にこのコマンドが必要です。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

ALLOWNESTED

4. GGSCIで、OBEYコマンドを使用してOBEYファイルを呼び出します。

OBEY file_name

説明:

file_nameは、OBEYファイルの相対名または完全修飾名です。

例4-1 OBEYコマンド・ファイル

ADD EXTRACT myext, TRANLOG, BEGIN now
START EXTRACT myext

ADD REPLICAT myrep, EXTTRAIL /ggs/dirdat/aa
START REPLICAT myrep

INFO EXTRACT myext, DETAIL
INFO REPLICAT myrep, DETAIL

次の例は、OBEYコマンドと組み合せて使用するOBEYコマンド・ファイルを示しています。これによって、ExtractグループおよびReplicatグループが作成されて起動され、処理情報が取得されます。

OBEYコマンドの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

4.2 Oracle GoldenGateプロセスの制御

Oracle GoldenGateプロセスを制御する標準の方法は、GGSCIインタフェースを介する方法です。通常、Oracle GoldenGateプロセスが本番設定で初めて起動されるのは、初期同期プロセス(インスタンス化プロセスとも呼ばれる)時です。ただし、メンテナンス、アップグレード、トラブルシューティングなどの各種タスクを実行する場合は、必要に応じてプロセスを停止したり再起動する必要があります。

ここでは基本的な構文について説明しています。その他の使用可能な構文については、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

4.2.1 Managerの制御

レプリケーション処理を停止する場合を除き、Managerを停止しないでください。

Managerを停止する手順

1. Oracle GoldenGateディレクトリからGGSCIを実行します。

2. GGSCIで次のコマンドを発行します。

{START | STOP [!]} MANAGER

説明:

!では、Managerを停止するかどうかを確認するプロンプトを回避します。

注意:

ユーザー・アカウント制御を有効にした状態でコマンドラインまたはGGSCIからManagerを起動すると、プログラム実行の許可または拒否を求めるUACプロンプトが表示されます。

4.2.2 ExtractおよびReplicatの制御

この項では、ExtractプロセスとReplicatプロセスを制御する基本的な方法について説明します。その他のコマンド・オプションは、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

ExtractまたはReplicatを起動する手順

START {EXTRACT | REPLICAT} group_name

説明:

group_nameは、ExtractまたはReplicatグループの名前か、またはグループのワイルドカード・セット(*やfin*など)です。

ExtractまたはReplicatを正常に停止する手順

STOP {EXTRACT | REPLICAT} group_name

説明:

group_nameは、ExtractまたはReplicatグループの名前か、またはグループのワイルドカード・セット(*やfin*など)です。

Replicatを強制的に停止する手順

STOP REPLICAT group_name !

現在のトランザクションは中断され、プロセスは即座に停止されます。Extractを強制的に停止することはできません。

STOPで停止できないプロセスを強制終了する手順

KILL {EXTRACT | REPLICAT} group_name

プロセスを強制終了すると正常な停止は行われず、チェックポイント情報が失われる可能性があります。

複数のプロセスを同時に制御する手順

command ER wildcard specification

説明:

- commandは、KILL、STARTまたはSTOPです。

- wildcard specificationは、コマンドを適用するプロセス・グループの名前のワイルドカード指定です。コマンドは、ワイルドカードに適合するすべてのExtractおよびReplicatグループに適用されます。Oracle GoldenGateでは、最大100,000個のワイルドカード・エントリがサポートされます。

4.2.3 ExtractおよびReplicatの削除

この項では、ExtractプロセスとReplicatプロセスを削除する基本的な方法について説明します。その他のコマンド・オプションは、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

Extractグループを削除する手順

1. GGSCIを実行します。

2. Extractデータベース・ユーザー(または同じ権限を持つユーザー)としてDBLOGINコマンドを発行します。ローカル資格証明ストアの有無に応じて、次のいずれかのコマンドを使用できます。

DBLOGIN [SOURCEDB dsn] {USERID user, PASSWORD password [encryption_options] | USERIDALIAS alias [DOMAIN domain]}

3. Extractプロセスを停止します。
STOP EXTRACT group_name

4. 次のコマンドを発行します。
DELETE EXTRACT group_name

5. (Oracle)Extractグループをデータベースから登録解除します。

UNREGISTER EXTRACT group_name,database_name

Replicatグループを削除する手順

1. Replicatプロセスを停止します。

STOP REPLICAT group_name

2. GGSCIで次のいずれかのコマンドを発行して、データベースにログインします。

DBLOGIN [SOURCEDB dsn] {USERID user, PASSWORD password [encryption_options] | USERIDALIAS alias [DOMAIN domain]}

説明:

- SOURCEDB dsnでは、データソース名を指定します(接続情報の一部として必要な場合)。

- USERID user、PASSWORD passwordでは、データベース・ログイン資格証明を明示的に指定します。

- USERIDALIAS alias [DOMAIN domain]では、ローカル資格証明ストアに格納されている資格証明の別名と(オプションで)ドメインを指定します。

- encryption_optionsでは、パスワードを暗号化するオプションの1つを指定します。

3. 次のコマンドを発行してグループを削除します。

DELETE REPLICAT group_name

Replicatグループを削除しても、チェックポイント表のチェックポイントは保持されます(使用されている場合)。プロセス・グループを削除しても、パラメータ・ファイルは失われません。同じパラメータ・ファイルを使用して同じグループを再作成できます。また、パラメータ・ファイルを削除して、グループの構成を完全に削除することもできます。

4.3 コマンドの自動化

Oracle GoldenGateは、スクリプトまたはジョブを介したコマンドの発行をサポートしています。この項では、UNIXベースまたはLinuxベースのプラットフォームおよびIBMiプラットフォームでのこれらのオプションについて説明します。

UNIXシステムまたはLinuxシステム、あるいはUNIXまたはLinuxアプリケーションをサポートするランタイム環境では、GGSCIを実行して入力ファイルを呼び出すことで、起動スクリプト、停止スクリプト、フェイルオーバー・スクリプトなどのスクリプトからOracle GoldenGateコマンドを発行できます。スクリプト・ファイルは、オペレーティング・システムのキャラクタ・セットでエンコードされている必要があります。オペレーティング・システムのキャラクタ・セットがサポートしていない文字には、Unicode表記法を使用できます。スクリプトを作成する前に、「コマンド・インタフェースのグローバリゼーション・サポート」を参照してください。

スクリプトを入力する手順

オペレーティング・システムのコマンドラインから次の構文を使用します。

ggsci < input_file

説明:

- 山カッコ(<)文字によりファイルがGGSCIプログラムに渡されます。

- input_fileは、発行するコマンドが発行順に含まれた、OBEYファイルと呼ばれるテキスト・ファイルです。

Oracle GoldenGateコマンドの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

注意:

バッチ・ファイルからManagerプロセスを停止するには、必ずSTOP MANAGERコマンドの最後に!引数を追加してください。そうしないと、GGSCIによってレスポンスを要求するプロンプトが発行され、プロセスがループに陥ります。Managerを停止する方法の詳細は、「Managerの停止」を参照してください。

4.3.1 IBM i CLIを介したコマンドの発行

Oracle GoldenGate for IBM DB2 for iには、ごく一般的なOracle GoldenGateプログラムの操作をIBM iコマンドライン・インタフェース(CLI)から操作できるようにする一連のネイティブIBM iコマンドが組み込まれています。これらのコマンドはネイティブであるため、PASE環境から実行する必要はありません。このサポートにより、コマンドを対話型で発行することも、一般的なジョブ発行ツール(SBMJOBなど)を使用してOracle GoldenGateを非対話型で操作することもできます。

コマンドは次のとおりで、同名のOracle GoldenGateプログラムに対応しています。これらはOracle GoldenGateインストール・ライブラリ内にあります。

DEFGEN

EXTRACT

GGSCI

KEYGEN

LOGDUMP

MGR

REPLICAT

これらのコマンドの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

4.4 Oracle GoldenGateパラメータ・ファイルの使用

ほとんどのOracle GoldenGate機能は、パラメータ・ファイルに指定されたパラメータによって制御されます。パラメータ・ファイルは、関連するOracle GoldenGateプロセスによって読み取られるプレーン・テキスト・ファイルです。Oracle GoldenGateでは、GLOBALSファイルとランタイム・パラメータ・ファイルという2種類のパラメータ・ファイルが使用されます。

4.4.1 パラメータ・ファイルのグローバリゼーション・サポート

Oracle GoldenGateでは、ローカル・オペレーティング・システムのデフォルト・キャラクタ・セットでパラメータ・ファイルが作成されます。ローカル・プラットフォームで、必要なキャラクタ・セットがオペレーティング・システムのデフォルトとしてサポートされていない場合は、CHARSETパラメータをグローバルに、またはプロセス単位で使用して、パラメータ・ファイルのキャラクタ・セットを指定できます。

キャラクタ・セットの非互換性による問題を回避するため、パラメータ・ファイルは、関連プロセスが実行されるサーバーで作成または編集します。あるシステム(Windowsラップトップなど)で作成したファイルを、Oracle GoldenGateがインストールされている、オペレーティング・システムのキャラクタ・セットが異なるUNIXサーバーに転送するのは避けてください。Oracle GoldenGateには、パラメータ・ファイルを別のシステムで作成する必要がある場合に、キャラクタ・セットの非互換性の問題を解決するためのツールがいくつか用意されています。

- CHARSETパラメータを使用すると、互換性のあるキャラクタ・セットをパラメータ・ファイルに指定できます。このパラメータは、指定したキャラクタ・セットでファイルを記述できるようにするもので、パラメータ・ファイルの1行目に置く必要があります。ファイルを別のシステムに転送したら、そのシステムでは編集しないでください。

- ファイルが使用されるオペレーティング・システムのキャラクタ・セットと互換性のない文字には、Unicode表記法を代用できます。Unicode表記の使用方法の詳細は、「エスケープ・シーケンスのサポート」を参照してください。

CHARSETパラメータの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

4.4.2 GLOBALSファイルの操作

GLOBALSファイルには、Oracle GoldenGateインスタンス全体に関連するパラメータが格納されます。これは、Extractなどの特定のプロセスと関連付けられているランタイム・パラメータとは対照的です。GLOBALSファイルのパラメータは、Oracle GoldenGateインスタンスのすべてのプロセスに適用されますが、特定のプロセスのパラメータによって上書きされることがあります。GLOBALSパラメータ・ファイルは、Oracle GoldenGate環境に必要な場合と必要でない場合があります。

GLOBALSを使用する場合、GGSCIなどのOracle GoldenGateプロセスを起動する前にこのファイルが存在している必要があります。GGSCIプログラムは、GLOBALSファイルを読み取って、各パラメータを適切なプロセスに渡します。

GLOBALSファイルの作成手順

1. Oracle GoldenGateのインストール場所から、GGSCIを実行して次のコマンドを入力するか、テキスト・エディタでファイルを開きます。

EDIT PARAMS ./GLOBALS

注意:

GLOBALSファイルはOracle GoldenGateインストール・ファイルのルートにあるため、このコマンドの./の部分を使用する必要があります。

2. ファイルにGLOBALSパラメータを1行に1つずつ入力します。

3. ファイルを保存します。テキスト・エディタを使用した場合、Oracle GoldenGateのインストール・ディレクトリのルートにGLOBALS(大文字、ファイル拡張子なし)という名前でファイルを保存します。GGSCIで正しく作成すると、ファイルは自動的にこの形式で保存されます。このファイルは移動しないでください。

4. GGSCIを終了します。コマンドを発行する前に、またはGLOBALSファイルを参照するプロセスを起動する前に、新規GGSCIセッションを開始する必要があります。

4.4.3 ランタイム・パラメータの操作

ランタイム・パラメータによって、次のようなOracle GoldenGateの同期の様々な機能を制御します。

- データの選択、マッピング、変換およびレプリケーション

- DDLおよび順序の選択、マッピングおよびレプリケーション(サポートされる場合)

- エラーの解決

- ロギング

- ステータスおよびエラーのレポート

- システム・リソースの使用方法

- 起動時および実行時の動作

Managerプロセスまたは1つのExtract(あるいはReplicat)グループに対するアクティブなパラメータ・ファイルは1つのみです。ただし、OBEYパラメータを使用することで、他のファイルのパラメータを使用できます。パラメータ・ファイルの使用を簡略化する方法の詳細は、「パラメータ・ファイルの作成の簡略化」を参照してください。

パラメータには、次のようにグローバル・パラメータ(GLOBALSパラメータとは異なります)とオブジェクト固有パラメータの2種類があります。

- グローバル・パラメータは、パラメータ・ファイルに指定されているすべてのデータベース・オブジェクトに適用されます。たとえば、プロセスの動作に影響するパラメータや、メモリー使用率などの機能に影響するパラメータがあります。例4-2および例4-3のUSERIDALIASは、グローバル・パラメータの例です。ほとんどの場合、グローバル・パラメータは、ファイル内でデータベース・オブジェクトを指定するパラメータ(たとえば、例4-2および例4-3のTABLE文やMAP文)より前の任意の場所に指定できます。グローバル・パラメータは、ファイル内で1回のみリストされる必要があります。複数回リストされると、最後のインスタンスのみがアクティブになり、他のすべてのインスタンスは無視されます。

- オブジェクト固有パラメータでは、データベース・オブジェクトの異なるセットに対して異なる処理ルールを適用できます。例4-3のGETINSERTSおよびIGNOREINSERTSは、オブジェクト固有パラメータの例です。どちらのパラメータも、影響を受けるオブジェクトを指定するMAP文の前にあります。オブジェクト固有パラメータは、ファイルにリストされている順序で有効になります。

例4-2と例4-3に、ExtractおよびReplicatの基本パラメータ・ファイルの例を示します。コメントの先頭にはハイフンが2つ付いています。

前述の例は、大/小文字が区別されないOracleデータベースを反映したもので、オブジェクト名がTABLE文に大文字で指定されています。大/小文字が区別されないOracleデータベースの場合、パラメータ・ファイルに名前をどのように入力しても(大文字でも、小文字でも、大文字と小文字が混在していても)違いは生じません。他のデータベースの場合は、オブジェクト名の大/小文字が問題になることがあります。オブジェクト名の指定の詳細は、「Oracle GoldenGateの入力におけるオブジェクト名の指定」を参照してください。

例4-3に示したReplicatのサンプルでの一重引用符と二重引用符の使用方法に注意してください。オブジェクト名の大/小文字を区別するには引用符が必要になるデータベース(Oracleなど)の場合、大/小文字が区別されるオブジェクト名はパラメータ・ファイルでも二重引用符で囲む必要があります。大/小文字が区別されるその他のデータベースでは、データベースに保存されているとおりに名前を指定します。名前およびリテラルの指定方法の詳細は、「Oracle GoldenGateの入力におけるオブジェクト名の指定」を参照してください。

例4-2 Extractのサンプル・パラメータ・ファイル

-- Extract group name
EXTRACT capt
-- Extract database user login, with alias to credentials in the credential store.
USERIDALIAS ogg1
-- Remote host to where captured data is sent in encrypted format:
RMTHOSTOPTIONS sysb, MGRPORT 7809, ENCRYPT AES192 KEYNAME mykey
-- Encryption specification for trail data
ENCRYPTTRAIL AES192
-- Remote trail on the remote host
RMTTRAIL /ggs/dirdat/aa
-- TABLE statements that identify data to capture.
TABLE FIN.*;
TABLE SALES.*;

例4-3 Replicatのサンプル・パラメータ・ファイル

-- Replicat group name
REPLICAT deliv
-- Replicat database user login, with alias to credentials in the credential store
USERIDALIAS ogg2
-- Error handling rules
REPERROR DEFAULT, ABEND
-- Ignore INSERT operations
IGNOREINSERTS
-- MAP statement to map source objects to target objects and
-- specify column mapping
MAP "fin"."accTAB", TARGET "fin"."accTAB",
COLMAP ("Account" = "Acct",
"Balance" = "Bal",
"Branch" = "Branch");
-- Get INSERT operations
GETINSERTS
-- MAP statement to map source objects to target objects and
-- filter to apply only the 'NY' branch data.
MAP "fin"."teller", TARGET "fin"."tellTAB",
WHERE ("Branch" = 'NY');

4.4.4 パラメータ・ファイルの作成

パラメータ・ファイルをオペレーティング・システムのキャラクタ・セットで記述する場合はGGSCIの使用をお薦めしますが、CHARSETパラメータを使用して別のキャラクタ・セットでファイルを記述する場合は、GGSCIのかわりにテキスト・エディタを使用してください。CHARSETパラメータの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

GGSCIでパラメータ・ファイルを作成する方法

テキスト・エディタでパラメータ・ファイルを作成する方法

4.4.4.1 GGSCIでパラメータ・ファイルを作成する方法

パラメータ・ファイルを作成するには、GGSCIユーザー・インタフェース内でEDIT PARAMSコマンドを使用するか、テキスト・エディタを直接使用します。GGSCIを使用する場合、標準のテキスト・エディタを使用しますが、パラメータ・ファイルは正しいファイル名で適切なディレクトリに自動的に保存されます。

GGSCIのEDIT PARAMSを使用してパラメータ・ファイルを作成すると、Oracle GoldenGateディレクトリのdirprmサブディレクトリに保存されます。dirprm以外のディレクトリにパラメータ・ファイルを作成することは可能ですが、プロセス・グループの作成時にもADD EXTRACTまたはADD REPLICATコマンドのPARAMSオプションでそのフルパス名を指定する必要があります。パラメータ・ファイルは、ExtractグループまたはReplicatグループに一度関連付けたら、処理の開始後にOracle GoldenGateを適切に動作させるため、元の場所から移動しないでください。

EDIT PARAMSコマンドによって、GGSCIインタフェース内で次のテキスト・エディタが起動されます。

- Microsoft Windowsシステムの場合、メモ帳

- UNIXおよびLinuxシステムの場合、viエディタSSHまたはxtermに接続されている場合、DB2 for iはviのみをサポートします。詳細は、テキスト・エディタでパラメータ・ファイルを作成する方法を参照してください。

注意:

GGSCIインタフェースを通じてデフォルト・エディタを変更するには、SET EDITORコマンドを使用します。Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

1. Oracle GoldenGateがインストールされているディレクトリからGGSCIを実行します。

2. GGSCIで、次のコマンドを発行してデフォルトのテキスト・エディタを起動します。

EDIT PARAMS group_name

説明:

group_nameは、mgr(Managerプロセスの場合)か、ファイルを作成するExtractグループまたはReplicatグループの名前です。ExtractまたはReplicatのパラメータ・ファイルの名前は、プロセス・グループの名前と同じである必要があります。

次のコマンドでは、extoraという名前のExtractグループのパラメータ・ファイルを作成または編集します。

EDIT PARAMS extora

次のコマンドでは、Managerプロセスのパラメータ・ファイルを作成または編集します。

EDIT PARAMS MGR

3. テキスト・エディタの編集機能を使用して、このファイルを説明するコメント行を必要な数だけ入力します(各コメント行の先頭には必ず2つのハイフン(--)を挿入してください)。

4. コメント以外の行に、Oracle GoldenGateのパラメータを入力します(パラメータ文ごとに新しい行を開始します)。

Oracle GoldenGateのパラメータの構文は次のとおりです。

PARAMETER_NAME argument [, option] [&]

説明:

- PARAMETER_NAMEは、パラメータの名前です。

- argumentは、パラメータの必須引数です。一部のパラメータには引数がありますが、その他のパラメータにはありません。引数間のカンマはオプションです。

EXTRACT myext
USERIDALIAS ogg1
RMTHOSTOPTIONS sysb, MGRPORT 8040, ENCRYPT AES192 KEYNAME mykey
ENCRYPTTRAIL AES 192
RMTTRAIL /home/ggs/dirdat/c1, PURGE
CUSEREXIT userexit.dll MyUserExit, INCLUDEUPDATEBEFORES, &
PARAMS "init.properties"
TABLE myschema.mytable;

- [, option]は、オプション引数です。

- [&]は、前述の例のCUSEREXITパラメータ文のように、複数行にわたるパラメータ文の各行の最後に必要です。ただし、次のものはセミコロンで終わるため、アンパサンドの指定は可能ですが必須ではなく、例外となります。

- MAP

- TABLE

- SEQUENCE

- FILE

- QUERY

注意:

RMTHOSTおよびRMTHOSTOPTIONSパラメータを一緒に指定できます。動的IP割当てが適切に構成されている場合、RMTHOSTパラメータはRMTHOSTOPTIONSに必要ではありません。RMTHOSTOPTIONSが使用されている場合、MGRPORTオプションは無視されます。

5. ファイルを保存して閉じます。

4.4.4.2 テキスト・エディタでパラメータ・ファイルを作成する方法

テキスト・エディタを使用してGGSCIの外部でパラメータ・ファイルを作成できますが、次の点に注意してください。

- パラメータ・ファイルは、そのファイルを所有するExtractグループまたはReplicatグループの名前で保存するか、そのファイルをManagerプロセスが所有する場合はmgrという名前で保存します。.prmというファイル拡張子を使用します。たとえば、extfin.prmやmgr.prmのようになります。

- パラメータ・ファイルは、Oracle GoldenGateのインストール・ディレクトリのdirprmディレクトリに保存します。

- DB2 for iシステムの場合は、SEUまたはEDTFを使用して、5250端末からパラメータ・ファイルを編集できます。SEUを使用する場合は、CPYTOSTMFコマンドを使用してファイルをコピーし、CCSID 1208のエンコーディングおよび*LFの行末を指定する必要があります。F15 (サービス)からEDTFで編集する場合は、ファイルのCCSIDを1208、EOLオプションを*LFに変更する必要があります。
または、IBM Portable Application Solutions Environment for iからRfileコマンドを使用できます。

4.4.5 パラメータ・ファイルの検証

checkprm検証用ネイティブ・コマンドはコマンドラインから実行され、構成可能なアプリケーションと実行環境を使用して、指定されたパラメータ・ファイルの評価を提供します。単純にPASS/FAILを表示するか、各パラメータの値がどのように格納され解釈されるかに関するオプション詳細を付けて表示することもできます。

checkprmへの入力は大/小文字を区別しません。値文字列にスペースが含まれている場合、checkprmは意味のある値を認識できるので、引用符で囲む必要はありません。checkprmにモードが指定されていない場合は、コンポーネントのあらゆるモードに適用可能なすべてのパラメータが使用されます。

checkprmの出力は、想定される次の4つのセクションにまとめられます。

- ヘルプ・メッセージ

- 事前検証エラー

- 検証結果

- パラメータの詳細

一般に事前検証エラーとは、通常のパラメータ検証が実行できなくなるエラー(オプションの欠落やアクセス不可能なパラメータ・ファイルなど)のことです。オプションの値が間違って指定されている場合、そのオプションに対して考えられる入力のリストが表示されます。結果がFAILの場合、各エラーが最終結果メッセージに表示されます。結果がPASSの場合、一部のパラメータに対してさらに実行時検証が行われることを示すメッセージが表示されます。パラメータの詳細出力には、検証コンテキスト、GLOBALS (存在する場合)から読み取られた値、および指定されたパラメータが含まれます。パラメータとオプションは、これらの関係がわかるよう、適切にインデントして出力されます。

表4-1に、checkprmコマンドで使用可能なすべての引数を示します。checkprmを使用して、これらの引数のいずれも使用しない場合、checkprmは自動的にExtractまたはReplicatおよびOracle GoldenGateインストールのプラットフォームとデータベースを検出しようとします。

表4-1 checkprmの引数

引数

目的と動作

None

使用方法情報を表示します

-v

バナーを表示します。他のオプションと組み合せることはできません。

? | help

詳細な使用方法情報(各オプションの使用可能なすべての値など)を表示します。他のオプションと組み合せることはできません。

parameter_file

パラメータ・ファイルの名前を指定します。検証が必要な場合は第1引数にする必要があります。パラメータ・ファイルへの絶対パスを指定する必要があります。例: CHECKPRM ./dirprm/myext.prm。

-COMPONENT | -C

このパラメータ・ファイルを検証する対象の実行中のコンポーネント(アプリケーション)を指定します。このオプションは、ExtractまたはReplicatでは省略可能です(自動検出が試行されるため)。有効な値は次のとおりです。

CACHEFILEDUMP COBGEN CONVCHK CONVPRM DDLCOB DEFGEN EMSCLNT EXTRACT GGCMD GGSCI KEYGEN LOGDUMP

MGR OGGERR REPLICAT RETRACE

REVERSE SERVER GLOBALS

このオプションにデフォルトはありません。

-MODE | -M

実行中のアプリケーションのモードを指定します(該当する場合)。このオプションは省略可能で、ExtractまたはReplicatにのみ適用できます。モードが指定されていない場合、検証はすべてのExtractまたはReplicatモードで実行されます。

このオプションの有効な入力は次のとおりです。

- Classic Extract

- Integrated Extract

- Initial Load Extract

- Remote Task Extract

- Data Pump Extract

- Passive Extract

- Classic Replicat

- Coordinated Replicat

- Integrated Replicat

- Special Run Replicat

- Remote Task

- Replicat All

このオプションの値を入力する際、アプリケーション名はコンポーネントの値と一致する場合にかぎり省略可能です。たとえば、コンポーネントがExtractの場合、""Data Pump Extract"は""Data Pump"と同等です。ただし、コンポーネントがReplicatの場合は無効です。

-PLATFORM | -P

アプリケーションを実行するプラットフォームを指定します。デフォルト値は、このcheckprm実行可能ファイルが実行されているプラットフォームです。

指定できる値は次のとおりです。

AIX HP-OSS HPUX-IT HPUX-PA

Linux OS400 ZOS Solaris SPARC

Solaris x86 Windows x64 All

-DATABASE | -D

アプリケーションを構築する対象のデータベースを指定します。デフォルト値は、Oracle GoldenGateインストール用のデータベースです。

データベース・オプションは次のとおりです。

Generic Oracle 8 Oracle 9i

Oracle 10g Oracle 11g Oracle 12c

Sybase DB2LUW 9.5 DB2LUW 9.7

DB2LUW 10.5 DB2LUW 10.1 DB2 Remote

Teradata Timesten Timesten 7

Timesten 11.2.1 MySQL Ctree8

Ctree9 DB2 for I DB2 for i Remote

MS SQL Informix Informix1150

Informix1170 Informix1210 Ingres

SQL/MX DB2 z/OS PostgreSQL

-VERBOSE | -V

詳細なパラメータ情報を出力し、値がどのように読み取られ解釈されるかを示すよう、checkprmに指示します。

検証で指定される最後のオプションです。

次に、いくつかの使用例を示します。

checkprm ?
checkprm  ./dirprm/ext1.prm -C extract -m data pump -p Linux -v
checkprm  ./dirprm/ext1.prm -m integrated
checkprm  ./dirprm/rep1.prm -m integrated
checkprm  ./dirprm/mgr.prm -C mgr -v
checkprm GLOBALS -c GLOBALS

CHECKPARAMSパラメータを使用した検証

推奨のcheckprmユーティリティを使用する方法の代用には、CHECKPARAMSパラメータを使用して、ExtractまたはReplicatパラメータ・ファイル内のパラメータの構文が正確かどうかをチェックする方法があります。このプロセスは、ExtractまたはReplicatで使用できます。

パラメータの構文を検証する手順

1. パラメータ・ファイルにCHECKPARAMSパラメータを含めます。

2. GGSCIでSTART EXTRACTまたはSTART REPLICATコマンドを発行して、関連するプロセスを起動します。

START {EXTRACT | REPLICAT} group_name

プロセスは、構文を検査して結果をレポート・ファイルまたは画面に出力してから停止します。

3. 次のいずれかの操作を実行します。

- 構文が正しい場合、プロセスを起動してデータを処理する前にCHECKPARAMSパラメータを削除します。

- 構文が間違っている場合、レポートの結果に基づいて該当箇所を修正します。必要に応じて、もう1回テストを実行して変更内容を検証できます。プロセスを起動してデータを処理する前に、CHECKPARAMSを削除します。

レポート・ファイルの詳細は、Oracle GoldenGate処理の監視を参照してください。

CHECKPARAMSの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください

4.4.6 パラメータ・ファイルの表示

パラメータ・ファイルは、オペレーティング・システムのコマンド・シェルから直接表示するか、GGSCIユーザー・インタフェースから表示することができます。GGSCIからファイルを表示するには、VIEW PARAMSコマンドを使用します。

VIEW PARAMS group_name

説明:

group_nameは、mgr(Managerの場合)か、パラメータ・ファイルに関連付けられたExtractグループまたはReplicatグループの名前です。

注意:

キャラクタ・セットがローカル・オペレーティング・システムのものとは異なる既存のパラメータ・ファイル(CHARSETオプションを使用して別のキャラクタ・セットを指定したファイルなど)は、VIEW PARAMSを使用して表示しないでください。内容が破損する可能性があります。GGSCI外部からパラメータ・ファイルを表示してください。

パラメータ・ファイルがOracle GoldenGateディレクトリのdirprmサブディレクトリ以外の場所に作成されている場合、次の例のようにフルパス名を指定します。

VIEW PARAMS c:\lpparms\replp.prm

4.4.7 パラメータ・ファイルの変更

Oracle GoldenGateプロセスは、パラメータ・ファイルの変更前に停止して、パラメータ・ファイルの保存後に再起動する必要があります。プロセスの実行中にパラメータ設定を変更すると、特に表を追加する場合やマッピング・ルールまたはフィルタリング・ルールを変更する場合に予期しない結果が発生する可能性があります。

注意:

ローカル・オペレーティング・システムのものとは異なるキャラクタ・セットを使用した既存のパラメータ・ファイル(CHARSETオプションを使用して別のキャラクタ・セットを指定したファイルなど)は、EDIT PARAMSコマンドを使用して表示や編集を行わないでください。内容が破損する可能性があります。GGSCI外部からパラメータ・ファイルを表示してください。

パラメータを変更する手順

1. GGSCIで次のコマンドを発行して、プロセスを停止します。WindowsクラスタでManagerを停止する場合は、クラスタ・アドミニストレータを使用します。

STOP {EXTRACT | REPLICAT | MANAGER} group_name

2. テキスト・エディタまたはGGSCIのEDIT PARAMSコマンドを使用してパラメータ・ファイルを開きます。

EDIT PARAMS mgr

3. ファイルを編集して保存します。

4. GGSCIで次のコマンドを発行して、プロセスを起動します。WindowsクラスタでManagerを起動する場合は、クラスタ・アドミニストレータを使用します。

START {EXTRACT | REPLICAT | MANAGER} group_name

4.4.8 パラメータ・ファイルの作成の簡略化

次の時間節約ツールを使用することで、パラメータを指定する回数を減らすことができます。

- ワイルドカードの使用

- OBEYの使用

- マクロの使用

- パラメータ置換の使用

4.4.8.1 ワイルドカードの使用

オブジェクト名を使用するパラメータの場合、アスタリスク(*)および疑問符(?)のワイルドカードを使用できます。ワイルドカードを使用することで、多数のオブジェクト名または特定のスキーマ内のすべてのオブジェクトを指定する必要がなくなります。ワイルドカードの使用方法の詳細は、「データベース・オブジェクト名でのワイルドカードの使用」を参照してください。

4.4.8.2 OBEYの使用

よく使用するパラメータ設定が含まれるテキスト・ファイルのライブラリを作成し、その後、OBEYパラメータを使用して、アクティブなパラメータ・ファイルからそれらのファイルを呼び出すことができます。OBEYの構文は次のとおりです。

OBEY file_name

説明:

file_nameは、ファイルの相対名またはフルパス名です。

Oracle GoldenGateは、アクティブなパラメータ・ファイル内でOBEYパラメータを検出すると、その参照先ファイルのパラメータを処理してから、アクティブなファイルに戻って残りのパラメータを処理します。GLOBALSパラメータ・ファイルではOBEYはサポートされていません。

OBEYパラメータを含むパラメータ・ファイルでCHARSETパラメータを使用する場合、参照先のパラメータ・ファイルはCHARSETのキャラクタ・セットを継承しません。CHARSETのキャラクタ・セットは参照先ファイル内のワイルドカードを使用したオブジェクト名の読取りに使用しますが、参照先ファイルにおけるその他すべてのマルチバイト指定については、エスケープ・シーケンス(\uX)を使用する必要があります。

OBEYの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

CHARSETの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

4.4.8.3 マクロの使用

マクロを使用して、パラメータ文を自動的に複数回使用できます。「Oracle GoldenGateマクロを使用した作業の簡略化および自動化」を参照してください

4.4.8.4 パラメータ置換の使用

パラメータ置換を使用すると、パラメータ・ファイルの作成時に静的な値を割り当てるかわりに、実行時に自動的にOracle GoldenGateのパラメータに値を割り当てることができます。この方法であれば、実行ごとに値が変化する場合に、パラメータ・ファイルを編集したり、異なる設定を含む複数のファイルを管理する必要がなくなります。必要な値は、実行時に簡単にエクスポートできます。パラメータ置換は、任意のOracle GoldenGateプロセスで使用できます。

パラメータ置換を使用する手順

1. 置換を実行する各パラメータに対して、値のかわりにランタイム・パラメータを宣言します。次の例のように、ランタイム・パラメータ名の前に疑問符(?)を付けます。

SOURCEISFILE
EXTFILE ?EXTFILE
MAP scott?TABNAME, TARGET tiger ACCOUNT_TARG;

2. Oracle GoldenGateプロセスを起動する前に、オペレーティング・システムのシェルを使用して、環境変数を通じてランタイム値を渡します(例4-4および例4-5を参照)。

例4-4 Windowsでのパラメータ置換

C:\GGS> set EXTFILE=C:\ggs\extfile
C:\GGS> set TABNAME=PROD.ACCOUNTS
C:\GGS> replicat paramfile c:\ggs\dirprm\parmfl

例4-5 UNIX(Kornシェル)でのパラメータ置換

$ EXTFILE=/ggs/extfile
$ export EXTFILE
$ TABNAME=PROD.ACCOUNTS
$ export TABNAME
$ replicat paramfile ggs/dirprm/parmfl

UNIXでは、大/小文字が区別されるため、大/小文字の使用については、パラメータ・ファイルのパラメータ宣言とシェルの変数割当てで同じである必要があります。

4.4.9 Oracle GoldenGateのパラメータに関する情報の取得

INFO PARAMコマンドを使用して、GGSCIからパラメータの定義情報を表示できます。コマンドラインで指定する名前はパラメータまたはオプションですが、それはピリオド(.)を区切り記号として使用して連結された複数の名前からなる完全名であることが必要です。次に例を示します。

INFO PARAM RMTHOST
RMTHOST.STREAMING
INFO PARAM RMTHOST.STREAMING

GETPARAMINFOを使用して、Extract、Replicat、Manageなどの実行中のインスタンスのランタイム・パラメータ値を問い合せることができます。このコマンドは、checkprm -vを使用する方法と似ています(パラメータ・ファイルの検証を参照)。デフォルト動作では、アプリケーションによって問合せされたことがあるすべてのパラメータおよびそれぞれの現在値が表示されます。特定のパラメータ名が指定されている場合、そのパラメータ名で出力がフィルタ処理されます。必要に応じて、-FILEオプションで指定されたファイルに出力をリダイレクトできます。次に例を示します。

SEND ext1pmp GETPARAMINFO

これらのパラメータとOracle GoldenGateパラメータすべての詳細(正確な構文を含む)は、『Oracle GoldenGateリファレンスfor Windows and UNIX』を参照してください。

4.5 Oracle GoldenGateの入力におけるオブジェクト名の指定

パラメータ・ファイル(TABLE文、MAP文など)、列変換関数、コマンド、その他の入力でオブジェクト名を指定する際には、次のルールが適用されます。

サポートされるデータベース・オブジェクト名

データベース・オブジェクト名の修飾

大/小文字が区別されるデータベース・オブジェクト名の指定

データベース・オブジェクト名でのワイルドカードの使用

大/小文字が区別される列名とリテラルの区別

4.5.1 Windowsシステムでのパラメータ・ファイルでのファイルシステム・パス名の指定

Windowsシステムでは、ファイルシステム・パス名のディレクトリの名前が数字で始まる場合、Oracle GoldenGate入力(パラメータ・ファイルやコマンドなど)にそのパスをリストするときに、パスをバックスラッシュでなくスラッシュで指定する必要があります。これにより、Oracle GoldenGateでその名前が8進エスケープ・シーケンスとして解釈されることを回避します。たとえば、次のパスには、8進シーケンス\201として解釈される\2014という名前のディレクトリが含まれています。

C:\ogg\2014\install\dirdat\aa
C:\ogg\install\2014\dirdat\aa

前出のパスは、次のようにスラッシュとともに使用できます。

C:/ogg/2014/install/dirdat/aa
C:/ogg/install/2014/dirdat/aa

詳細は、「エスケープ・シーケンスのサポート」を参照してください

4.5.2 サポートされるデータベース・オブジェクト名

パラメータ・ファイル、コマンドおよびその他の入力のオブジェクト名は、任意の長さで、サポートされる任意のキャラクタ・セットを使用して指定できます。サポートされるキャラクタ・セットについては、サポートされるキャラクタ・セットを参照してください。

Oracle GoldenGateは、オブジェクト名および列名でほとんどの文字をサポートしています。空白や記号などの特殊文字が含まれているオブジェクト名は、二重引用符で囲んで指定します。

次に示すサポートされる文字とサポートされない文字のリストは、Oracle GoldenGateでサポートされているすべてのデータベースを対象としていますが、リストのすべての文字がサポートされるかどうかはデータベース・プラットフォームによって異なります。

4.5.2.1 サポートされる特殊文字

Oracle GoldenGateは、次の特殊文字も含めて、データベースでサポートされるすべての文字をサポートしています。パラメータ・ファイルでは、これらの特殊文字を含むオブジェクト名を二重引用符で囲む必要があります。

文字

説明

/

スラッシュ(「スラッシュを含む名前の指定」を参照)

*

アスタリスク(パラメータ・ファイルで使用する場合は、\*のように、バック・スラッシュでエスケープする必要があります。)

?

疑問符(パラメータ・ファイルで使用する場合は、\?のように、バック・スラッシュでエスケープする必要があります。)

@

アットマーク(サポートされますが、データベースでリソース・ロケータとして使用されることが多い文字です。オブジェクト名では問題を生じることがあります。)

#

番号記号

$

ドル記号

%

パーセント記号(パラメータ・ファイルで使用する場合は、%%とする必要があります。)

^

カレット記号

( )

開き丸カッコと閉じ丸カッコ

_

アンダースコア

-

ダッシュ

空白

4.5.2.2 サポートされない特殊文字

次の文字は、オブジェクト名およびキー以外の列名ではサポートされません。

文字

説明

\

バック・スラッシュ(パラメータ・ファイルで使用する場合は、\\とする必要があります。)

{ }

開き中カッコと閉じ中カッコ

[ ]

開き大カッコと閉じ大カッコ

=

等号

+

プラス記号

!

感嘆符

~

チルド

|

パイプ

&

アンパサンド

:

コロン

;

セミコロン

,

カンマ

' '

一重引用符

" "

二重引用符

'

アクセント記号(発音区別符)

.

ピリオド

<

小なり記号(または開き山カッコ)

>

大なり記号(または閉じ山カッコ)

4.5.3 スラッシュを含む名前の指定

表名のいずれかの部分にスラッシュ文字(/)が含まれている場合、その名前コンポーネントを二重引用符で囲む必要があります。オブジェクト名がIBM iプラットフォームからのものの場合、このかぎりではありません。次に例を示します。

"c/d"
"/a".b
a."b/"

二重引用符で囲まれていないスラッシュが名前に含まれる場合、その名前はIBM iプラットフォーム(DB2 for iデータベース)からのものとしてOracle GoldenGateで処理されます。名前に含まれるスラッシュは、区切り文字として解釈されます。

4.5.4 データベース・オブジェクト名の修飾

オブジェクト名はパラメータ・ファイルで完全修飾されている必要があります。つまり、Oracle GoldenGateのパラメータ構文への入力で指定する名前だけでなく、すべての名前(SQLEXEC入力として指定するSQLプロシージャまたは問合せ内の名前や、ユーザー・イグジット入力の名前の他、パラメータ・ファイルに入力するその他すべての名前)の指定が修飾されている必要があります。

Oracle GoldenGateでは、データベースに応じて、2つの部分からなるオブジェクト名と3つの部分からなるオブジェクト名がサポートされています。

4.5.4.1 2つの部分からなる名前

ほとんどのデータべースでは、2つの部分からなる名前のみを次の形式で指定する必要があります。

owner.object

例: HR.EMP

説明:

ownerは、スキーマまたはデータベースです(データベース・オブジェクトを格納する論理ネームスペースの定義方法によって異なる)。objectは、表またはその他のサポートされるデータベース・オブジェクトです。

Oracle GoldenGateで2つの部分からなる名前がサポートされるデータベースと、それぞれの適切なネーミング規則を次に示します。

- DB2 for i: schema.objectおよびlibrary/file(member)

- DB2 LUW: schema.object

- z/OS上のDB2: schema.object

- MySQL: database.object

- Oracle (CDB以外のデータベース): schema.object

- PostgreSQL: schema.object

- SQL/MX: schema.object。2つの部分からなるSQL名がデフォルトでサポートされています。SQL/MXソース・システムでは、SOURCEDBパラメータを使用してソース・カタログを指定する必要があり、各Extractプロセスがアクセスできるカタログは1つのみです。ターゲット・システムでは、TARGETDBパラメータを使用してターゲット・カタログを指定する必要があり、各Replicatプロセスがアクセスできるカタログは1つのみです。これらの文のUSERID部分でデフォルト・スキーマを指定します。複数のソース・カタログとターゲット・カタログに対応するには、複数のExtractプロセスとReplicatプロセスが必要です。詳細は、NonStop SQL/MXのためのOracle GoldenGateのインストールおよび構成を参照してください。

- SQL Server: schema.object

- Sybase: schema.object

- Teradata: database.object

- TimesTen: user.object

4.5.4.2 3つの部分からなる名前

Oracle GoldenGateで3つの部分からなる名前がサポートされているデータベースを次に示します。

- Oracleコンテナ・データベース(CDB)

- Informix Dynamix Server

- NonStop SQL/MX

ソースOracleコンテナ・データベースから取得する場合には、3つの部分からなる名前が必要です(1つのExtractグループが複数のコンテナから取得する可能性があるため)。したがって、ExtractのTABLE文では、各オブジェクトまたは複数のオブジェクトに対して、コンテナ名とスキーマ名を指定する必要があります。

3つの部分からなるOracle CDB名は次のように指定します。

container.schema.object

例: PDB1.HR.EMP

Oracleコンテナ・データベースの詳細は、参照してください。

Oracle GoldenGate 12cより前のバージョンの既存のパラメータ・ファイルを構文変更せずにそのまま使用できるよう、SQL/MXデータベースでは、3つの部分からなる名前のサポートがデフォルトで無効になっています。(「2つの部分からなる名前」を参照) 3つの部分からなる名前のサポートを有効にするには、GLOBALSファイルでENABLECATALOGNAMESパラメータを使用します。3つの部分からなる名前がサポートされている場合、1つのExtractグループで複数のソース・カタログから取得できます。GLOBALSファイルの詳細は、「GLOBALSファイルの操作」を参照してください。

3つの部分からなるSQL/MX名は次のように指定します。

catalog.schema.object

例: catalog1.HR.EMP

4.5.4.3 複数のコンテナまたはカタログからのデータの適用

複数のソース・コンテナまたはカタログから取得したデータをターゲットOracleコンテナ・データベースまたはSQL/MXデータベースに適用するには、3つおよび2つの部分からなる名前の両方が必要です。MAP文のMAP部分では、各ソース・オブジェクトがコンテナまたはカタログに関連付けられている必要があります(TABLE文の場合と同様)。これにより、ユーザー(およびReplicat)は、複数のソース・コンテナまたはカタログから適切なターゲット・オブジェクトにデータを正しくマップできます。一方、MAP文のTARGET部分で必要なのは、2つの部分からなる名前のみです。これは、Replicatが同時に接続可能なターゲット・コンテナまたはカタログは1つのみなので、schema.ownerという修飾子で十分だからです。複数のターゲット・コンテナまたはカタログに対応するには、複数のReplicatグループが必要です。ターゲット・コンテナまたはカタログは、TARGETDBパラメータで指定します。

4.5.4.4 デフォルトのコンテナまたはカタログの指定

パラメータ・ファイルでSOURCECATALOGパラメータを使用すると、それ以降のTABLE、MAP(またはOracle SEQUENCE)の各指定に対して、デフォルトのカタログを指定できます。次の例は、SOURCECATALOGを使用して、schema2およびschema3の各オブジェクトにpdb2というデフォルトのOracle PDBを指定し、schema4オブジェクトにpdb3というデフォルトのPDBを指定する方法を示しています。pdb1のオブジェクトは3つの部分からなる完全修飾名で指定されているため、デフォルトのカタログを指定する必要はありません。この例のpdbで始まる名前の部分にカタログ名を代入すれば、SQL/MXの例として使用できます。

TABLE pdb1.schema1.table*;
SOURCECATALOG pdb2
TABLE schema2.table*;
TABLE schema3.table*;
SOURCECATALOG pdb3
TABLE schema4.table*;

4.5.5 大/小文字が区別されるデータベース・オブジェクト名の指定

Oracle GoldenGateでは大/小文字が区別される名前をサポートしています。大/小文字が区別されるオブジェクトを指定する場合は、次のルールに従います。

- 大/小文字が区別されるデータベースのオブジェクト名は、それをホスト・データベースに格納するときと同じ大/小文字で指定します。データベースのタイプによっては、大/小文字の区別の有無がデータベースのレベルごとに異なる場合がありますので注意してください(スキーマは大/小文字が区別されるが、表は区別されないなど)。大/小文字を区別するには引用符が必要になるデータベースの場合は、大/小文字を区別する各オブジェクトを修飾名の中で引用符で囲んでください。
正: TABLE "Sales"."ACCOUNT"

誤: TABLE "Sales.ACCOUNT"

- Oracle GoldenGateでは、マッピング目的での必要に応じて、大/小文字が区別されない名前を格納時の大/小文字に変換します。

表4-2は、オブジェクト名における大/小文字の区別のサポート状況を、サポートされるデータベースごとに簡単にまとめたものです。この種のサポートの詳細は、データベースのドキュメントを参照してください。

表4-2 データベースごとのオブジェクト名の大/小文字の区別

データベース

大/小文字を区別するために引用符が必要か

引用符で囲んでいないオブジェクト名

引用符で囲んだオブジェクト名

DB2

はい。大/小文字を区別するかどうかを引用符の有無で識別します。

大/小文字が区別されず、大文字で格納されます。

大/小文字が区別され、大文字と小文字の混在で格納されます。

MySQL

(大/小文字が区別されるデータベース)

不要

- 常に大/小文字が区別され、大文字と小文字の混在で格納されます。

- 列、トリガーおよびプロシージャの名前は大/小文字が区別されません。

影響なし

影響なし

Oracle

はい。大/小文字を区別するかどうかを引用符の有無で識別します。

大/小文字が区別されず、大文字で格納されます。

大/小文字が区別され、大文字と小文字の混在で格納されます。

PostgreSQL

はい。大/小文字を区別するかどうかを引用符の有無で識別します。

大/小文字が区別されず、小文字で格納されます。

大/小文字が区別され、大文字と小文字の混在で格納されます。

SQL/MX

はい。大/小文字を区別するかどうかを引用符の有無で識別します。

大/小文字が区別されず、大文字で格納されます。

大/小文字が区別され、大文字と小文字の混在で格納されます。

SQL Server

Sybase

(データベースは大/小文字を区別するものとして作成)

不要

常に大/小文字が区別され、大文字と小文字の混在で格納されます。

影響なし

影響なし

SQL Server

Sybase

(データベースは大/小文字を区別するものとして作成)

不要

常に大/小文字が区別されず、大文字と小文字の混在で格納されます。

影響なし

影響なし

Teradata

不要

常に大/小文字が区別されず、大文字と小文字の混在で格納されます。

影響なし

影響なし

TimesTen

不要

常に大/小文字が区別されず、大文字で格納されます。

大/小文字が区別されず、大文字で格納されます。

大/小文字が区別されず、大文字で格納されます。

注意:

サポートされるすべてのデータベースにおいて、パスワードは、関連オブジェクト名が引用符で囲まれているかどうかに関係なく、常に大/小文字を区別するものとして扱われます。

4.5.6 データベース・オブジェクト名でのワイルドカードの使用

指定されたデータベースに対してサポートされている場合、完全修飾されたオブジェクト名の任意の部分にワイルドカードを使用できます。これらの名前の部分とは、コンテナ名、データベース名、カタログ名、所有者名(スキーマ名またはデータベース名)、表名または順序名です。オブジェクト名とワイルドカードのサポートの詳細は、そのデータベースに対応するOracle GoldenGateのインストレーションおよび構成のガイドを参照してください。

Oracle GoldenGateのパラメータでは、2種類のワイルドカードを適宜使用して、1つの文に複数のオブジェクトを指定できます。

- 疑問符(?)は1文字に置き換わります。たとえば、TABn(nは0から9)という名前の表を含むスキーマでは、HQ.TAB?というワイルドカード指定を行うと、HQ.TAB0、HQ.TAB1、HQ.TAB2からHQ.TAB9までが返されます(これ以外は返されません)。このワイルドカードは、DB2 LUWデータベースやDEFGENに対してはサポートされていません。このワイルドカードは、TABLEまたはMAPパラメータでソース・オブジェクトを指定する場合にのみ使用できます。TABLEまたはMAPのTARGET句でのターゲット・オブジェクトの指定には使用できません。

- アスタリスク(*)は、任意の数の文字(ゼロ・シーケンスを含む)を表します。たとえば、HQ.T*と指定すると、HQ.TOTAL、HQ.T123、HQ.Tなどのオブジェクトが返されます。このワイルドカードは、ワイルドカードが使用できるOracle GoldenGateのすべてのコマンドおよびパラメータですべてのデータベース・タイプに対して有効です。

- TABLE文およびMAP文では、ソース・オブジェクト名の中でのみアスタリスクと疑問符のワイルドカード文字を組み合せることができます。

4.5.6.1 ソース・オブジェクトにワイルドカードを使用する場合のルール

ソース・オブジェクトには、アスタリスクを単独で、または部分的な名前とともに使用できます。たとえば、次のソース指定はいずれも有効です。

- TABLE HQ.*;

- TABLE PDB*.HQ.*;

- MAP HQ.T_*;

- MAP HQ.T_*, TARGET HQ.*;

TABLE、MAP、SEQUENCEの各パラメータでは、ワイルドカードを解決するために、大/小文字の区別の有無とデータベースのロケールが考慮されます。大/小文字を区別する、または区別しないものとして作成されたデータベースの場合、名前と大/小文字がワイルドカードと正確に照合されます。たとえば、データベースで大/小文字が区別される場合、SCHEMA.TABLEはSCHEMA.TABLEに一致し、Schema.TableはSchema.Tableに一致します。データベースで大/小文字が区別されない場合、照合でも大/小文字は区別されません。

引用符を使用して大/小文字を区別することで、大/小文字が区別されるオブジェクト名と区別されないオブジェクト名を同じデータベース・インスタンス内に持つことができるデータベースの場合、ワイルドカードは異なる働きをします。アスタリスク・ワイルドカードをTABLE文でソース名として単独で使用した場合、そのアスタリスクは、引用符で囲まれているかどうかに関係なく、任意の文字に一致します。次の文はいずれも同じ結果になります。

TABLE hr.*;
TABLE hr."*";

同様に、単独で使用した疑問符ワイルドカードは、引用符で囲まれているかどうかに関係なく、任意の1文字に一致します。次の指定はいずれも同じ結果になります。

TABLE hr.?;
TABLE hr."?";

疑問符またはアスタリスクのワイルドカードを他の文字とともに使用する場合は、大/小文字の区別の有無がワイルドカード以外の文字にも適用されますが、ワイルドカードは大/小文字が区別される名前と区別されない名前の両方に一致します。

- 次のTABLE文では、小文字のabcで始まる表名が取得されます。引用符で囲んだ名前の大/小文字は維持され、大/小文字を区別する照合が適用されます。ワイルドカードは、大/小文字が区別される文字にも区別されない文字にも一致するため、"abcA"および"abca"を含む表名が取得されます。

TABLE hr."abc*";
TABLE hr."abc?";

- 次のTABLE文では、部分的な名前は大/小文字が区別されず(引用符なし)、このデータベースに大文字で格納されるため、大文字のABCで始まる表名がすべて取得されます。ただし、ワイルドカードは大/小文字が区別される文字と区別されない文字の両方に一致するため、この例ではABCAと"ABCa"を含む表名が取得されます。

TABLE hr.abc*;
TABLE hr.abc?;

4.5.6.2 ターゲット・オブジェクトにワイルドカードを使用する場合のルール

MAP文のTARGET句でワイルドカードを使用する場合、ターゲット・オブジェクトがターゲット・データベースに存在する必要があります。(ただし、DDLレプリケーションが使用されていて、新しいスキーマとそのオブジェクトを作成時にレプリケートできる場合を除きます。)

ターゲット・オブジェクトには、アスタリスクのみを使用できます。アスタリスク・ワイルドカードを部分的な名前とともに使用すると、Replicatはワイルドカードを対応するソース・オブジェクトの完全な名前に置き換えます。したがって、次のような指定は誤りです。

TABLE HQ.T_*, TARGET RPT.T_*;
MAP HQ.T_*, TARGET RPT.T_*;

前述のマッピングでは、ターゲット指定内のワイルドカードがT_TEST(ソース・オブジェクトの名前)に置き換わるため、ターゲット名全体ではT_T_TESTnとなり、間違った結果が返されます。次に、間違った結果を示します。

- HQ.T_TEST1がRPT.T_T_TEST1にマップされます。

- HQ.T_TEST2がRPT.T_T_TEST2にマップされます。

- (HQ.T_TESTn形式の他のすべてのマッピングに、同じパターンが当てはまります。)

次の例は、アスタリスク・ワイルドカードの正しい使用方法を示しています。

MAP HQ.T_*, TARGET RPT.*;

前述の例では、次のような正しい結果が得られます。

- HQ.T_TEST1がRPT.T_TEST1にマップされます。

- HQ.T_TEST2がRPT.T_TEST2にマップされます。

- (HQ.T_TESTn形式の他のすべてのマッピングに、同じパターンが当てはまります。)

4.5.6.3 名前のフォールバック・マッピング

Oracle GoldenGateには、ソース名をターゲット名にマップできない場合に備えて、フォールバック・マッピングのメカニズムが用意されています。大/小文字が区別されるソース・オブジェクトと完全に一致するものがターゲット上に見つからない場合、Replicatはソース名を、ターゲット上の大文字または小文字(データベースのタイプによる)の同じ名前にマップしようとします。名前のフォールバック・マッピングは、NAMEMATCHパラメータで制御します。詳細は、『Oracle GoldenGate for Windows and UNIXリファレンス』を参照してください。

4.5.6.4 11.2.1より前のバージョンの証跡からのワイルドカード・マッピング

Oracle GoldenGate 11.2.1より前のバージョンの証跡ファイルから読み取るようにReplicatが構成されている場合、ターゲットのマッピングは、下位互換性を確保するために次の方法で行われます。

- 引用符で囲んだオブジェクト名は大/小文字が区別されます。

- 引用符で囲んでいないオブジェクト名は大/小文字が区別されません。

次の例では、大/小文字が区別される表名"abc"が、ターゲット"abc"にマップされます。この処理が発生するのは、11.2.1より前のExtractにより、大/小文字が区別される構成のSQL ServerとSybaseについて証跡が書き込まれた場合のみです。この例では、ターゲット・データベースがOracle、DB2またはSQL/MXで、ターゲット・データベース内に大/小文字が区別されるabcはないが、表ABCはあるという場合、名前のフォールバック・マッピングが実行されます。(「名前のフォールバック・マッピング」を参照。)

MAP hq."abc", TARGET hq.*;

次の例では、大/小文字が区別されない表名abcが、ターゲットの表名ABCにマップされます。旧リリースのOracle GoldenGateでは、大/小文字が区別されないオブジェクト名は大文字で証跡に格納されていたため、ターゲットの表名は常に大文字でした。大/小文字が区別されない名前変換の場合、比較はロケールを考慮せずに、大文字(AからZの文字のみ)でUS-ASCIIで行われます。

MAP hq.abc, TARGET hq.*;

4.5.6.5 オブジェクト名におけるリテラルとしてのアスタリスクまたは疑問符

オブジェクトの名前自体にアスタリスクまたは疑問符が含まれている場合、次の例に示すように、名前全体をエスケープして二重引用符で囲む必要があります。

TABLE HT."\?ABC";

4.5.6.6 ワイルドカードの解決方法

オブジェクト名がワイルドカードで指定されている場合、デフォルトでは、ソース・オブジェクトの1行目の処理と同時に、そのオブジェクトの解決が行われます。(これに対し、オブジェクト名が明示的に指定されている場合は、プロセスの起動時に解決が行われます。)ワイルドカード解決のルールを変更するには、WILDCARDRESOLVEパラメータを使用します。デフォルトはDYNAMICです。

4.5.6.7 ワイルドカード指定からのオブジェクトの除外

EXCLUDEWILDCARDOBJECTSONLY、CATALOGEXCLUDE、SCHEMAEXCLUDE、MAPEXCLUDE、TABLEEXCLUDEの各パラメータを使用すると、ワイルドカードによるオブジェクト選択を、明示的なオブジェクト除外と組み合せて使用できます。説明と構文の詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

4.5.7 大/小文字が区別される列名とリテラルの区別

Oracle GoldenGateでの列名とリテラルの指定は、デフォルトで、SQL-92ルールに従います。大/小文字の区別をサポートするには名前を引用符で囲む必要があるデータベースの場合、Oracle GoldenGateのパラメータ・ファイル、変換関数、ユーザー・イグジットおよびコマンドでは、大/小文字が区別される列名を二重引用符で囲む必要があります。次に例を示します。

"columnA"

大/小文字を区別するのに引用符が不要なデータベースの場合、大/小文字が区別される列名はデータベースに格納されているとおりに指定する必要があります。次に例を示します。

ColumnA

リテラルは一重引用符で囲む必要があります。次の例では、Product_CodeはOracleデータベース内の大/小文字が区別される列名であり、その他の文字列はリテラルです。

@CASE ("Product_Code", 'CAR', 'A car', 'TRUCK', 'A truck')

バージョン12cより前Oracle GoldenGateバージョンのパラメータ・ファイルとの下位互換性のために、NOUSEANSISQLQUOTESパラメータを使用してデフォルト・モードを変更できます(このパラメータは12cでは非推奨です)。NOUSEANSISQLQUOTESによって、Oracle GoldenGateでは二重引用符で囲まれた文字列がリテラルとして扱われます。NOUSEANSISQLQUOTESの使用時は、一重引用符または二重引用符の有無にかかわらず、大/小文字が区別されるオブジェクト名はサポートされません。次の例では、NOUSEANSISQLQUOTESの使用時に、@CASE関数がどのように機能するかを示しています。この場合、PRODUCT_CODEは列名、その他の文字列はリテラルです。

@CASE (PRODUCT_CODE, "CAR", "A car", "TRUCK", "A truck")

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

この章では、ライブ・レポートでOracle GoldenGateを使用する方法について説明します。

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

- レポート構成の概要

- 標準レポート構成の作成

- ソース・システムでデータ・ポンプを使用するレポート構成の作成

- 中間システムでデータ・ポンプを使用するレポート構成の作成

- カスケード・レポート構成の作成

5.1 レポート構成の概要

最も基本的なOracle GoldenGate構成は、ソース・データベースからレポートや分析などのデータ取得目的のみに使用されるターゲット・データベースへの一方向レプリケートを行う1対1構成です。Oracle GoldenGateは同種間あるいは異種間のデータ転送をサポートし、構成内のいずれのシステム上でもフィルタリングや変換が可能なためです(サポート内容はデータベース・プラットフォームごとに異なります)。

Oracle GoldenGateでは、様々なレポート・トポロジが用意されており、スケーラビリティ、可用性およびパフォーマンスに対するユーザー要件に基づいて各プロセスをカスタム構成できます。この項では、レポート構成を選択する場合の考慮事項について説明します。

5.1.1 フィルタリングおよび変換

データ・フィルタリングおよびデータ変換では、どちらもオーバーヘッドが増大します。これらのアクティビティは、構成エラーにつながるおそれがあります。Oracle GoldenGateで大量のフィルタリングおよび変換を実行する必要がある場合は、1つ以上のデータ・ポンプを使用してその作業を処理することを検討してください。この目的にReplicatを使用することもできますが、その場合データがフィルタされないため、ネットワーク全体でより多くのデータが送信されます。フィルタリングおよび変換は、データ・ポンプとReplicatに分割して、2つのシステムで分けることが可能です。

データをフィルタする場合、次の処理を使用できます。

- TABLE文(Extract)またはMAP文(Replicat)のFILTER句またはWHERE句

- SQL問合せまたはプロシージャ

- ユーザー・イグジット

データを変換する場合、次の処理を使用できます。

- Oracle GoldenGate変換関数

- 外部変換ソリューションのルールを適用して操作済データをOracle GoldenGateに戻すExtractまたはReplicatプロセスからのユーザー・イグジット

- ETLソリューションまたは他の変換エンジンに直接データを配信するReplicat

Oracle GoldenGateのフィルタリングおよび変換サポートの詳細は、次を参照してください。

- データのマッピングおよび操作

- Oracle GoldenGate処理のカスタマイズ

5.1.2 読取り専用と高可用性の比較

Oracle GoldenGateのライブ・レポート構成では、読取り専用ターゲットがサポートされます。この構成のターゲットを、高可用性をサポートするトランザクション・アクティビティにも使用する場合は、アクティブ/アクティブ型高可用性のためのOracle GoldenGateの構成を参照してください。

5.1.3 追加情報

次のドキュメントには、Oracle GoldenGateの構成に関連する追加情報が記載されています。

- その他のシステム要件、プロセス構成およびデータベースの設定要件については、使用中のデータベース・タイプに対応するOracle GoldenGateのインストレーションおよび構成のドキュメントを参照してください。これらのガイドはこのマニュアルのはじめににリストされています。

- Oracle GoldenGateの変更取得および配信グループの構成方法の詳細は、オンライン変更同期の構成を参照してください。

- Oracle GoldenGateのその他のチューニング・オプションは、Oracle GoldenGateのパフォーマンスのチューニングを参照してください。

- Oracle GoldenGateのコマンドとパラメータの構文の詳細および説明は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

5.2 標準レポート構成の作成

標準のOracle GoldenGate構成では、取得データが1つのExtractグループによってTCP/IPを通じてターゲット・システムの証跡に送信され、1つのReplicatグループによって処理されるまで格納されます。

作成するオブジェクトのビジュアル表現は、図5-1を参照してください。

図5-1 標準レポート構成の作成の構成要素

5.2.1 ソース・システム

ソース・システムでManagerプロセスとExtractグループを構成します。

Managerプロセスを構成する手順

ソースで、Managerおよびネットワーク通信の構成の指示に従ってManagerプロセスを構成します。

Extractグループを構成する手順

1. ソースで、ADD EXTRACTコマンドを使用してExtractグループを作成します。説明上、このグループをextと呼びます。

ADD EXTRACT ext, {TRANLOG | INTEGRATED TRANLOG}, BEGIN time [option[, ...]]

これらのオプション、およびインストール環境によって必要になるその他のADD EXTRACTオプションの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

2. ソースで、ADD RMTTRAILコマンドを使用して、ターゲット・システムに作成するリモート証跡を指定します。

ADD RMTTRAIL remote_trail, EXTRACT ext

EXTRACT引数を使用して、この証跡をExtractグループにリンクします。

その他のADD RMTTRAILオプションは、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

3. ソースで、EDIT PARAMSコマンドを使用してExtractグループのパラメータ・ファイルを作成します。次のパラメータと、データベース環境に適用する他のパラメータを含めます。考えられるその他の必須パラメータの詳細は、使用中のデータベースに対応するOracle GoldenGateインストレーションおよびセットアップ・ガイドを参照してください。

-- Identify the Extract group:
EXTRACT ext
-- Specify database login information as needed for the database:
[SOURCEDB dsn_1][, USERIDALIAS alias]
-- Log  all of the supplementally logged columns if using integrated Replicat
LOGALLSUPCOLS
-- Valid for Oracle. Specify the name or IP address of the target system and
-- optional encryption across TCP/IP:
RMTHOSTOPTIONS target, MGRPORT port_number, ENCRYPT encryption_options
-- Specify the remote trail and encryption algorithm on the target system:
ENCRYPTTRAIL algorithm
RMTTRAIL remote_trail
-- Specify tables and sequences to be captured:
SEQUENCE [container.|catalog.]owner.sequence;
TABLE [container.|catalog.]owner.table;

5.2.2 ターゲット・システム

ターゲット・システムでManagerプロセスとReplicatグループを構成します。

Managerプロセスを構成する手順

1. ターゲットで、Managerおよびネットワーク通信の構成の指示に従ってManagerプロセスを構成します。

2. Managerパラメータ・ファイルでは、PURGEOLDEXTRACTSパラメータを使用してローカル証跡からのファイルの削除を制御します。

Replicatグループを構成する手順

1. ターゲットで、Replicatのチェックポイント表を作成します(Oracle統合Replicatを使用していない場合)。手順については、「チェックポイント表の作成」を参照してください。すべてのReplicatグループで同じチェックポイント表を使用できます。

2. ターゲットで、ADD REPLICATコマンドを使用してReplicatグループを作成します。説明上、このグループをrepと呼びます。

ADD REPLICAT rep
[, INTEGRATED | COORDINATED [MAXTHREADS number]]
, EXTTRAIL remote_trail
, BEGIN time

EXTTRAIL引数を使用して、Replicatグループをリモート証跡にリンクします。

これらのオプション、およびインストール環境によって必要になるその他のオプションの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

3. ターゲットで、EDIT PARAMSコマンドを使用してReplicatグループのパラメータ・ファイルを作成します。次のパラメータと、データベース環境に適用する他のパラメータを含めます。考えられるその他の必須パラメータの詳細は、使用中のデータベースに対応するOracle GoldenGateインストレーションおよびセットアップ・ガイドを参照してください。

-- Identify the Replicat group:
REPLICAT rep
-- Specify database login information as needed for the database:
[TARGETDB dsn_2][, USERIDALIAS alias]
-- Specify error handling rules:
REPERROR (error, response)
-- Specify tables for delivery and threads if using coordinated Replicat:
MAP [container.|catalog.]owner.table, TARGET owner.table[, DEF template]
[, THREAD (thread_ID)][, THREADRANGE (thread_range[, column_list])]
;

注意:

DB2 for iでは、ターゲット表がすでにジャーナルされている場合、ADD TRANDATAコマンドの使用が必要になることがあります。または、STRJRNPFコマンドを使用して、表を適切なジャーナルに割り当てることができます。ターゲット表をOracle GoldenGateでレプリケートする必要がない場合は、IMAGES(*AFTER)オプションをSTRJRNPFで使用できます。Oracle GoldenGateは、トランザクションを使用して動作するため、トランザクションをサポートするには、すべての表をジャーナルする必要がありますが、これはDB2 for iではデフォルトではありません。

5.3 ソース・システムでデータ・ポンプを使用するレポート構成の作成

ソース・システムにデータ・ポンプを追加して、プライマリExtractをTCP/IP機能から分離することで、記憶域の柔軟性を向上し、プライマリExtractからフィルタリングおよび変換処理のオーバーヘッドを削減できます。

この構成の場合、プライマリExtractは、ソース・システムのローカル証跡に書込みを行います。ローカル・データ・ポンプは、その証跡を読み取り、データをターゲット・システムのリモート証跡に移動します(このデータはReplicatによって読み取られます)。

必須ではありませんが、データ・ポンプを使用して、Oracle GoldenGateのパフォーマンスおよびフォルト・トレランスを改善できます。

作成するオブジェクトのビジュアル表現は、図5-2を参照してください。

図5-2 データ・ポンプを使用した単一ターゲットに対するレプリケーションの構成要素

5.3.1 ソース・システム

ソース・システムでManagerプロセスとExtractグループを構成します。

Managerプロセスを構成する手順

1. ソースで、Managerおよびネットワーク通信の構成の指示に従ってManagerプロセスを構成します。

2. Managerパラメータ・ファイルでは、PURGEOLDEXTRACTSパラメータを使用してローカル証跡からのファイルの削除を制御します。

プライマリExtractグループを構成する手順

1. ソースで、ADD EXTRACTコマンドを使用してExtractグループを作成します。説明上、このグループをextと呼びます。

ADD EXTRACT ext, {TRANLOG | INTEGRATED TRANLOG}, BEGIN time [option[, ...]]

これらのオプション、およびインストール環境によって必要になるその他のADD EXTRACTオプションの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

2. ソースで、ADD EXTTRAILコマンドを使用してローカル証跡を作成します。プライマリExtractがこの証跡に書込みを行い、データ・ポンプExtractがそのデータを読み取ります。

ADD EXTTRAIL local_trail, EXTRACT ext

EXTRACT引数を使用して、この証跡をプライマリExtractグループにリンクします。プライマリExtractグループがこの証跡に書込みを行い、データ・ポンプ・グループがそのデータを読み取ります。

3. ソースで、EDIT PARAMSコマンドを使用してプライマリExtractグループのパラメータ・ファイルを作成します。次のパラメータと、データベース環境に適用する他のパラメータを含めます。考えられるその他の必須パラメータの詳細は、使用中のデータベースに対応するOracle GoldenGateインストレーションおよびセットアップ・ガイドを参照してください。

-- Identify the Extract group:
EXTRACT ext
-- Specify database login information as needed for the database:
[SOURCEDB dsn_1][,USERIDALIAS alias]
-- Log all scheduling columns if using integrated Replicat
LOGALLSUPCOLS
-- Specify the local trail that this Extract writes to and
-- encryption algorithm:
ENCRYPTTRAIL algorithm
EXTTRAIL local_trail
-- Specify tables and sequences to be captured:
SEQUENCE [container.|catalog.]owner.sequence;
TABLE [container.|catalog.]owner.table;

データ・ポンプExtractグループを構成する手順

1. ソースで、ADD EXTRACTコマンドを使用してデータ・ポンプ・グループを作成します。説明上、このグループをpumpと呼びます。

ADD EXTRACT pump, EXTTRAILSOURCE local_trail, BEGIN time

データソース・オプションとしてEXTTRAILSOURCEを使用し、ローカル証跡の名前を指定します。

2. ソースで、ADD RMTTRAILコマンドを使用して、ターゲット・システムに作成するリモート証跡を指定します。

ADD RMTTRAIL remote_trail, EXTRACT pump

EXTRACT引数を使用して、リモート証跡をデータ・ポンプ・グループにリンクします。リンクされたデータ・ポンプは、この証跡に書込みを行います。

その他のADD RMTTRAILオプションは、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

3. ソースで、EDIT PARAMSコマンドを使用してデータ・ポンプのパラメータ・ファイルを作成します。次のパラメータと、データベース環境に適用する他のパラメータを含めます。

-- Identify the data pump group:
EXTRACT pump
-- Specify database login information as needed for the database:
[SOURCEDB dsn_1][, USERIDALIAS alias]
-- Decrypt the data only if the data pump must process it.
-- DECRYPTTRAIL
-- Specify the name or IP address of the target system
-- and optional encryption of data over TCP/IP:
RMTHOSTOPTIONS target, MGRPORT port_number, ENCRYPT encryption_options
-- Specify the remote trail and encryption algorithm on the target system:
ENCRYPTTRAIL alogrithm
RMTTRAIL remote_trail
-- Specify tables and sequences to be captured:
SEQUENCE [container.|catalog.]owner.sequence;
TABLE [container.|catalog.]owner.table;

5.3.2 ターゲット・システム

ターゲット・システムでManagerプロセスとReplicatグループを構成します。

Managerプロセスを構成する手順

1. ターゲットで、Managerおよびネットワーク通信の構成の指示に従ってManagerプロセスを構成します。

2. Managerパラメータ・ファイルでは、PURGEOLDEXTRACTSパラメータを使用してローカル証跡からのファイルの削除を制御します。

Replicatグループを構成する手順

1. ターゲットで、Replicatのチェックポイント表を作成します(Oracle統合Replicatを使用していない場合)。手順については、「チェックポイント表の作成」を参照してください。

2. ターゲットで、ADD REPLICATコマンドを使用してReplicatグループを作成します。説明上、このグループをrepと呼びます。

ADD REPLICAT rep
[, INTEGRATED | COORDINATED [MAXTHREADS number]]
, EXTTRAIL remote_trail
, BEGIN time

EXTTRAIL引数を使用して、Replicatグループをリモート証跡にリンクします。

これらのオプション、およびインストール環境によって必要になるその他のオプションの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

3. ターゲットで、EDIT PARAMSコマンドを使用してReplicatグループのパラメータ・ファイルを作成します。次のパラメータと、データベース環境に適用する他のパラメータを含めます。考えられるその他の必須パラメータの詳細は、使用中のデータベースに対応するOracle GoldenGateインストレーションおよびセットアップ・ガイドを参照してください。

-- Identify the Replicat group:
REPLICAT rep
-- Specify database login information as needed for the database:
[TARGETDB dsn_2][, USERIDALIAS alias]
-- Specify error handling rules:
REPERROR (error, response)
-- Specify tables for delivery and threads if using coordinated Replicat:
MAP [container.|catalog.]owner.table, TARGET owner.table[, DEF template]
[, THREAD (thread_ID)][, THREADRANGE (thread_range[, column_list])]
;

注意:

DB2 for iでは、ターゲット表がすでにジャーナルされている場合、ADD TRANDATAコマンドの使用が必要になることがあります。または、STRJRNPFコマンドを使用して、表を適切なジャーナルに割り当てることができます。ターゲット表をOracle GoldenGateでレプリケートする必要がない場合は、IMAGES(*AFTER)オプションをSTRJRNPFで使用できます。Oracle GoldenGateは、トランザクションを使用して動作するため、トランザクションをサポートするには、すべての表をジャーナルする必要がありますが、これはDB2 for iではデフォルトではありません。

5.4 中間システムでデータ・ポンプを使用するレポート構成の作成

中間システムを、ソース・システムとターゲット・システムの中継場所として使用できます。この構成では、ソース・システムのデータ・ポンプは、取得したデータを中間システムのリモート証跡に送信します。中間システムのデータ・ポンプは、その証跡を読み取り、データをターゲットのリモート証跡に送信します。ターゲットのReplicatはリモート証跡を読み取り、データをターゲット・データベースに適用します。

図5-3 中間システムを通じたレプリケーションの構成要素

このトポロジについて検討する際、次の点に注意してください。

- この構成は、ソース・システムとターゲット・システムが異なるネットワーク内に存在し、各システム間が直接接続されていない場合に役立ちます。両方のシステムに接続することが可能な中間システムを通じてデータを転送できます。

- この構成を使用すると、記憶域の柔軟性が増し、ソースまたはターゲットを補うことができます。

- この構成は、すべてのシステムのキャラクタ・セットが同じ場合、データのフィルタリングや変換に使用できます。キャラクタ・セットが異なる場合、データ・ポンプはキャラクタ・セット間の変換を行えません。ターゲットで変換を行うようReplicatを構成する必要があります。

- キャラクタ・セットが同じ場合、中間システムでデータ・ポンプを使用して変換を実行するには、DEFGENユーティリティを使用してソース定義ファイルとターゲット定義ファイルを作成し、両方のファイルを中間システムに転送する必要があります。定義ファイルと変換の詳細は、レプリケートされたデータとメタデータとの関連付けを参照してください。

- この構成は、カスケード・レプリケーションの一種です。ただし、この構成では、データは中間システム上のデータベースに適用されません。中間システムのデータベースをOracle GoldenGate構成に含めるには、「カスケード・レポート構成の作成」を参照してください。

5.4.1 ソース・システム

作成するオブジェクトのビジュアル表現は、図10を参照してください。

Managerプロセスを構成する手順

1. ソースで、Managerおよびネットワーク通信の構成の指示に従ってManagerプロセスを構成します。

2. Managerのパラメータ・ファイルで、PURGEOLDEXTRACTSパラメータを使用して、証跡からのファイルの消去を制御します。

ソースのプライマリExtractグループを構成する手順

1. ソースで、ADD EXTRACTコマンドを使用してExtractグループを作成します。説明上、このグループをextと呼びます。

ADD EXTRACT ext, {TRANLOG | INTEGRATED TRANLOG}, BEGIN time [option[, ...]]

これらのオプション、およびインストール環境によって必要になるその他のADD EXTRACTオプションの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

2. ソースで、ADD EXTTRAILコマンドを使用してローカル証跡を作成します。プライマリExtractがこの証跡に書込みを行い、データ・ポンプExtractがそのデータを読み取ります。

ADD EXTTRAIL local_trail, EXTRACT ext

EXTRACT引数を使用して、この証跡をプライマリExtractグループにリンクします。プライマリExtractグループがこの証跡に書込みを行い、データ・ポンプ・グループがそのデータを読み取ります。

3. ソースで、EDIT PARAMSコマンドを使用してプライマリExtractグループのパラメータ・ファイルを作成します。次のパラメータと、データベース環境に適用する他のパラメータを含めます。考えられるその他の必須パラメータの詳細は、使用中のデータベースに対応するOracle GoldenGateインストレーションおよびセットアップ・ガイドを参照してください。

-- Identify the Extract group:
EXTRACT ext
-- Specify database login information as needed for the database:
[SOURCEDB dsn_1][, USERIDALIAS alias]
-- Log all scheduling columns if using integrated Replicat
LOGALLSUPCOLS
-- Specify the local trail that this Extract writes to and
-- encryption algorithm:
ENCRYPTTRAIL algorithm
EXTTRAIL local_trail
-- Specify tables and sequences to be captured:
SEQUENCE [container.|catalog.]owner.sequence;
TABLE [container.|catalog.]owner.table;

ソースのデータ・ポンプを構成する手順

1. ソースで、ADD EXTRACTコマンドを使用してデータ・ポンプ・グループを作成します。説明上、このグループをpump_1と呼びます。

ADD EXTRACT pump_1, EXTTRAILSOURCE local_trail, BEGIN time

データソース・オプションとしてEXTTRAILSOURCEを使用し、ローカル証跡の名前を指定します。ローカルExtractの場合、RMTTRAILではなくEXTTRAILを使用する必要があります。

2. ソースで、ADD RMTTRAILコマンドを使用して、中間システムに作成するリモート証跡を指定します。

ADD RMTTRAIL remote_trail_1, EXTRACT pump_1

EXTRACT引数を使用して、リモート証跡をpump_1データ・ポンプ・グループにリンクします。リンクされたデータ・ポンプは、この証跡に書込みを行います。

その他のADD RMTTRAILオプションは、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

3. ソースで、EDIT PARAMSコマンドを使用してpump_1データ・ポンプのパラメータ・ファイルを作成します。次のパラメータと、データベース環境に適用する他のパラメータを含めます。

-- Identify the data pump group:
EXTRACT pump_1
-- Specify database login information:
[SOURCEDB dsn_1][, USERIDALIAS alias]
-- Decrypt the data only if the data pump must process it.
-- DECRYPTTRAIL
-- Specify the name or IP address of the intermediary system
-- and optional encryption of data over TCP/IP:
RMTHOSTOPTIONS target_1, MGRPORT port_number, ENCRYPT encryption_options
-- Specify remote trail and encryption algorithm on intermediary system:
ENCRYPTTRAIL algorithm
RMTTRAIL remote_trail_1
-- Specify tables and sequences to be captured:
SEQUENCE [container.|catalog.]owner.sequence;
TABLE [container.|catalog.]owner.table;

5.4.2 中間システム

中間システムでManagerプロセスとデータ・ポンプを構成します。

中間システムのManagerプロセスを構成する手順

1. 中間システムで、Managerおよびネットワーク通信の構成の指示に従ってManagerプロセスを構成します。

2. Managerのパラメータ・ファイルで、PURGEOLDEXTRACTSパラメータを使用して、証跡からのファイルの消去を制御します。

中間システムのデータ・ポンプを構成する手順

1. 中間システムで、ADD EXTRACTコマンドを使用してデータ・ポンプ・グループを作成します。説明上、このグループをpump_2と呼びます。

ADD EXTRACT pump_2, EXTTRAILSOURCE local_trail_1, BEGIN time

データソース・オプションとしてEXTTRAILSOURCEを使用し、このシステムに作成した証跡の名前を指定します。

2. 中間システムで、ADD RMTTRAILコマンドを使用して、ターゲット・システムのリモート証跡を指定します。

ADD RMTTRAIL remote_trail_2, EXTRACT pump_2

EXTRACT引数を使用して、リモート証跡をpump_2データ・ポンプにリンクします。リンクされたデータ・ポンプは、この証跡に書込みを行います。

その他のADD RMTTRAILオプションは、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

3. 中間システムで、EDIT PARAMSコマンドを使用してpump_2データ・ポンプのパラメータ・ファイルを作成します。次のパラメータと、データベース環境に適用する他のパラメータを含めます。

-- Identify the data pump group:
EXTRACT pump_2
-- Note that no database login parameters are required in this case.
-- Specify the target definitions file if SOURCEDEFS was used:
TARGETDEFS full_pathname
-- Decrypt the data only if the data pump must process it.
-- DECRYPTTRAIL
-- Specify the name or IP address of the target system
-- and optional encryption of data over TCP/IP:
RMTHOSTOPTIONS target_2, MGRPORT port_number, ENCRYPT encryption_options
-- Specify the remote trail and encryption algorithm on the target system:
ENCRYPTTRAIL algorithm
RMTTRAIL remote_trail_2
-- Specify tables and sequences to be captured:
SEQUENCE [container.|catalog.]owner.sequence;
TABLE [container.|catalog.]owner.table;

5.4.3 ターゲット・システム

ターゲット・システムでManagerプロセスとReplicatグループを構成します。

ターゲットのManagerプロセスを構成する手順

1. ターゲット・システムで、Managerおよびネットワーク通信の構成の指示に従ってManagerプロセスを構成します。

2. Managerのパラメータ・ファイルで、PURGEOLDEXTRACTSパラメータを使用して、証跡からのファイルの消去を制御します。

ターゲットのReplicatグループを構成する手順

1. ターゲットで、Replicatのチェックポイント表を作成します(Oracle統合Replicatを使用していない場合)。手順については、「チェックポイント表の作成」を参照してください。

2. ターゲットで、ADD REPLICATコマンドを使用してReplicatグループを作成します。説明上、このグループをrepと呼びます。

ADD REPLICAT rep
[, INTEGRATED | COORDINATED [MAXTHREADS number]]
, EXTTRAIL remote_trail_2,
, BEGIN time

EXTTRAIL引数を使用して、Replicatグループをこのシステムの証跡にリンクします。

これらのオプション、およびインストール環境によって必要になるその他のオプションの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

3. ターゲットで、EDIT PARAMSコマンドを使用してReplicatグループのパラメータ・ファイルを作成します。次のパラメータと、データベース環境に適用する他のパラメータを含めます。考えられるその他の必須パラメータの詳細は、使用中のデータベースに対応するOracle GoldenGateインストレーションおよびセットアップ・ガイドを参照してください。

-- Identify the Replicat group:
REPLICAT rep
-- Specify database login information as needed for the database:
[TARGETDB dsn_2][, USERIDALIAS alias]
-- Specify error handling rules:
REPERROR (error, response)
-- Specify tables for delivery and threads if using coordinated Replicat:
MAP [container.|catalog.]owner.table, TARGET owner.table[, DEF template]
[, THREAD (thread_ID)][, THREADRANGE (thread_range[, column_list])]
;

注意:

DB2 for iでは、ターゲット表がすでにジャーナルされている場合、ADD TRANDATAコマンドの使用が必要になることがあります。または、STRJRNPFコマンドを使用して、表を適切なジャーナルに割り当てることができます。ターゲット表をOracle GoldenGateでレプリケートする必要がない場合は、IMAGES(*AFTER)オプションをSTRJRNPFで使用できます。Oracle GoldenGateは、トランザクションを使用して動作するため、トランザクションをサポートするには、すべての表をジャーナルする必要がありますが、これはDB2 for iではデフォルトではありません。

5.5 カスケード・レポート構成の作成

Oracle GoldenGateでは、カスケード同期がサポートされます。この同期では、Oracle GoldenGateによってデータ変更がソース・データベースから2番目のデータベースに伝播され、次に3番目のデータベースに伝播されます。この構成では、次の処理が実行されます。

- ソースのプライマリExtractは、取得データをローカル証跡に書き込み、データ・ポンプはそのデータをカスケード内の2番目のシステムにあるリモート証跡に送信します。

- 2番目のシステムで、Replicatはデータをローカル・データベースに適用します。

- 同じシステムの別のプライマリExtractが、ローカル・データベースからデータを取得してローカル証跡に書き込みます。

- データ・ポンプは、データをカスケード内の3番目のシステムにあるリモート証跡に送信し、そのデータは別のReplicatによってローカル・データベースに適用されます。

注意:

レプリケートされた変更を2番目のシステムのデータベースに適用する必要がない場合は、「中間システムでデータ・ポンプを使用するレポート構成の作成」を参照してください。

図5-4 カスケード構成

この構成は、次の場合に使用します。

- 1つ以上のターゲット・システムがソースに直接接続していないが、2番目のシステムが両方に接続できる場合。

- ソース・システムからのネットワーク・アクティビティを制限する場合。

- 地理的に非常に離れた場所にある2つ以上のサーバーにデータを送信する場合(たとえば、シカゴからロサンゼルスに送信し、次にロサンゼルスから中国全土のサーバーに送信する場合)。

このトポロジについて検討する際、次の点に注意してください。

- この構成は、すべてのシステムのキャラクタ・セットが同じ場合、データのフィルタリングや変換に使用できます。キャラクタ・セットが異なる場合、データ・ポンプはキャラクタ・セット間の変換を行えません。ターゲットで変換を行うようReplicatを構成する必要があります。

- キャラクタ・セットが同じ場合、2番目のシステムでデータ・ポンプを使用して変換を実行するには、DEFGENユーティリティを使用して最初のシステムでソース定義ファイルを作成し、2番目のシステムに転送する必要があります。さらに、2番目のシステムでソース定義ファイルを作成し、3番目のシステムに転送する必要があります。定義ファイルと変換の詳細は、レプリケートされたデータとメタデータとの関連付けを参照してください。

- 2番目のシステムで、Replicatアクティビティを取得してローカル・ビジネス・アプリケーション・アクティビティを無視するようにExtractグループを構成する必要があります。この動作を制御するExtractパラメータは、IGNOREAPPLOPSおよびGETREPLICATESです。

5.5.1 ソース・システム

作成するオブジェクトのビジュアル表現は、図5-4を参照してください。

ソースのManagerプロセスを構成する手順

1. ソースで、Managerおよびネットワーク通信の構成の指示に従ってManagerプロセスを構成します。

2. Managerのパラメータ・ファイルで、PURGEOLDEXTRACTSパラメータを使用して、証跡からのファイルの消去を制御します。

ソースのプライマリExtractグループを構成する手順

1. ソースで、ADD EXTRACTコマンドを使用してExtractグループを作成します。説明上、このグループをext_1と呼びます。

ADD EXTRACT ext_1, {TRANLOG | INTEGRATED TRANLOG}, BEGIN time [option[, ...]]

これらのオプション、およびインストール環境によって必要になるその他のADD EXTRACTオプションの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

2. ソースで、ADD EXTTRAILコマンドを使用してローカル証跡を作成します。

ADD EXTTRAIL local_trail_1, EXTRACT ext_1

EXTRACT引数を使用して、この証跡をext_1 Extractグループにリンクします。

3. ソースで、EDIT PARAMSコマンドを使用してext_1 Extractグループのパラメータ・ファイルを作成します。次のパラメータと、データベース環境に適用する他のパラメータを含めます。考えられるその他の必須パラメータの詳細は、使用中のデータベースに対応するOracle GoldenGateインストレーションおよびセットアップ・ガイドを参照してください。

-- Identify the Extract group:
EXTRACT ext_1
-- Specify database login information as needed for the database:
[SOURCEDB dsn_1][, USERIDALIAS alias]
-- Log all scheduling columns if using integrated Replicat
LOGALLSUPCOLS
-- Specify the local trail that this Extract writes to
-- and encryption algorithm:
ENCRYPTTRAIL algorithm
EXTTRAIL local_trail
-- Specify tables and sequences to be captured:
SEQUENCE [container.|catalog.]owner.sequence;
TABLE [container.|catalog.]owner.table;

ソースのデータ・ポンプを構成する手順

1. ソースで、ADD EXTRACTコマンドを使用してデータ・ポンプ・グループを作成します。説明上、このグループをpump_1と呼びます。

ADD EXTRACT pump_1, EXTTRAILSOURCE local_trail_1, BEGIN time

データソース・オプションとしてEXTTRAILSOURCEを使用し、ローカル証跡の名前を指定します。

2. ソースで、ADD RMTTRAILコマンドを使用して、カスケード内の2番目のシステムに作成するリモート証跡を指定します。

ADD RMTTRAIL remote_trail_1, EXTRACT pump_1

EXTRACT引数を使用して、リモート証跡をpump_1データ・ポンプ・グループにリンクします。リンクされたデータ・ポンプは、この証跡に書込みを行います。

その他のADD RMTTRAILオプションは、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

3. ソースで、EDIT PARAMSコマンドを使用してpump_1データ・ポンプのパラメータ・ファイルを作成します。次のパラメータと、データベース環境に適用する他のパラメータを含めます。

-- Identify the data pump group:
EXTRACT pump_1
-- Specify database login information if using NOPASSTHROUGH:
[SOURCEDB dsn_1][, USERIDALIAS alias]
-- Decrypt the data only if the data pump must process it.
-- DECRYPTTRAIL
-- Specify the name or IP address of second system in cascade
-- and optional encryption of data over TCP/IP:
RMTHOSTOPTIONS target_1, MGRPORT port_number, ENCRYPT encryption_options
-- Specify the remote trail and encryption algorithm on the second system:
ENCRYPTTRAIL algorithm
RMTTRAIL remote_trail_1
-- Specify tables and sequences to be captured:
SEQUENCE [container.|catalog.]owner.sequence;
TABLE [container.|catalog.]owner.table;

5.5.2 カスケード内の2番目のシステム

カスケード内の2番目のシステムで、Managerプロセス、Replicatグループおよびデータ・ポンプを構成します。

2番目のシステムのManagerプロセスを構成する手順

1. 2番目のシステムで、Managerおよびネットワーク通信の構成の指示に従ってManagerプロセスを構成します。

2. Managerのパラメータ・ファイルで、PURGEOLDEXTRACTSパラメータを使用して、証跡からのファイルの消去を制御します。

2番目のシステムのReplicatグループを構成する手順

1. Replicatのチェックポイント表を作成します(Oracle統合Replicatを使用していない場合)。手順については、「チェックポイント表の作成」を参照してください。

2. 2番目のシステムで、ADD REPLICATコマンドを使用してReplicatグループを作成します。説明上、このグループをrep_1と呼びます。

ADD REPLICAT rep_1
[, INTEGRATED | COORDINATED [MAXTHREADS number]]
, EXTTRAIL remote_trail_1,
, BEGIN time

EXTTRAILオプションを使用して、rep_1グループをローカル・システムにあるリモート証跡remote_trail_1にリンクします。

これらのオプション、およびインストール環境によって必要になるその他のオプションの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

3. 2番目のシステムで、EDIT PARAMSコマンドを使用してReplicatグループのパラメータ・ファイルを作成します。次のパラメータと、データベース環境に適用する他のパラメータを含めます。考えられるその他の必須パラメータの詳細は、使用中のデータベースに対応するOracle GoldenGateインストレーションおよびセットアップ・ガイドを参照してください。

-- Identify the Replicat group:
REPLICAT rep_1
-- Specify database login information as needed for the database:
[TARGETDB dsn_2][, USERIDALIAS alias]
-- Specify error handling rules:
REPERROR (error, response)
-- Specify tables for delivery and threads if using coordinated Replicat:
MAP [container.|catalog.]owner.table, TARGET owner.table[, DEF template]
[, THREAD (thread_ID)][, THREADRANGE (thread_range[, column_list])]
;

注意:

DB2 for iでは、ターゲット表がすでにジャーナルされている場合、ADD TRANDATAコマンドの使用が必要になることがあります。または、STRJRNPFコマンドを使用して、表を適切なジャーナルに割り当てることができます。ターゲット表をOracle GoldenGateでレプリケートする必要がない場合は、IMAGES(*AFTER)オプションをSTRJRNPFで使用できます。Oracle GoldenGateは、トランザクションを使用して動作するため、トランザクションをサポートするには、すべての表をジャーナルする必要がありますが、これはDB2 for iではデフォルトではありません。

2番目のシステムのExtractグループを構成する手順

1. ソースで、ADD EXTRACTコマンドを使用してExtractグループを作成します。説明上、このグループをext_2と呼びます。

ADD EXTRACT ext_2, {TRANLOG | INTEGRATED TRANLOG}, BEGIN time [option[, ...]]

これらのオプション、およびインストール環境によって必要になるその他のADD EXTRACTオプションの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

2. 2番目のシステムで、ADD EXTTRAILコマンドを使用して3番目のシステムに作成するローカル証跡を指定します。

ADD EXTTRAIL local_trail_2, EXTRACT ext_2

EXTRACT引数を使用して、このローカル証跡をext_2 Extractグループにリンクします。

3. 2番目のシステムで、EDIT PARAMSコマンドを使用してext_2 Extractグループのパラメータ・ファイルを作成します。次のパラメータと、データベース環境に適用する他のパラメータを含めます。考えられるその他の必須パラメータの詳細は、使用中のデータベースに対応するOracle GoldenGateインストレーションおよびセットアップ・ガイドを参照してください。

-- Identify the Extract group:
EXTRACT ext_2
-- Specify database login information as needed for the database:
[SOURCEDB dsn_2][, USERIDALIAS alias]
-- Log all scheduling columns if using integrated Replicat
LOGALLSUPCOLS
-- Specify the local trail that this Extract writes to
-- and encryption algorithm:
ENCRYPTTRAIL algorithm
EXTTRAIL local_trail_2
-- Ignore local DML, capture Replicat DML:
IGNOREAPPLOPS, GETREPLICATES
-- Specify tables and sequences to be captured:
SEQUENCE [container.|catalog.]owner.sequence;
TABLE [container.|catalog.]owner.table;

注意:

DDL操作をレプリケートする場合、IGNOREAPPLOPS, GETREPLICATES機能は、DDLOPTIONSパラメータによって制御されます。

2番目のシステムのデータ・ポンプを構成する手順

1. 2番目のシステムで、ADD EXTRACTコマンドを使用してデータ・ポンプ・グループを作成します。説明上、このグループをpump_2と呼びます。

ADD EXTRACT pump_2, EXTTRAILSOURCE local_trail_2, BEGIN time

データソース・オプションとしてEXTTRAILSOURCEを使用し、ローカル証跡の名前を指定します。

2. 2番目のシステムで、ADD RMTTRAILコマンドを使用して、カスケード内の3番目のシステムに作成するリモート証跡を指定します。

ADD RMTTRAIL remote_trail_2, EXTRACT pump_2

EXTRACT引数を使用して、リモート証跡をpump_2データ・ポンプ・グループにリンクします。リンクされたデータ・ポンプは、この証跡に書込みを行います。

その他のADD RMTTRAILオプションは、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

3. 2番目のシステムで、EDIT PARAMSコマンドを使用してpump_2データ・ポンプのパラメータ・ファイルを作成します。次のパラメータと、データベース環境に適用する他のパラメータを含めます。

-- Identify the data pump group:
EXTRACT pump_2
-- Specify database login information if using NOPASSTHRU:
[SOURCEDB dsn_2][, USERIDALIAS alias]
-- Decrypt the data only if the data pump must process it.
-- DECRYPTTRAIL
-- Specify the name or IP address of third system in cascade
-- and optional encryption of data over TCP/IP:
RMTHOSTOPTIONS target_2, MGRPORT port_number, ENCRYPT encryption_options
-- Specify the remote trail and encryption algorithm on the third system:
ENCRYPTTRAIL algorithm
RMTTRAIL remote_trail_2
-- Specify tables and sequences to be captured:
SEQUENCE [container.|catalog.]owner.sequence;
TABLE [container.|catalog.]owner.table;

5.5.3 カスケード内の3番目のシステム

カスケード内の3番目のシステムでManagerプロセスとReplicatグループを構成します。

Managerプロセスを構成する手順

1. 3番目のシステムで、Managerおよびネットワーク通信の構成の指示に従ってManagerプロセスを構成します。

2. Managerのパラメータ・ファイルで、PURGEOLDEXTRACTSパラメータを使用して、証跡からのファイルの消去を制御します。

Replicatグループを構成する手順

1. 3番目のシステムで、Replicatのチェックポイント表を作成します(Oracle統合Replicatを使用していない場合)。手順については、「チェックポイント表の作成」を参照してください。

2. 3番目のシステムで、ADD REPLICATコマンドを使用してReplicatグループを作成します。説明上、このグループをrep_2と呼びます。

ADD REPLICAT rep_2
[, INTEGRATED | COORDINATED [MAXTHREADS number]]
, EXTTRAIL remote_trail_2,
, BEGIN time

EXTTRAILオプションを使用して、rep_2グループをremote_trail_2証跡にリンクします。

これらのオプション、およびインストール環境によって必要になるその他のオプションの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

3. 3番目のシステムで、EDIT PARAMSコマンドを使用してReplicatグループのパラメータ・ファイルを作成します。次のパラメータと、データベース環境に適用する他のパラメータを含めます。考えられるその他の必須パラメータの詳細は、使用中のデータベースに対応するOracle GoldenGateインストレーションおよびセットアップ・ガイドを参照してください。

-- Identify the Replicat group:
REPLICAT rep_2
-- Specify database login information as needed for the database:
[TARGETDB dsn_3][, USERIDALIAS alias]
-- Specify error handling rules:
REPERROR (error, response)
-- Specify tables for delivery and threads if using coordinated Replicat:
MAP [container.|catalog.]owner.table, TARGET owner.table[, DEF template]
[, THREAD (thread_ID)][, THREADRANGE (thread_range[, column_list])]
;

注意:

DB2 for iでは、ターゲット表がすでにジャーナルされている場合、ADD TRANDATAコマンドの使用が必要になることがあります。または、STRJRNPFコマンドを使用して、表を適切なジャーナルに割り当てることができます。ターゲット表をOracle GoldenGateでレプリケートする必要がない場合は、IMAGES(*AFTER)オプションをSTRJRNPFで使用できます。Oracle GoldenGateは、トランザクションを使用して動作するため、トランザクションをサポートするには、すべての表をジャーナルする必要がありますが、これはDB2 for iではデフォルトではありません。

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

この章では、リアルタイム・データ分散でOracle GoldenGateを使用する方法について説明します。

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

- データ分散構成の概要

- データ分散構成の考慮事項

- データ分散構成の作成

6.1 データ分散構成の概要

データ分散構成は、1対多構成です。Oracle GoldenGateでは、ソース・データベースから任意の数のターゲット・システムへの同期がサポートされます。Oracle GoldenGateは同種間あるいは異種間のデータ転送をサポートし、構成内のいずれのシステム上でもフィルタリングや変換が可能なためです(サポート内容はデータベース・プラットフォームごとに異なります)。

6.2 データ分散構成の考慮事項

次の各項では、データ分散構成の考慮事項について説明します。

6.2.1 フォルト・トレランス

データ分散構成では、ソース・システム上でデータ・ポンプを使用することで、いずれかのターゲットに対するネットワーク接続に障害が発生した場合でも確実に取得データを他のターゲットに送信できます。プライマリExtractグループとデータ・ポンプExtractグループを、ターゲットごとに1つ使用してください。

6.2.2 フィルタリングおよび変換

任意のプロセスを使用してフィルタリングおよび変換を実行できます。ただし、フィルタリング操作の実行にデータ・ポンプを使用することで、その処理のオーバーヘッドがプライマリExtractグループから削減され、ネットワークを通じて送信されるデータ量が減少します。フィルタリングと変換のオプションは、データのマッピングおよび操作を参照してください。

6.2.3 読取り専用と高可用性の比較

データ分散構成では、読取り専用ターゲットがサポートされます。この構成の任意のターゲットを、高可用性をサポートするトランザクション・アクティビティにも使用する場合は、アクティブ/アクティブ型高可用性のためのOracle GoldenGateの構成を参照してください。

6.2.4 追加情報

次のドキュメントには、Oracle GoldenGateの構成に関連する追加情報が記載されています。

- その他のシステム要件、プロセス構成およびデータベースの設定要件については、使用中のデータベース・タイプに対応するOracle GoldenGateのインストレーションおよび構成のドキュメントを参照してください。これらのガイドはこのマニュアルのはじめににリストされています。

- Oracle GoldenGateの変更取得および配信グループの構成方法の詳細は、オンライン変更同期の構成を参照してください。

- Oracle GoldenGateのその他のチューニング・オプションは、Oracle GoldenGateのパフォーマンスのチューニングを参照してください。

- Oracle GoldenGateのコマンドとパラメータの構文の詳細および説明は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

6.3 データ分散構成の作成

作成するオブジェクトのビジュアル表現は、図6-1を参照してください。

図6-1 データ分散のOracle GoldenGate構成要素

6.3.1 ソース・システム

ソース・システムでManagerプロセスとプライマリExtractを構成します。

Managerプロセスを構成する手順

1. ソースで、Managerプロセスを構成します。手順については、Managerおよびネットワーク通信の構成を参照してください。

2. Managerパラメータ・ファイルでは、PURGEOLDEXTRACTSパラメータを使用してローカル証跡からのファイルの削除を制御します。

プライマリExtractを構成する手順

1. ソースで、ADD EXTRACTコマンドを使用してExtractグループを作成します。説明上、このグループをextと呼びます。

ADD EXTRACT ext, {TRANLOG | INTEGRATED TRANLOG}, BEGIN time [option[, ...]]

これらのオプション、およびインストール環境によって必要になるその他のADD EXTRACTオプションの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

2. ソースで、ADD EXTTRAILコマンドを使用してローカル証跡を作成します。

ADD EXTTRAIL local_trail, EXTRACT ext

EXTRACT引数を使用して、この証跡をプライマリExtractグループにリンクします。プライマリExtractグループがこの証跡に書込みを行い、データ・ポンプ・グループがそのデータを読み取ります。

3. ソースで、EDIT PARAMSコマンドを使用してプライマリExtractグループのパラメータ・ファイルを作成します。次のパラメータと、データベース環境に適用する他のパラメータを含めます。考えられるその他の必須パラメータの詳細は、使用中のデータベースに対応するOracle GoldenGateインストレーションおよびセットアップ・ガイドを参照してください。

-- Identify the Extract group:
EXTRACT ext
-- Specify database login information as needed for the database:
[SOURCEDB dsn_1][, USERIDALIAS alias]
-- Log all scheduling columns if using integrated Replicat
LOGALLSUPCOLS
-- Specify the local trail that this Extract writes to
-- and encryption algorithm:
ENCRYPTTRAIL algorithm
EXTTRAIL local_trail
-- Specify tables and sequences to be captured:
SEQUENCE [container.|catalog.]owner.sequence;
TABLE [container.|catalog.]owner.table;

EXTTRAILを使用してローカル証跡を指定します。

データ・ポンプExtractグループを構成する手順

1. ソースで、ADD EXTRACTコマンドを使用して、ターゲット・システムごとにデータ・ポンプを作成します。説明上、これらのグループをpump_1およびpump_2と呼びます。

ADD EXTRACT pump_1, EXTTRAILSOURCE local_trail, BEGIN time
ADD EXTRACT pump_2, EXTTRAILSOURCE local_trail, BEGIN time

データソース・オプションとしてEXTTRAILSOURCEを使用し、ローカル証跡の名前を指定します。

2. ソースで、ADD RMTTRAILコマンドを使用して、各ターゲット・システムに作成するリモート証跡を指定します。

ADD RMTTRAIL remote_trail_1, EXTRACT pump_1
ADD RMTTRAIL remote_trail_2, EXTRACT pump_2

EXTRACT引数を使用して、各リモート証跡を異なるデータ・ポンプ・グループにリンクします。リンクされたデータ・ポンプは、この証跡に書込みを行います。

その他のADD RMTTRAILオプションは、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

3. ソースで、EDIT PARAMSコマンドを使用して各データ・ポンプのパラメータ・ファイルを作成します。次のパラメータと、データベース環境に適用する他のパラメータを含めます。

pump_1のパラメータ・ファイル:

-- Identify the data pump group:
EXTRACT pump_1
-- Specify database login information:
[SOURCEDB dsn_1][, USERIDALIAS alias]
-- Decrypt the data only if the data pump must process it.
-- DECRYPTTRAIL
-- Specify the name or IP address of the first target system
-- and optional encryption of data over TCP/IP:
RMTHOSTOPTIONS target_1, MGRPORT port_number, ENCRYPT encryption_options
-- Specify remote trail and encryption algorithm on first target system:
ENCRYPTTRAIL algorithm
RMTTRAIL remote_trail_1
-- Specify tables and sequences to be captured:
SEQUENCE [container.|catalog.]owner.sequence;
TABLE [container.|catalog.]owner.table;

pump_2のパラメータ・ファイル:

-- Identify the data pump group:
EXTRACT pump_2
-- Specify database login information as needed for the database:
[SOURCEDB dsn_1][, USERIDALIAS alias]
-- Decrypt the data only if the data pump must process it.
-- DECRYPTTRAIL
-- Specify the name or IP address of the second target system
-- and optional encryption of data over TCP/IP:
RMTHOSTOPTIONS target_2, MGRPORT port_number, ENCRYPT encryption_options
-- Specify remote trail and encryption algorithm on second target system:
ENCRYPTTRAIL algorithm
RMTTRAIL remote_trail_2
-- Specify tables and sequences to be captured:
SEQUENCE [container.|catalog.]owner.sequence;
TABLE [container.|catalog.]owner.table;

6.3.2 ターゲット・システム

ターゲット・システムでManagerプロセスとReplicatグループを構成します。

Managerプロセスを構成する手順

1. 各ターゲットで、Managerプロセスを構成します。手順については、Managerおよびネットワーク通信の構成を参照してください。

2. Managerの各パラメータ・ファイルで、PURGEOLDEXTRACTSパラメータを使用して、証跡からのファイルの消去を制御します。

Replicatグループを構成する手順

1. 各ターゲットで、Replicatのチェックポイント表を作成します(Oracle統合Replicatを使用していない場合)。手順については、「チェックポイント表の作成」を参照してください。

2. 各ターゲットで、ADD REPLICATコマンドを使用して、そのシステムのリモート証跡に対するReplicatグループを作成します。説明上、これらのグループをrep_1およびrep_2と呼びます。

target_1でのコマンド:

ADD REPLICAT rep_1
[, INTEGRATED | COORDINATED [MAXTHREADS number]]
, EXTTRAIL remote_trail_1, BEGIN time

target_2でのコマンド:

ADD REPLICAT rep_2
[, INTEGRATED | COORDINATED [MAXTHREADS number]]
, EXTTRAIL remote_trail_2, BEGIN time

EXTTRAIL引数を使用して、Replicatグループを適切な証跡にリンクします。

これらのオプション、およびインストール環境によって必要になるその他のオプションの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

3. 各ターゲットで、EDIT PARAMSコマンドを使用してReplicatグループのパラメータ・ファイルを作成します。次のパラメータと、データベース環境に適用する他のパラメータを使用します。考えられるその他の必須パラメータの詳細は、使用中のデータベースに対応するOracle GoldenGateインストレーションおよびセットアップ・ガイドを参照してください。

rep_1のパラメータ・ファイル:

-- Identify the Replicat group:
REPLICAT rep_1
-- Specify database login information as needed for the database:
[TARGETDB dsn_2][, USERIDALIAS alias]
-- Specify error handling rules:
REPERROR (error, response)
-- Specify tables for delivery and threads if using coordinated Replicat:
MAP [container.|catalog.]owner.table, TARGET owner.table[, DEF template]
[, THREAD (thread_ID)][, THREADRANGE (thread_range[, column_list])]
;

rep_2のパラメータ・ファイル:

-- Identify the Replicat group:
REPLICAT rep_2
-- Specify database login information as needed for the database:
[TARGETDB dsn_3][, USERIDALIAS alias]
-- Specify error handling rules:
REPERROR (error, response)
-- Specify tables for delivery and threads if using coordinated Replicat:
MAP [container.|catalog.]owner.table, TARGET owner.table[, DEF template]
[, THREAD (thread_ID)][, THREADRANGE (thread_range[, column_list])]
;

どのReplicatグループに対しても任意の数のMAP文を使用できます。特定のReplicatグループに対するすべてのMAP文では、そのグループにリンクされた証跡に含まれる同じオブジェクトを指定する必要があります。

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

この章では、リアルタイム・データ・ウェアハウス用にOracle GoldenGateを構成する方法について説明します。

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

- データ・ウェアハウス構成の概要

- データ・ウェアハウス構成の考慮事項

- データ・ウェアハウス構成の作成

7.1 データ・ウェアハウス構成の概要

データ・ウェアハウス構成は、多対1構成です。複数のソース・データベースが1つのターゲット・ウェアハウス・データベースにデータを送信します。Oracle GoldenGateは同種間あるいは異種間のデータ転送をサポートし、構成内のいずれのシステム上でもフィルタリングや変換が可能なためです(サポート内容はデータベース・プラットフォームごとに異なります)。

7.2 データ・ウェアハウス構成の考慮事項

この項では、データ・ウェアハウス構成の考慮事項について説明します。

7.2.1 データ・レコードの分離

この構成では、各ソース・データベースがターゲット・システムに異なるレコードを提供すると仮定されます。2つ以上のソース・システムの同じ表内に同じレコードが存在し、そのレコードがどのシステムでも変更される可能性がある場合、両方のソースでそのレコードが同時に変更されてターゲット表にレプリケートされたときの競合を解決するため、競合解決ルーチンが必要です。競合解決の詳細は、アクティブ/アクティブ型高可用性のためのOracle GoldenGateの構成を参照してください。

7.2.2 データ記憶域

ソース・システムとターゲット・システムにデータ記憶域を分割することで、ターゲット・システムに大量のディスク領域を用意する必要がなくなります。これを行うには、ネットワークを通じて各Extractからターゲットに直接データを送信するのではなく、各ソースでデータ・ポンプを使用します。

- プライマリExtractは、各ソースのローカル証跡に書込みを行います。

- 各ソースのデータ・ポンプExtractは、ローカル証跡を読み取り、TCP/IPを通じてそのデータを専用のReplicatグループに送信します。

7.2.3 フィルタリングおよび変換

ソース・システムからデータのすべてをデータ・ウェアハウスに送信するわけではない場合、データ・ポンプを使用してフィルタリングを実行できます。これによって、その処理のオーバーヘッドがプライマリExtractグループから削減され、ネットワークを通じて送信されるデータ量が減少します。フィルタリングと変換のオプションは、データのマッピングおよび操作を参照してください。

7.2.4 追加情報

次のドキュメントには、Oracle GoldenGateの構成に関連する追加情報が記載されています。

- その他のシステム要件、プロセス構成およびデータベースの設定要件については、使用中のデータベース・タイプに対応するOracle GoldenGateのインストレーションおよび構成のドキュメントを参照してください。これらのガイドはこのマニュアルのはじめににリストされています。

- Oracle GoldenGateの変更取得および配信グループの構成方法の詳細は、オンライン変更同期の構成を参照してください。

- Oracle GoldenGateのその他のチューニング・オプションは、Oracle GoldenGateのパフォーマンスのチューニングを参照してください。

- Oracle GoldenGateのコマンドとパラメータの構文の詳細および説明は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

7.3 データ・ウェアハウス構成の作成

作成するオブジェクトのビジュアル表現は、図7-1を参照してください。

図7-1 データ・ウェアハウスの構成

7.3.1 ソース・システム

ソース・システムのManagerプロセスとプライマリExtractグループを構成します。

Managerプロセスを構成する手順

1. 各ソースで、Managerおよびネットワーク通信の構成の指示に従ってManagerプロセスを構成します。

2. Managerの各パラメータ・ファイルで、PURGEOLDEXTRACTSパラメータを使用して、ローカル・システムにある証跡からのファイルの消去を制御します。

プライマリExtractグループを構成する手順

1. 各ソースで、ADD EXTRACTコマンドを使用してプライマリExtractグループを作成します。説明上、これらのグループをext_1およびext_2と呼びます。
source_1でのコマンド:

ADD EXTRACT ext_1, {TRANLOG | INTEGRATED TRANLOG}, BEGIN time [option[, ...]]

source_2でのコマンド:

ADD EXTRACT ext_2, {TRANLOG | INTEGRATED TRANLOG}, BEGIN time [option[, ...]]

これらのオプション、およびインストール環境によって必要になるその他のADD EXTRACTオプションの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

2. 各ソースで、ADD EXTTRAILコマンドを使用してローカル証跡を作成します。
source_1でのコマンド:

ADD EXTTRAIL local_trail_1, EXTRACT ext_1

source_2でのコマンド:

ADD EXTTRAIL local_trail_2, EXTRACT ext_2

EXTRACT引数を使用して、各Extractグループを同じシステムのローカル証跡にリンクします。プライマリExtractがこの証跡に書込みを行い、データ・ポンプがそのデータを読み取ります。

3. 各ソースで、EDIT PARAMSコマンドを使用してプライマリExtractのパラメータ・ファイルを作成します。次のパラメータと、データベース環境に適用する他のパラメータを含めます。考えられるその他の必須パラメータの詳細は、使用中のデータベースに対応するOracle GoldenGateインストレーションおよびセットアップ・ガイドを参照してください。
ext_1のパラメータ・ファイル:

-- Identify the Extract group:
EXTRACT ext_1
-- Specify database login information as needed for the database:
[SOURCEDB dsn_1][, USERIDALIAS alias]
-- Log all scheduling columns if using integrated Replicat
LOGALLSUPCOLS
-- Specify the local trail that this Extract writes to
-- and the encryption algorithm:
ENCRYPTTRAIL algorithm
EXTTRAIL local_trail_1
-- Specify tables and sequences to be captured:
SEQUENCE [container.|catalog.]owner.sequence;
TABLE [container.|catalog.]owner.table;

ext_2のパラメータ・ファイル:

-- Identify the Extract group:
EXTRACT ext_2
-- Specify database login information as needed for the database:
[SOURCEDB dsn_2][, USERIDALIAS alias]
-- Log all scheduling columns if using integrated Replicat or CDR
LOGALLSUPCOLS
-- Specify the local trail that this Extract writes to
-- and the encryption algorithm:
ENCRYPTTRAIL algorithm
EXTTRAIL local_trail_2
-- Specify tables and sequences to be captured:
SEQUENCE [container.|catalog.]owner.sequence;
TABLE [container.|catalog.]owner.table;

データ・ポンプを構成する手順

1. 各ソースで、ADD EXTRACTコマンドを使用してデータ・ポンプExtractグループを作成します。説明上、これらのポンプをpump_1およびpump_2と呼びます。

source_1でのコマンド:

ADD EXTRACT pump_1, EXTTRAILSOURCE local_trail_1, BEGIN time

source_2でのコマンド:

ADD EXTRACT pump_2, EXTTRAILSOURCE local_trail_2, BEGIN time

データソース・オプションとしてEXTTRAILSOURCEを使用し、ローカル・システムの証跡の名前を指定します。

2. 各ソースで、ADD RMTTRAILコマンドを使用してターゲットにリモート証跡を作成します。

source_1でのコマンド:

ADD RMTTRAIL remote_trail_1, EXTRACT pump_1

source_2でのコマンド:

ADD RMTTRAIL remote_trail_2, EXTRACT pump_2

EXTRACT引数を使用して、各リモート証跡を異なるデータ・ポンプにリンクします。データ・ポンプがTCP/IPを通じてこの証跡に書込みを行い、Replicatがそのデータを読み取ります。

その他のADD RMTTRAILオプションは、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

3. 各ソースで、EDIT PARAMSコマンドを使用してデータ・ポンプ・グループのパラメータ・ファイルを作成します。次のパラメータと、データベース環境に適用する他のパラメータを含めます。

pump_1のパラメータ・ファイル:

-- Identify the data pump group:
EXTRACT pump_1
-- Specify database login information as needed for the database:
[SOURCEDB dsn_1][, USERIDALIAS alias]
-- Decrypt the data only if the data pump must process it.
-- DECRYPTTRAIL
-- Specify the name or IP address of the target system
-- and optional encryption of data over TCP/IP:
RMTHOSTOPTIONS target, MGRPORT port_number, ENCRYPT encryption_options
-- Specify the remote trail and encryption algorithm on the target system:
ENCRYPTTRAIL algorithm
RMTTRAIL remote_trail_1
-- Specify tables and sequences to be captured:
SEQUENCE [container.|catalog.]owner.sequence;
TABLE [container.|catalog.]owner.table;

pump_2のパラメータ・ファイル:

-- Identify the data pump group:
EXTRACT pump_1
-- Specify database login information as needed for the database:
[SOURCEDB dsn_2][, USERIDALIAS alias]
-- Decrypt the data only if the data pump must process it.
-- DECRYPTTRAIL
-- Specify the name or IP address of the target system
-- and optional encryption of data over TCP/IP:
RMTHOSTOPTIONS target, MGRPORT port_number, ENCRYPT encryption_options
-- Specify the remote trail and encryption algorithm on the target system:
ENCRYPTTRAIL algorithm
RMTTRAIL remote_trail_2
-- Specify tables and sequences to be captured:
SEQUENCE [container.|catalog.]owner.sequence;
TABLE [container.|catalog.]owner.table;

7.3.2 ターゲット・システム

ターゲット・システムのManagerプロセスとプライマリReplicatグループを構成します。

Managerプロセスを構成する手順

1. Managerプロセスの構成手順については、Managerおよびネットワーク通信の構成を参照してください。

2. Managerのパラメータ・ファイルで、PURGEOLDEXTRACTSパラメータを使用して、証跡からのファイルの消去を制御します。

Replicatグループを構成する手順

1. ターゲットで、Replicatのチェックポイント表を作成します(Oracle統合Replicatを使用していない場合)。手順については、「チェックポイント表の作成」を参照してください。

2. ターゲットで、ADD REPLICATコマンドを使用して、作成した各リモート証跡に対するReplicatグループを作成します。説明上、これらのグループをrep_1およびrep_2と呼びます。

rep_1を追加するコマンド:

ADD REPLICAT rep_1
[, INTEGRATED | COORDINATED [MAXTHREADS number]]
, EXTTRAIL remote_trail_1, BEGIN time

rep_2を追加するコマンド:

ADD REPLICAT rep_2
[, INTEGRATED | COORDINATED [MAXTHREADS number]]
, EXTTRAIL remote_trail_2, BEGIN time

EXTTRAIL引数を使用して、Replicatグループを証跡にリンクします。

これらのオプション、およびインストール環境によって必要になるその他のオプションの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

3. ターゲットで、EDIT PARAMSコマンドを使用して各Replicatグループのパラメータ・ファイルを作成します。次のパラメータと、データベース環境に適用する他のパラメータを含めます。考えられるその他の必須パラメータの詳細は、使用中のデータベースに対応するOracle GoldenGateインストレーションおよびセットアップ・ガイドを参照してください。

rep_1のパラメータ・ファイル:

-- Identify the Replicat group:
REPLICAT rep_1
-- Specify database login information as needed for the database:
[TARGETDB dsn_3][, USERIDALIAS alias]
-- Specify error handling rules:
REPERROR (error, response)
-- Specify tables for delivery and threads if using coordinated Replicat:
MAP [container.|catalog.]owner.table, TARGET owner.table[, DEF template]
[, THREAD (thread_ID)][, THREADRANGE (thread_range[, column_list])]
;

rep_1のパラメータ・ファイル:

-- Identify the Replicat group:
REPLICAT rep_2
-- Specify database login information as needed for the database:
[TARGETDB dsn_3][, USERIDALIAS alias]
-- Specify error handling rules:
REPERROR (error, response)
-- Specify tables for delivery and threads if using coordinated Replicat:
MAP [container.|catalog.]owner.table, TARGET owner.table[, DEF template]
[, THREAD (thread_ID)][, THREADRANGE (thread_range[, column_list])]
;

どのReplicatグループに対しても任意の数のMAP文を使用できます。特定のReplicatグループに対するすべてのMAP文では、そのグループにリンクされた証跡に含まれる同じオブジェクトを指定する必要があります。

8 ライブ・スタンバイ・データベース管理のためのOracle GoldenGateの構成

この章では、ライブ・スタンバイ・データベースの管理用にOracle GoldenGateを構成する方法について説明します。

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

- ライブ・スタンバイ構成の概要

- ライブ・スタンバイ構成の考慮事項

- ライブ・スタンバイ構成の作成

- スタンバイからアクティブ・ソースに対する構成

- 計画済スイッチオーバーでのユーザー・アクティビティの移動

- 計画外フェイルオーバーでのユーザー・アクティビティの移動

8.1 ライブ・スタンバイ構成の概要

Oracle GoldenGateでは、アクティブ/パッシブ型の双方向構成がサポートされます。この構成では、Oracle GoldenGateによって、計画停止および計画外停止時のフェイルオーバー用に準備されたライブ・スタンバイ・システムの完全レプリカ・データベースにアクティブ・プライマリ・データベースからデータがレプリケートされます。

この構成では、ライブ・スタンバイ・システム上にアクティブではないOracle GoldenGate Extractグループとアクティブではないデータ・ポンプが存在します。どちらのグループも、スイッチオーバーまたはフェイルオーバーでライブ・スタンバイ・システムにユーザー・アプリケーションが切り替えられるまで停止されています。ユーザー・アクティビティがスタンバイに移動すると、これらのグループはローカル証跡へのトランザクションの取得を開始します。データは、プライマリ・データベースが再度使用可能になるまでディスク上に格納されます。

プライマリ・システムに障害が発生した場合、Oracle GoldenGateのManagerプロセスとReplicatプロセスは、スタンバイから取得されたデータベース・インスタンスと連携して、プライマリ・システムのリカバリ後に2つのシステム間で同等性を回復します。ユーザーは、適切な時点でプライマリ・システムに再度移動され、Oracle GoldenGate構成は将来のフェイルオーバーに備えて再び準備完了モードに戻ります。

8.2 ライブ・スタンバイ構成の考慮事項

次の各項では、ライブ・スタンバイ構成の考慮事項について説明します。

8.2.1 信頼できるソース

プライマリ・データベースは、信頼できるソースです。これは、通常の運用モード時にアクティブ・ソースであるデータベースで、初期同期フェーズや後続のすべての再同期時に他のデータベースの導出元になるデータベースです。信頼できるソースのデータは定期的にバックアップしてください。

8.2.2 複製スタンバイ

ライブ・スタンバイのほとんどの実装では、ソース・データベースとターゲット・データベースは、内容および構造において同一です。データのマッピング、変換およびフィルタリングは、通常、この種の構成では適切な処理ではありませんが、ユーザーのビジネス・モデルで必要とされる場合、Oracle GoldenGateではこのような機能もサポートされます。これらの機能をサポートするには、TABLEパラメータおよびMAPパラメータのオプションを使用します。

8.2.3 スタンバイ・システムでのDML

アプリケーションが対応している場合、レポートや問合せにライブ・スタンバイ・システムを使用できますが、DMLは使用できません。Oracle GoldenGate構成のオブジェクトに影響するライブ・スタンバイ・システム上にアクティブなトランザクション型アプリケーションを配置する場合、そのアプリケーションはアクティブ/アクティブ構成で設定する必要があります。詳細は、アクティブ/アクティブ型高可用性のためのOracle GoldenGateの構成を参照してください。

8.2.4 Oracle GoldenGateプロセス

通常の運用モード時には、ライブ・スタンバイ・システムのプライマリExtractおよびデータ・ポンプは停止状態にし、アクティブ・ソースのReplicatも停止状態にします。この処理によって、スタンバイ・システムで誤って発生したDMLがアクティブ・ソースに伝播することを防止します。データをアクティブ・ソースからスタンバイ・システムに移動するExtract、データ・ポンプおよびReplicatのみアクティブにできます。

8.2.5 バックアップ・ファイル

プライマリ・システムとスタンバイ・システムにあるOracle GoldenGateの作業ディレクトリは、定期的にバックアップしてください。このバックアップには、Oracle GoldenGateのインストール・ディレクトリのルート・レベルにインストールされているすべてのファイルと、そのディレクトリ内のすべてのサブディレクトリを含める必要があります。Oracle GoldenGate環境のバックアップを保持しておくことで、プロセス・グループおよびパラメータ・ファイルを再作成する必要がなくなります。

8.2.6 フェイルオーバーの準備

プライマリ・システムとライブ・スタンバイ・システムは、計画済のスイッチオーバーまたは計画外のソース障害の発生時にユーザーが即座にアクセスできるように準備しておく必要があります。高可用性計画の次の構成要素を、各システムですぐに使用できるように準備してください。

- 挿入、更新および削除権限を付与するスクリプト。

- ライブ・スタンバイ・システムでトリガーおよびカスケード削除制約を有効化するスクリプト。(これらは、使用中のデータベース・タイプに対応するOracle GoldenGateのインストレーションおよび構成のドキュメントに記載された設定手順で無効になっている可能性があります。)

- アプリケーション・サーバーをスイッチオーバーし、アプリケーションを起動して、レプリケーション環境に含まれない必須ファイルをコピーするスクリプト。

- ソース・システムに障害が発生した場合にユーザーをライブ・スタンバイに移動するためのフェイルオーバー手順。

8.2.7 データベースによって生成される順序値

データベース生成による値(Oracle順序など)がキーの一部として使用される場合、その値の範囲は、重複しないように各システムで異なっている必要があります。アプリケーションが対応している場合、値に位置識別子を追加して強制的に一意性を確保できます。

Oracle Databaseの場合、各データベースで一意性を確保しながら順序をレプリケートするようにOracle GoldenGateを構成できます。順序をレプリケートするには、SEQUENCEパラメータおよびMAPパラメータを使用します。詳細は、『Oracle GoldenGate for Windows and UNIXリファレンス』を参照してください。

8.2.8 追加情報

次のドキュメントには、Oracle GoldenGateの構成に関連する追加情報が記載されています。

- その他のシステム要件、プロセス構成およびデータベースの設定要件については、使用中のデータベース・タイプに対応するOracle GoldenGateのインストレーションおよび構成のドキュメントを参照してください。これらのガイドはこのマニュアルのはじめににリストされています。

- Oracle GoldenGateの変更取得および配信グループの構成方法の詳細は、オンライン変更同期の構成を参照してください。

- Oracle GoldenGateのその他のチューニング・オプションは、Oracle GoldenGateのパフォーマンスのチューニングを参照してください。

- Oracle GoldenGateのコマンドとパラメータの構文の詳細および説明は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

8.3 ライブ・スタンバイ構成の作成

作成するオブジェクトのビジュアル表現は、図8-1を参照してください。

図8-1 ライブ・スタンバイのOracle GoldenGate構成要素

8.3.1 両システムの前提条件

両方のシステムで次の前提条件を実行します。

1. Replicatのチェックポイント表を作成します(Oracle統合Replicatを使用していない場合)。手順については、「チェックポイント表の作成」を参照してください

2. Managerおよびネットワーク通信の構成の指示に従ってManagerプロセスを構成します。

8.3.2 アクティブ・ソースからスタンバイに対する構成

次の手順では、プライマリ・データベースからデータを取得して、それをスタンバイ・データベースにレプリケートするよう、Oracle GoldenGateを構成します。

プライマリExtractグループを構成する手順

アクティブ・ソースで次の手順を実行します。

1. ソースで、ADD EXTRACTコマンドを使用してExtractグループを作成します。説明上、このグループをext_1と呼びます。

ADD EXTRACT ext_1, {TRANLOG | INTEGRATED TRANLOG}, BEGIN time [option[, ...]]

これらのオプション、およびインストール環境によって必要になるその他のADD EXTRACTオプションの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

2. ADD EXTTRAILコマンドを使用してローカル証跡を追加します。説明上、この証跡をlocal_trail_1と呼びます。

ADD EXTTRAIL local_trail_1, EXTRACT ext_1

EXTRACTでは、この証跡に書込みを行うext_1グループを指定します。

3. EDIT PARAMSコマンドを使用してext_1グループのパラメータ・ファイルを作成します。次のパラメータと、データベース環境に適用する他のパラメータを含めます。考えられるその他の必須パラメータの詳細は、使用中のデータベースに対応するOracle GoldenGateインストレーションおよびセットアップ・ガイドを参照してください。

-- Identify the Extract group:
EXTRACT ext_1
-- Specify database login information as needed for the database:
[SOURCEDB dsn_1][, USERIDALIAS alias]
-- Log all scheduling columns if using integrated Replicat
LOGALLSUPCOLS
-- Specify the local trail that this Extract writes to
-- and the encryption algorithm:
ENCRYPTTRAIL algorithm
EXTTRAIL local_trail_1
-- Specify sequences to be captured:
SEQUENCE [container.]owner.sequence;
-- Specify tables to be captured:
TABLE [container.]owner.*;

データ・ポンプを構成する手順

アクティブ・ソースで次の手順を実行します。

1. ADD EXTRACTコマンドを使用してデータ・ポンプ・グループを作成します。説明上、このグループをpump_1と呼びます。

ADD EXTRACT pump_1, EXTTRAILSOURCE local_trail_1, BEGIN time

EXTTRAILSOURCEでは、データソースとしてlocal_trail_1を指定します。

2. ADD RMTTRAILコマンドを使用して、スタンバイ・システムに作成するリモート証跡を指定します。

ADD RMTTRAIL remote_trail_1, EXTRACT pump_1

EXTRACTでは、この証跡に書込みを行うpump_1データ・ポンプを指定します。

その他のADD RMTTRAILオプションは、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

3. EDIT PARAMSコマンドを使用してpump_1グループのパラメータ・ファイルを作成します。次のパラメータと、データベース環境に適用する他のパラメータを含めます。

-- Identify the data pump group:
EXTRACT pump_1
-- Specify database login information as needed for the database:
[SOURCEDB dsn_1][, USERIDALIAS alias]
-- Decrypt the data only if the data pump must process it.
-- DECRYPTTRAIL
-- Specify the name or IP address of the standby system
-- and optional encryption of data over TCP/IP:
RMTHOSTOPTIONS system_2, MGRPORT port_number, ENCRYPT encryption_options
-- Specify the remote trail and encryption algorithm on the standby system:
ENCRYPTTRAIL algorithm
RMTTRAIL remote_trail_1
-- Specify sequences to be captured:
SEQUENCE [container.]owner.sequence;
-- Specify tables to be captured:
TABLE [container.]owner.*;

Replicatグループを構成する手順

ライブ・スタンバイ・システムで次の手順を実行します。

1. Replicatのチェックポイント表を作成します(Oracle統合Replicatを使用していない場合)。手順については、「チェックポイント表の作成」を参照してください。

2. ADD REPLICATコマンドを使用してReplicatグループを作成します。説明上、このグループをrep_1と呼びます。

ADD REPLICAT rep_1
[, INTEGRATED | COORDINATED [MAXTHREADS number]]
, EXTTRAIL remote_trail_1, BEGIN time

EXTTRAILでは、このReplicatが読み取る証跡としてremote_trail_1を指定します。

これらのオプション、およびインストール環境によって必要になるその他のオプションの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

3. EDIT PARAMSコマンドを使用してrep_1グループのパラメータ・ファイルを作成します。次のパラメータと、データベース環境に適用する他のパラメータを含めます。考えられるその他の必須パラメータの詳細は、使用中のデータベースに対応するOracle GoldenGateインストレーションおよびセットアップ・ガイドを参照してください。

-- Identify the Replicat group:
REPLICAT rep_1
-- State that source and target definitions are identical:
ASSUMETARGETDEFS
-- Specify database login information as needed for the database:
[TARGETDB dsn_2][, USERIDALIAS alias]
-- Specify error handling rules:
REPERROR (error, response)
-- Specify tables for delivery and threads if using coordinated Replicat:
MAP [container.|catalog.]owner.table, TARGET owner.table[, DEF template]
[, THREAD (thread_ID)][, THREADRANGE (thread_range[, column_list])]
;

8.4 スタンバイからアクティブ・ソースに対する構成

次の手順では、Oracle GoldenGateをパッシブ・モードで構成します。このモードでは、Oracle GoldenGateプロセスは、トランザクション・アクティビティをセカンダリ・システムにスイッチオーバーした後に、セカンダリ・システムからデータを取得して、それをプライマリ・データベースにレプリケートする準備はできていますが、作業は開始されません。

注意:

この手順は、これまでに作成した構成を逆にするイメージです。

プライマリExtractグループを構成する手順

ライブ・スタンバイ・システムで次の手順を実行します。

1. ソースで、ADD EXTRACTコマンドを使用してExtractグループを作成します。説明上、このグループをext_2と呼びます。

ADD EXTRACT ext_2, {TRANLOG | INTEGRATED TRANLOG}, BEGIN time [option[, ...]]

これらのオプション、およびインストール環境によって必要になるその他のADD EXTRACTオプションの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

2. ADD EXTTRAILコマンドを使用してローカル証跡を追加します。説明上、この証跡をlocal_trail_2と呼びます。

ADD EXTTRAIL local_trail_2, EXTRACT ext_2

EXTRACTでは、この証跡に書込みを行うext_2グループを指定します。

3. EDIT PARAMSコマンドを使用してext_2グループのパラメータ・ファイルを作成します。次のパラメータと、データベース環境に適用する他のパラメータを含めます。考えられるその他の必須パラメータの詳細は、使用中のデータベースに対応するOracle GoldenGateインストレーションおよびセットアップ・ガイドを参照してください。

-- Identify the Extract group:
EXTRACT ext_2
-- Specify database login information as needed for the database:
[SOURCEDB dsn_2][, USERIDALIAS alias]
-- Log all scheduling columns if using integrated Replicat
LOGALLSUPCOLS
-- Specify the local trail this Extract writes to and the encryption algorithm:
ENCRYPTTRAIL algorithm
EXTTRAIL local_trail_2
-- Specify sequences to be captured:
SEQUENCE [container.]owner.sequence;
-- Specify tables to be captured:
TABLE [container.]owner.*;

データ・ポンプを構成する手順

ライブ・スタンバイ・システムで次の手順を実行します。

1. ADD EXTRACTコマンドを使用してデータ・ポンプ・グループを作成します。説明上、このグループをpump_2と呼びます。

ADD EXTRACT pump_2, EXTTRAILSOURCE local_trail_2, BEGIN time

EXTTRAILSOURCEでは、データソースとしてlocal_trail_2を指定します。

2. ADD RMTTRAILコマンドを使用して、アクティブ・ソース・システムに作成するリモート証跡remote_trail_2を追加します。

ADD RMTTRAIL remote_trail_2, EXTRACT pump_2

EXTRACTでは、この証跡に書込みを行うpump_2データ・ポンプを指定します。

その他のADD RMTTRAILオプションは、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

3. EDIT PARAMSコマンドを使用してpump_2グループのパラメータ・ファイルを作成します。次のパラメータと、データベース環境に適用する他のパラメータを含めます。

-- Identify the data pump group:
EXTRACT pump_2
-- Specify database login information as needed for the database:
[SOURCEDB dsn_2][, USERIDALIAS alias]
-- Decrypt the data only if the data pump must process it.
-- DECRYPTTRAIL
-- Specify the name or IP address of the active source system
-- and optional encryption of data over TCP/IP:
RMTHOSTOPTIONS system_1, MGRPORT port_number, ENCRYPT encryption_options
-- Specify remote trail and encryption algorithm on active source system:
ENCRYPTTRAIL algorithm
RMTTRAIL remote_trail_2
-- Specify sequences to be captured:
SEQUENCE [container.]owner.sequence;
-- Specify tables to be captured:
TABLE [container.]owner.*;

Replicatグループを構成する手順

アクティブ・ソースで次の手順を実行します。

1. ADD REPLICATコマンドを使用してReplicatグループを作成します。説明上、このグループをrep_2と呼びます。

ADD REPLICAT rep_2
[, INTEGRATED | COORDINATED [MAXTHREADS number]]
, EXTTRAIL remote_trail_1, BEGIN time

EXTTRAILでは、このReplicatが読み取る証跡としてremote_trail_2を指定します。

これらのオプション、およびインストール環境によって必要になるその他のオプションの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

2. EDIT PARAMSコマンドを使用してrep_2グループのパラメータ・ファイルを作成します。次のパラメータと、データベース環境に適用する他のパラメータを含めます。考えられるその他の必須パラメータの詳細は、使用中のデータベースに対応するOracle GoldenGateインストレーションおよびセットアップ・ガイドを参照してください。

-- Identify the Replicat group:
REPLICAT rep_2
-- State that source and target definitions are identical:
ASSUMETARGETDEFS
-- Specify database login information as needed for the database:
[TARGETDB dsn_1][, USERIDALIAS alias]
-- Handle collisions between failback data copy and replication:
HANDLECOLLISIONS
-- Specify error handling rules:
REPERROR (error, response)
-- Specify tables for delivery and threads if using coordinated Replicat:
MAP [container.|catalog.]owner.table, TARGET owner.table[, DEF template]
[, THREAD (thread_ID)][, THREADRANGE (thread_range[, column_list])]
;

8.5 計画済スイッチオーバーでのユーザー・アクティビティの移動

この手順では、データベースに影響しないシステム・メンテナンスなどの手順をプライマリ・システムで実行できるように、計画された安全な方法でユーザー・アプリケーション・アクティビティをプライマリ・データベースからライブ・スタンバイ・システムに移動します。

8.5.1 ライブ・スタンバイへのユーザー・アクティビティの移動

ライブ・スタンバイにユーザー・アクティビティを移動する手順

1. (オプション)セカンダリ・システムでシステム・メンテナンスを実行する必要がある場合、セカンダリ・システムからプライマリ・システムにユーザーを戻した後に、ここでの手順を使用して即座に、または一定時間後に、その処理を実行できます。いずれにせよ、セカンダリ・システムを停止する必要がある場合は、その時間の長さにかかわらず、次の危険があることに注意してください。

- プライマリ・システムのローカル証跡は、スタンバイのオフライン中にデータが蓄積するためにディスク領域を使い果す可能性があります。この場合、プライマリExtractは異常終了します。

- スタンバイのオフライン中にプライマリ・システムに障害が発生すると、機能再開時にデータ変更をライブ・スタンバイに適用できなくなるため、同期状態が破損して、ライブ・スタンバイの完全な再インストールが必要になります。

2. プライマリ・システムで、ユーザー・アプリケーションを停止します。ただし、このシステムのプライマリExtractおよびデータ・ポンプの実行は継続し、未処理のトランザクション・データをすべて取得します。

3. プライマリ・システムで、EOFに到達して処理するレコードがなくなったことを示すメッセージが戻されるまで、プライマリExtractで次のコマンドを発行します。このメッセージは、すべてのトランザクションが取得されたことを示します。

LAG EXTRACT ext_1

注意:

取得でREDOを読み続けるため、本番以外のワークロードは引き続き稼働します。この場合、本番ワークロードがすでに停止している場合でも、At EOFが返されない可能性があります。

4. プライマリ・システムで、プライマリExtractプロセスを停止します。

STOP EXTRACT ext_1

5. プライマリ・システムで、EOFに到達して処理するレコードがなくなったことを示すメッセージが戻されるまで、データ・ポンプで次のコマンドを発行します。このメッセージは、ポンプによってすべての取得データがライブ・スタンバイに送信されたことを示します。

LAG EXTRACT pump_1

6. プライマリ・システムで、データ・ポンプを停止します。

STOP EXTRACT pump_1

7. ライブ・スタンバイ・システムで、EOF(ファイルの終わり)に到達したことを示すメッセージが戻されるまで、STATUS REPLICATコマンドを発行します。このメッセージで、Replicatによってすべてのデータが証跡からデータベースに適用されたことを確認します。

STATUS REPLICAT rep_1

8. ライブ・スタンバイ・システムで、Replicatを停止します。

STOP REPLICAT rep_1

9. ライブ・スタンバイ・システムで、次の操作を実行します。

- ビジネス・アプリケーションのユーザーに挿入、更新および削除権限を付与するスクリプトを実行します。

- トリガーおよびカスケード削除制約を有効化するスクリプトを実行します。

- アプリケーション・サーバーをスイッチオーバーし、アプリケーションを起動して、レプリケーション環境に含まれない必須ファイルをコピーするスクリプトを実行します。

10. ライブ・スタンバイ・システムで、現在のタイムスタンプに基づいてデータの取得を開始するようにプライマリExtractを変更します。そうしないと、ADD EXTRACTコマンドによってグループが作成された日時にまで遡る操作を検索するために、Extractで不要な時間が費やされます。

ALTER EXTRACT ext_2, BEGIN NOW

11. ライブ・スタンバイ・システムで、プライマリExtractを起動してトランザクション変更の取得に備えます。

START EXTRACT ext_2

注意:

ライブ・スタンバイ・システムのデータ・ポンプを起動しないでください。また、プライマリ・システムのReplicatを起動しないでください。データは、プライマリ・データベースがユーザー・アクティビティに再度対応できるようになるまで、ライブ・スタンバイのローカル証跡に格納しておく必要があります。

12. ユーザー・アクティビティをライブ・スタンバイ・システムに切り替えます。

13. プライマリ・システムで、システム・メンテナンスを実行します。

8.5.2 プライマリ・システムへのユーザー・アクティビティの再移動

プライマリ・システムにユーザー・アクティビティを再移動する手順

1. ライブ・スタンバイ・システムで、ユーザー・アプリケーションを停止します。ただし、プライマリExtractの実行は継続し、未処理のトランザクション・データをすべて取得します。

2. プライマリ・システムで、Replicatを起動して、ライブ・スタンバイ・システムからの変更の受信に備えます。

START REPLICAT rep_2

3. ライブ・スタンバイ・システムで、データ・ポンプを起動して、ローカル証跡に格納されているデータをTCP/IPを通じてプライマリ・システムに移動します。

START EXTRACT pump_2

4. ライブ・スタンバイ・システムで、EOFに到達して処理するレコードがなくなったことを示すメッセージが戻されるまで、プライマリExtractで次のコマンドを発行します。このメッセージは、すべてのトランザクションが取得されたことを示します。

LAG EXTRACT ext_2

5. ライブ・スタンバイ・システムで、プライマリExtractを停止します。

STOP EXTRACT ext_2

6. ライブ・スタンバイ・システムで、EOFに到達して処理するレコードがなくなったことを示すメッセージが戻されるまで、データ・ポンプで次のコマンドを発行します。このメッセージは、ポンプによってすべての取得データがプライマリ・システムに送信されたことを示します。

LAG EXTRACT pump_2

7. ライブ・スタンバイ・システムで、データ・ポンプを停止します。

STOP EXTRACT pump_2

8. プライマリ・システムで、EOF(ファイルの終わり)に到達したことを示すメッセージが戻されるまで、STATUS REPLICATコマンドを発行します。このメッセージで、Replicatによってすべてのデータが証跡からデータベースに適用されたことを確認します。

STATUS REPLICAT rep_2

9. プライマリ・システムで、Replicatを停止します。

STOP REPLICAT rep_2

10. プライマリ・システムで、次の操作を実行します。

- ビジネス・アプリケーションのユーザーに挿入、更新および削除権限を付与するスクリプトを実行します。

- トリガーおよびカスケード削除制約を有効化するスクリプトを実行します。

- アプリケーション・サーバーをスイッチオーバーし、アプリケーションを起動して、レプリケーション環境に含まれない必須ファイルをコピーするスクリプトを実行します。

11. プライマリ・システムで、現在のタイムスタンプに基づいてデータの取得を開始するようにプライマリExtractを変更します。そうしないと、スタンバイ・システムでのユーザーの作業中にすでに取得してレプリケートされている操作を検索するために、Extractで不要な時間が費やされます。

ALTER EXTRACT ext_1, BEGIN NOW

12. プライマリ・システムで、プライマリExtractを起動してトランザクション変更の取得に備えます。

START EXTRACT ext_1

13. ユーザー・アクティビティをプライマリ・システムに切り替えます。

14. (オプション)システム・メンテナンスをライブ・スタンバイ・システムで実行する必要がある場合、プライマリ・システムでデータ・ポンプを起動する前にその処理を即座に実行できます。取得データは、スタンバイのオフライン中にプライマリ・システムに蓄積されることに注意してください。

15. プライマリ・システムで、データ・ポンプを起動します。

START EXTRACT pump_1

16. ライブ・スタンバイ・システムで、Replicatを起動します。

START REPLICAT rep_1

8.6 計画外フェイルオーバーでのユーザー・アクティビティの移動

次の各項では、計画外フェイルオーバーでユーザー・アクティビティを移動する方法について説明します。

8.6.1 ライブ・スタンバイへのユーザー・アクティビティの移動

この手順では次の操作を実行します。

- ユーザー・アクティビティ用のライブ・スタンバイを準備します。

- プライマリ・システムのすべてのトランザクションがライブ・スタンバイに適用されることを保証します。

- Oracle GoldenGateをアクティブ化してライブ・スタンバイでトランザクション変更を取得します。

- ユーザーをライブ・スタンバイ・システムに移動します。

ライブ・スタンバイ・システムで次の手順を実行します。

ライブ・スタンバイにユーザーを移動する手順

1. Replicatによってすべてのデータが証跡からデータベースに適用されたことを確認するため、EOF(ファイルの終わり)に到達したことを示すメッセージが戻されるまで、STATUS REPLICATコマンドを発行します。

STATUS REPLICAT rep_1

2. Replicatプロセスを停止します。

STOP REPLICAT rep_1

3. ビジネス・アプリケーションのユーザーに挿入、更新および削除権限を付与するスクリプトを実行します。

4. トリガーおよびカスケード削除制約を有効化するスクリプトを実行します。

5. アプリケーション・サーバーをフェイルオーバーし、アプリケーションを起動して、レプリケーション環境に含まれない必須ファイルをコピーするスクリプトを実行します。

6. ライブ・スタンバイでプライマリExtractプロセスを起動します。

START EXTRACT ext_2

7. スタンバイ・システムにユーザーを移動して、作業を開始させます。

注意:

スタンバイでデータ・ポンプ・グループを起動しないでください。ユーザー・トランザクションは、ユーザー・アクティビティをプライマリ・システムに戻すまで、同じ場所で蓄積する必要があります。

8.6.2 プライマリ・システムへのユーザー・アクティビティの再移動

この手順では次の操作を実行します。

- Oracle GoldenGate環境をリカバリします。

- リストアしたプライマリ・システムにライブ・スタンバイのデータをコピーします。

- コピーの作成中に発生したユーザー・トランザクションを伝播します。

- コピーの結果と伝播された変更とを調整します。

- ユーザーをスタンバイ・システムからリストアしたプライマリ・システムに移動します。

- ライブ・スタンバイを再度保持するためにレプリケーションを準備します。

プライマリ・システムのリカバリの完了後に、次の手順を実行します。

ソースOracle GoldenGate環境をリカバリする手順

1. プライマリ・システムで、バックアップからOracle GoldenGateディレクトリをリカバリします。

2. プライマリ・システムで、GGSCIを実行します。

3. プライマリ・システムで、プライマリExtractグループを削除します。

DELETE EXTRACT ext_1

4. プライマリ・システムで、ローカル証跡を削除します。

DELETE EXTTRAIL local_trail_1

5. プライマリ・システムで、バックアップからリストアしたパラメータ・ファイルと一致するように同じ名前を使用して、プライマリExtractグループを再度追加します。説明上、このグループをext_1と呼びます。この手順によって、Extractのチェックポイントが障害前の状態からクリーンな状態に初期化されます。

ADD EXTRACT ext_1, {TRANLOG | INTEGRATED TRANLOG}, BEGIN time
[, THREADS n]

- TRANLOGおよびINTEGRATED TRANLOGについては、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。INTEGRATED TRANLOGにより、Oracleデータベースに対する統合キャプチャが可能になります。

6. プライマリ・システムで、前と同じ名前を使用してローカル証跡を再度追加します。説明上、この証跡をlocal_trail_1と呼びます。

ADD EXTTRAIL local_trail_1, EXTRACT ext_1

- EXTRACTでは、この証跡に書込みを行うext_1グループを指定します。

7. プライマリ・システムで、Managerプロセスを起動します。

START MANAGER

スタンバイからプライマリ・システムにデータベースをコピーする手順

1. プライマリ・システムで、トリガーおよびカスケード削除制約を無効化するスクリプトを実行します。

2. スタンバイ・システムで、データベースのホット・コピーの作成を開始します。

3. スタンバイ・システムで、コピーが終了したときの時刻を記録します。

4. スタンバイ・システムで、アプリケーションへのユーザー・アクセスを停止します。すべてのオープン・トランザクションの完了を待機します。

コピー中に作成されたデータ変更を伝播する手順

1. プライマリ・システムで、Replicatを起動します。

START REPLICAT rep_2

2. ライブ・スタンバイ・システムで、データ・ポンプを起動します。この操作によって、蓄積されたユーザー・トランザクションをスタンバイからプライマリ・システムの証跡に転送します。

START EXTRACT pump_2

3. プライマリ・システムで、初期ロード中にユーザーがスタンバイ・システムで生成したすべてのデータ変更が適用されたとわかるまで、INFO REPLICATコマンドを発行します。前に記録した時刻を参照してください。たとえば、コピーが12:05に停止した場合、変更のレプリケーションによってその時刻までデータが適用されていることを確認します。

INFO REPLICAT rep_2

4. プライマリ・システムで、次のコマンドを発行してHANDLECOLLISIONSパラメータをオフにし、初期ロードのエラー処理を無効化します。

SEND REPLICAT rep_2, NOHANDLECOLLISIONS

5. プライマリ・システムで、Replicatによってすべてのデータが証跡からデータベースに適用されたことを確認するため、EOF(ファイルの終わり)に到達したことを示すメッセージが戻されるまで、STATUS REPLICATコマンドを発行します。

STATUS REPLICAT rep_2

6. ライブ・スタンバイ・システムで、データ・ポンプを停止します。この操作によって、ユーザー・トランザクションをスタンバイからプライマリ・システムの証跡に転送することを停止します。

STOP EXTRACT pump_2

7. プライマリ・システムで、Replicatプロセスを停止します。

STOP REPLICAT rep_2

この時点で、プライマリ・データベースとスタンバイ・データベースは、同期状態に戻っていることが必要です。

(オプション)同期を検証する手順

1. Oracle GoldenGate Veridataなどの比較ツールを使用して、ソース・データベースとスタンバイ・データベースの同等性について比較します。

2. Oracle GoldenGate Veridataなどの修復ツールを使用して、非同期状態を修復します。

プライマリ・システムにユーザーを切り替える手順

1. プライマリ・システムで、ビジネス・アプリケーションのユーザーに挿入、更新および削除権限を付与するスクリプトを実行します。

2. プライマリ・システムで、トリガーおよびカスケード削除制約を有効化するスクリプトを実行します。

3. プライマリ・システムで、アプリケーション・サーバーをフェイルオーバーし、アプリケーションを起動して、レプリケーション環境に含まれない必須ファイルをコピーするスクリプトを実行します。

4. プライマリ・システムで、プライマリExtractプロセスを起動します。

START EXTRACT ext_1

5. プライマリ・システムで、アプリケーションへのユーザー・アクセスを許可します。

9 アクティブ/アクティブ型高可用性のためのOracle GoldenGateの構成

この章では、アクティブ/アクティブ型高可用性用にOracle GoldenGateを構成する方法について説明します。

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

- アクティブ/アクティブ構成の概要

- アクティブ/アクティブ構成の考慮事項

- データ・ループの防止

- 競合の管理

- 追加情報

- アクティブ/アクティブ構成の作成

9.1 アクティブ/アクティブ構成の概要

Oracle GoldenGateでは、アクティブ/アクティブ型の双方向構成がサポートされます。この構成では、同一のデータセットが含まれる2つのシステムが存在し、アプリケーション・ユーザーはどちらのシステムでもそれらのデータを変更できます。Oracle GoldenGateは、両方のデータセットを最新状態に維持するため、トランザクション・データ変更を一方のデータベースから他方のデータベースにレプリケートします。

双方向構成では、各システムにアクティブなOracle GoldenGateプロセスの完全なセットがあります。Extractプロセスによって一方のシステムで取得されたデータは、他方のシステムに伝播され、ローカルReplicatプロセスによって適用されます。

この構成では、負荷分散がサポートされます。この機能は、ビジネス・アプリケーションが任意の2つのピアで同一である場合に、障害耐久力を確保するために使用できます。双方向同期は、Oracle GoldenGateによってサポートされるすべてのデータベース・タイプでサポートされます。

Oracle GoldenGateでは、次のデータベースでアクティブ/アクティブ構成がサポートされます。

- DB2(z/OSおよびLUW上)およびIBM i

- MySQL

- Oracle

- SQL/MX

- SQL Server

- Sybase

- Teradata

Oracle GoldenGateでは、Oracleアクティブ/アクティブ構成でDDLレプリケーションがサポートされます。DDLサポートは、OracleデータベースとTeradataデータベースで利用できます。

9.2 アクティブ/アクティブ構成の考慮事項

アクティブ/アクティブ構成では、次の点を考慮する必要があります。また、使用中のデータベース・タイプに対応するOracle GoldenGateのインストレーションおよび構成のドキュメントを参照し、双方向構成をサポートする上で他になんらかの制限や要件がないか確認してください。

9.2.1 TRUNCATES

TRUNCATESの双方向レプリケーションはサポートされませんが、データの双方向へのレプリケート中に、これらの操作を一方向にレプリケートするように構成できます。アクティブ/アクティブ構成でTRUNCATESをレプリケートするには(そのデータベースでOracle GoldenGateによってサポートされる場合)、TRUNCATESが、ただ1つのデータベースから取得され、毎回その同じデータベースからのみ取得される必要があります。

環境は次のように構成します。

- すべてのデータベース・ロールを構成して、この目的のために指定したデータベース以外のどのデータベースからもTRUNCATEを実行できないようにします。

- TRUNCATEが許可されるシステムで、GETTRUNCATESパラメータを含めるようにExtractおよびReplicatのパラメータ・ファイルを構成します。

- 他方のシステムで、IGNORETRUNCATESパラメータを含めるようにExtractおよびReplicatのパラメータ・ファイルを構成します。このシステムでは、Oracle GoldenGate構成に含まれるアプリケーションによってTRUNCATESを実行しないでください。

9.2.2 アプリケーション設計

アクティブ/アクティブ型のレプリケーションを使用する場合は、タイムゾーンを両方のシステムで同じにする必要があるため、そのタイムスタンプベースの競合解決および検出を動作できます。

アクティブ/アクティブ型のレプリケーションは、市販のパッケージ・ビジネス・アプリケーションでサポートされていない場合、それらのアプリケーションで使用することは推奨されません。これらのアプリケーションで障害となるのは次の点です。

- パッケージ・アプリケーションには、Oracle GoldenGateでサポートされないオブジェクトおよびデータ型が含まれる可能性があります。

- パッケージ・アプリケーションでは、ユーザーが制御できない自動DML操作が実行される可能性がありますが、その操作がOracle GoldenGateによってレプリケートされると、Replicatによる適用時に競合が発生します。

- 通常、ユーザーは、アクティブ/アクティブ型のレプリケーションに必要とされる変更を行うためのデータ構造を制御できません。

9.2.3 キー

競合を正確に検出するためには、すべてのレコードは一意の非NULL識別子である必要があります。可能であれば、主キーを作成してください。不可能な場合は、一意キーを使用するか、MAPパラメータおよびTABLEパラメータのKEYCOLSオプションを使用して代替キーを作成します。一意の識別子がないと、Oracle GoldenGateでは、WHERE句で有効なすべての列が使用されますが、表に大量の列が含まれる場合、これによってパフォーマンスが低下します。

データ整合性を保持してエラーを防止するため、特定の表で使用するキーには次のことが求められます。

- その特定の表が存在するすべてのデータベースで同じ列が含まれる必要があります。

- データベース間の対応する行の各セットで同じ値が含まれる必要があります。

9.2.4 トリガーおよびカスケード削除

トリガーおよびON DELETE CASCADE制約では、Oracle GoldenGateによってレプリケート可能なDML操作が生成されます。ローカルDMLがこれらの操作でレプリケートされたDMLと競合しないようにするには、次の操作を実行します。

- Replicatによって適用されるDML操作を無視するようにトリガーを変更します。ターゲットがOracleデータベースの場合、統合モードのReplicatでは、追加構成なしでトリガーを処理します。非統合Replicatには、Oracle用のパラメータ・オプションが用意されています。Oracle GoldenGate for Oracle Databaseのインストールおよび構成を参照してください。

- ON DELETE CASCADE制約を無効化し、親表に対するトリガーを使用して子表に対する必要な削除を実行します。このトリガーは、親表で削除操作が実行される前に子表が削除されるように、BEFOREトリガーとして作成してください。これによって、カスケード削除の論理的な順序は逆になりますが、操作を正しい順序でレプリケートし、表が見つからないというターゲットのエラーを防止するために必要です。

注意:

MySQLターゲットの場合、カスケード削除問合せを実行すると、親操作の子が削除されます。

注意:

Oracleターゲットの場合、Replicatが統合モードであると、制約は自動的に特別な構成なしで処理されます。

注意:

IDENTITY列は、Sybaseの双方向構成では使用できません。SQL ServerでのIDENTITYの他の制限は、SQL ServerのためのOracle GoldenGateのインストールおよび構成を参照してください。

9.2.5 データベース生成による値

双方向構成では、データベース生成による順序値(Oracle順序など)をレプリケートしないでください。値の範囲は、重複しないように各システムで異なっている必要があります。たとえば、2つのデータベースが存在する環境では、一方のサーバーで偶数値を生成し、他方で奇数値を生成します。n個のサーバーが存在する環境では、各キーを異なる値で開始し、環境内のサーバーの数を単位として値を増分します。この方法は、すべてのタイプのアプリケーションまたはデータベースに使用できるわけではありません。アプリケーションが対応している場合、値に位置識別子を追加して強制的に一意性を確保できます。

9.2.6 データベース構成

データベースの1つを、信頼できるソースとして指定する必要があります。これは、初期同期フェーズや必要な後続のすべての再同期時に他のデータベースの導出元になるプライマリ・データベースおよびそのホスト・システムです。信頼できるソースのデータは定期的にバックアップしてください。

9.3 データ・ループの防止

双方向構成では、あるシステムから別のシステムにレプリケートされたSQL変更は、最初のシステムに再度レプリケートされないようにする必要があります。そうしないと、システム間でデータの移動が繰り返され、次の例のように無限ループに陥ります。

1. ユーザー・アプリケーションがシステムAのある行を更新します。

2. Extractは、システムAでその行を抽出してシステムBに送信します。

3. Replicatは、システムBでその行を更新します。

4. Extractは、システムBでその行を抽出してシステムAに戻します。

5. その行がシステムAに適用されます(2回目)。

6. このループが無限に継続します。

データのループバックを防止するには、状況に応じて次の処理を行う必要があります。

- Replicatによって生成されるSQL操作を取得しないようにします。ただし、Extractのパラメータ・ファイルに指定されているオブジェクトがビジネス・アプリケーションに含まれる場合は、それらのビジネス・アプリケーションによって生成されるSQL操作の取得を有効化します。

- ローカルReplicatトランザクションを識別します(Extractプロセスでそれらのトランザクションを無視するため)。

9.3.1 Replicat操作の取得の防止

使用中のデータベースに応じて、Replicat操作を取得しないように明示的に指示する必要がある場合とない場合があります。

9.3.1.1 Replicatトランザクションの取得の防止(Oracle)

ReplicatによってOracleデータベースに適用されるSQLの取得を防止するために、Extractのキャプチャ・モードに応じて異なるオプションが用意されています。

- Extractがクラシックまたは統合キャプチャ・モードである場合は、TRANLOGOPTIONSパラメータをEXCLUDETAG tagオプションとともに使用します。このパラメータを使用すると、Extractプロセスは、指定されたREDOタグの付いたトランザクションを無視します。タグ値の設定は、「Replicatトランザクションの識別」を参照してください。

- Extractがクラシック・キャプチャ・モードである場合は、ExtractのTRANLOGOPTIONSパラメータをEXCLUDEUSERまたはEXCLUDEUSERIDオプションとともに使用して、ReplicatがDDLおよびDMLトランザクションの適用に使用しているユーザー名またはユーザーIDを除外します。複数のEXCLUDEUSER文を使用できます。指定されたユーザーはGETREPLICATESまたはIGNOREREPLICATESパラメータのルールに従います。詳細は、「Replicatトランザクションの取得の防止(他のデータベース)」を参照してください。

9.3.1.2 Replicatトランザクションの取得の防止(Teradata)

ReplicatによってTeradataデータベースに適用されるSQLの取得を防止するには、Teradataレプリケーションを上書きするようにReplicatセッションを設定します。Replicatのパラメータ・ファイルのルート・レベルで次のSQLEXEC文を使用します。

SQLEXEC 'SET SESSION OVERRIDE REPLICATION ON;'
SQLEXEC 'COMMIT;'

これらのSQLEXEC文によって、起動時に自動的にReplicatセッションを設定するプロシージャが実行されます。

9.3.1.3 Replicatトランザクションの取得の防止(他のデータベース)

Replicatによって他のデータベース・タイプ(Extractがクラシック・キャプチャ・モードで動作する場合はOracleを含む)に適用されるSQLの取得を防止するには、次のパラメータを使用します。

- GETAPPLOPS | IGNOREAPPLOPS: Replicat以外のビジネス・アプリケーションによって生成されたデータ操作(DML)を、Extractが特定の証跡またはファイルに書き込む内容に含めるかどうかを制御します。

- GETREPLICATES | IGNOREREPLICATES: Replicatによって生成されたDML操作を、Extractが特定の証跡またはファイルに書き込む内容に含めるかどうかを制御します。

9.3.2 Replicatトランザクションの識別

Replicatトランザクションを識別するようにExtractを構成するには、Extractがデータを取得するデータベースについて、次の手順に従います。

9.3.2.1 DB2 (z/OSおよびLUW上)、IBM iおよびInformix

Extractのパラメータ・ファイルで次のパラメータ文を使用して、Replicatユーザー名を識別します。

TRANLOGOPTIONS EXCLUDEUSER user

このパラメータ文によって、このユーザーにより生成されるすべてのDDLおよびDMLトランザクションがReplicatトランザクションとしてマークされます。ユーザー名は、Extractによって読み取られるトランザクション・レコードに含まれます。

注意:

Informixでは、EXCLUDEUSERパラメータはサポートされていないため、EXCLUDEUSERID Database_uidパラメータを使用する必要があります。

注意:

Informixでは、ソース操作(証跡内)がTRUNCATEの場合に、Oracle GoldenGate Replicatプロセスは常にDELETE操作をターゲットデータベースで実行します。

9.3.2.2 MySQLおよびNonStop SQL/MX

Extractのパラメータ・ファイルで次のパラメータ文を使用して、Replicatのチェックポイント表の名前を識別します。

TRANLOGOPTIONS FILTERTABLE table_name

Replicatは、その各トランザクションの終了時に、チェックポイント手順の一環としてチェックポイント表にチェックポイントを書き込みます。(これは、ADD CHECKPOINTTABLEコマンドを使用して作成される表です。)各Replicatトランザクションにこの表への書込みが含まれるため、この表を使用して双方向構成のReplicatトランザクションを識別できます。FILTERTABLEによってチェックポイント表の名前を識別し、その表に対する操作が含まれるトランザクションをExtractで無視するようにします。

注意:

PURGEDATAは、双方向構成のNonStop SQL/MXではサポートされません。PURGEDATA/TRUNCATE操作はDDLであり、暗黙的トランザクションであるため、Oracle GoldenGateではこのトランザクション内のチェックポイント表を更新できません。

9.3.2.3 Oracle

Oracle環境でReplicatトランザクションを識別する方法は複数あります。Replicatがクラシックまたは統合モードである場合は、次のパラメータを使用します。

- Replicatのパラメータ・ファイルで、DBOPTIONSをSETTAGオプションとともに使用します。Replicatは、指定した値(これらのトランザクションをREDOストリーム内で識別)で適用されるトランザクションにタグ付けします。SETTAGのデフォルト値は00です。有効値は、16進数で構成される単一のTAG値です。タグの詳細は、『Oracle GoldenGate Oracle GoldenGateリファレンスfor Windows and を参照してください。

- Extractパラメータ・ファイルでTRANLOGOPTIONSパラメータをEXCLUDETAGオプションとともに使用します。そのExtractに関連付けられているログマイニング・サーバーによって、SETTAG値のタグの付いたREDOは除外されます。
Replicatのパラメータ・ファイルでSETTAGを設定する方法は次のとおりです。

DBOPTIONS SETTAG 0935

Extractのパラメータ・ファイルでEXCLUDETAGを設定する方法は次のとおりです。

TRANLOGOPTIONS EXCLUDETAG 0935

複数のタグを除外する場合は、個別のTRANLOGOPTIONS EXCLUDETAG文をそれぞれ指定する必要があります。

トランザクション名またはReplicatユーザーのユーザーIDを使用して、Replicatトランザクションを識別することもできます。Extractの構成時に、どちらを無視するか選択できます。「Replicatトランザクションの取得の防止(Oracle)」を参照してください。

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

9.3.2.4 SQL Server

Extractのパラメータ・ファイルで次のパラメータ文を使用して、Replicatトランザクション名を識別します。

TRANLOGOPTIONS EXCLUDETRANS transaction_name

このパラメータ文は、Replicatトランザクション名がデフォルトのggs_repl以外に設定されている場合にのみ必要です。

9.3.2.5 Sybase

次のいずれかの操作を実行します。

- Extractのパラメータ・ファイルで次のパラメータ文を使用して、Replicatトランザクション名を識別します。

TRANLOGOPTIONS EXCLUDETRANS transaction name

- Extractのパラメータ・ファイルで次のパラメータ文を使用して、Replicatユーザー名を識別します。

TRANLOGOPTIONS EXCLUDEUSER user name

EXCLUDEUSERによって、このユーザーにより生成されるすべてのトランザクションがReplicatトランザクションとしてマークされます。ユーザー名は、Extractによって読み取られるトランザクション・レコードに含まれます。

- 何も処理をせず、Replicatでggs_replというデフォルトのトランザクション名を使用できるようにします。

9.3.2.6 Teradata

Teradataデータベースに適用されるReplicatトランザクションを識別する必要はありません。

9.3.3 双方向構成でのDDLレプリケーション

OracleおよびTeradataで現在サポートされているDDLレプリケートでは、他にも考慮すべき事項があります。詳細は、次を参照してください。

- Oracle DatabaseのためのOracle GoldenGateのインストールおよび構成

- TeradataのためのOracle GoldenGateのインストールおよび構成

9.4 競合の管理

アクティブ/アクティブ構成では、統一された競合解決手順をすべてのシステムに用意しておく必要があります。競合は即座に識別され、可能なかぎり自動的に処理される必要がありますが、様々なビジネス・アプリケーションがこの処理に関する独自の要件セットを持っています。

Oracle GoldenGateは非同期ソリューションであるため、個別のシステム上にある同一のデータセットに対して(ほぼ)同時に変更が行われた場合、競合が発生する可能性があります。競合は、同時変更のタイミングが次の非同期状態のいずれかにつながる場合に発生します。

- Replicatが、一意性整合性制約(PRIMARY KEY制約やUNIQUE制約など)に違反する挿入操作または更新操作を適用すると、一意性競合が発生します。この競合タイプの例としては、2つの異なるデータベースから2つのトランザクションが発生し、各トランザクションが同じ主キー値で表に行を挿入する場合があげられます。

- Replicatが、同じ行への別の更新と競合する更新を適用すると、更新競合が発生します。更新競合が発生するのは、異なるデータベースから生じた2つのトランザクションがほぼ同時に同じ行を更新した場合です。証跡レコードに格納されている古い値(変更前の値)とターゲット・データベース内の同じ行の現行値との間に差異があると、Replicatは更新競合を検出します。

- 2つのトランザクションが異なるデータベースから生じ、一方が行を削除するのと同時にもう一方が同じ行を更新または削除すると、削除競合が発生します。この場合、その行は存在せず、更新も削除もできません。主キーが存在しないため、Replicatは行を見つけられません。

たとえば、データベースAのユーザーAがある行を更新し、データベースBのユーザーBが同じ行を更新するとします。ユーザーAのトランザクションがデータベースBに同期されるより前にユーザーBのトランザクションが実行されると、レプリケートされたトランザクションで競合が発生します。

3つのデータベースが関与するさらに複雑な例を基に、順序にまつわるさらに複雑な競合について説明します。A、B、Cという3つのデータベースがあるとします。あるユーザーがデータベースAに行を挿入すると、その行はデータベースBにレプリケートされます。次に、別のユーザーがその行をデータベースBで変更すると、行の変更がデータベースCにレプリケートされます。Bからの行の変更が、データベースAからの行の挿入より前にデータベースCに到着した場合、Cは競合を検出します。

可能であれば、競合発生のすべての可能性を最小化または排除してください。そのいくつかの方法を次に示します。

- 各データベースで変更できる列を制限するようにアプリケーションを構成します。たとえば、地理的地域に基づいてアクセスを制限できます(異なる販売地域でその独自の顧客レコードのみを変更できるようにするなど)。別の例として、あるデータベースの顧客サービス・アプリケーションには顧客表のNAME列とADDRESS列の変更のみを許可し、別のデータベースの財務アプリケーションにはBALANCE列の変更のみを許可することが可能です。どちらの例の場合でも、同じレコードの同時更新による競合は発生しません。

- 同期のレイテンシを最小限に抑えます。データベースAのユーザーAとデータベースBのユーザーBがほぼ同時に同じ行を更新しても、ユーザーBのトランザクションが完了する前にユーザーAのトランザクションがターゲット行にレプリケートされていれば、競合は回避されます。Oracle GoldenGateプロセスのパフォーマンス向上のための推奨事項は、Oracle GoldenGateのパフォーマンスのチューニングを参照してください。

競合を回避するには、レプリケーション・レイテンシを最小限に抑える必要があります。競合が避けられない場合は、Oracle GoldenGateの競合検出および解決(CDR)機能または独自に開発した方法によって、競合をすみやかに特定し、可能なかぎり自動的に解決する必要があります。独自の方法は、SQLEXECとユーザー・イグジット機能を通じてOracle GoldenGate処理に統合できます。Oracle GoldenGateを使用した競合の処理の詳細は、競合の検出および解決の構成を参照してください。

9.5 追加情報

次のドキュメントには、Oracle GoldenGateの構成に関連する追加情報が記載されています。

- その他のシステム要件、プロセス構成およびデータベースの設定要件については、使用中のデータベース・タイプに対応するOracle GoldenGateのインストレーションおよび構成のドキュメントを参照してください。これらのガイドは、このマニュアルのはじめにの関連情報にリストされています。

- Oracle GoldenGateの変更取得および配信グループの構成方法の詳細は、オンライン変更同期の構成を参照してください。

- Oracle GoldenGateのその他のチューニング・オプションは、Oracle GoldenGateのパフォーマンスのチューニングを参照してください。

- Oracle GoldenGateのコマンドとパラメータの構文の詳細および説明は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

9.6 アクティブ/アクティブ構成の作成

作成するオブジェクトのビジュアル表現は、図9-1を参照してください。

図9-1 アクティブ/アクティブ同期のOracle GoldenGate構成

9.6.1 両システムの前提条件

両方のシステムで次の前提条件を実行します。

1. Replicatのチェックポイント表を作成します(Oracle統合Replicatを使用していない場合)。手順については、「チェックポイント表の作成」を参照してください。

2. Managerプロセスの構成手順については、Managerおよびネットワーク通信の構成を参照してください。

9.6.2 プライマリ・システムからセカンダリ・システムに対する構成

次の手順では、プライマリ・システムからセカンダリ・データベースへのデータ送信に必要なプロセスを追加します。

プライマリExtractグループを構成する手順

プライマリ・システムで次の手順を実行します。

1. ADD EXTRACTコマンドを使用してプライマリExtractグループを作成します。説明上、このグループをext_1と呼びます。

ADD EXTRACT ext_1, {TRANLOG | INTEGRATED TRANLOG}, BEGIN time

これらのオプション、およびインストール環境によって必要になるその他のADD EXTRACTオプションの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

2. ADD EXTTRAILコマンドを使用してローカル証跡を追加します。説明上、この証跡をlocal_trail_1と呼びます。

ADD EXTTRAIL local_trail_1, EXTRACT ext_1

EXTRACTでは、この証跡に書込みを行うext_1グループを指定します。

3. EDIT PARAMSコマンドを使用してext_1グループのパラメータ・ファイルを作成します。次のパラメータと、データベース環境に適用する他のパラメータを含めます。考えられるその他の必須パラメータの詳細は、使用中のデータベースに対応するOracle GoldenGateインストレーションおよびセットアップ・ガイドを参照してください。

-- Identify the Extract group:
EXTRACT ext_1
-- Specify database login information as needed for the database:
[SOURCEDB dsn_1][, USERIDALIAS alias]
-- Specify the local trail that this Extract writes to
-- and the encryption algorithm:
ENCRYPTTRAIL algorithm
EXTTRAIL local_trail_1
-- Exclude Replicat transactions. Uncomment ONE of the following:
-- DB2 z/OS, DB2 LUW, DB2 IBM i, Oracle (classic capture), and
-- Sybase:
-- TRANLOGOPTIONS EXCLUDEUSER Replicat_user
-- Oracle (classic capture) alternative to EXCLUDEUSER:
-- EXCLUDEUSERID Oracle_uid
-- Oracle integrated capture:
-- EXCLUDETAG tag
-- SQL Server and Sybase:
-- TRANLOGOPTIONS EXCLUDETRANS transaction_name
-- SQL/MX:
-- TRANLOGOPTIONS FILTERTABLE checkpoint_table_name
-- Teradata:
-- SQLEXEC 'SET SESSION OVERRIDE REPLICATION ON;'
-- SQLEXEC 'COMMIT;'
-- Specify API commands if Teradata:
VAM library name, PARAMS ('param' [, 'param'] [, ...])
-- Capture before images for conflict resolution:
GETBEFORECOLS (ON operation {ALL | KEY | KEYINCLUDING (col_list) | ALLEXCLUDING (col_list)})
-- Log all scheduling columns for CDR and if using integrated Replicat
LOGALLSUPCOLS
-- Specify tables to be captured and (optional) columns to fetch:
TABLE [container.|catalog.]owner.* [, FETCHCOLS cols | FETCHCOLSEXCEPT cols];

注意:

例のVAMパラメータは、異機種データベースにのみ使用され、Oracle Databaseには適用されません。

データ・ポンプを構成する手順

プライマリ・システムで次の手順を実行します。

1. ADD EXTRACTコマンドを使用してデータ・ポンプ・グループを作成します。説明上、このグループをpump_1と呼びます。

ADD EXTRACT pump_1, EXTTRAILSOURCE local_trail_1, BEGIN time

EXTTRAILSOURCEでは、データソースとしてlocal_trail_1を指定します。

2. ADD RMTTRAILコマンドを使用して、セカンダリ・システムに作成するリモート証跡を追加します。説明上、この証跡をremote_trail_1と呼びます。

ADD RMTTRAIL remote_trail_1, EXTRACT pump_1

EXTRACTでは、この証跡に書込みを行うpump_1データ・ポンプを指定します。

その他のADD RMTTRAILオプションは、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

3. EDIT PARAMSコマンドを使用してpump_1 グループのパラメータ・ファイルを作成します。次のパラメータと、データベース環境に適用する他のパラメータを含めます。

-- Identify the data pump group:
EXTRACT pump_1
-- Specify database login information as needed for the database:
[SOURCEDB dsn_1][, USERIDALIAS alias]
-- Decrypt the data only if the data pump must process it.
-- DECRYPTTRAIL
-- Specify the name or IP address of the secondary system
-- and optional encryption of data over TCP/IP:
RMTHOSTOPTIONS system_2, MGRPORT port_number, ENCRYPT encryption_options
-- Specify remote trail and encryption algorithm on secondary system:
ENCRYPTTRAIL algorithm
RMTTRAIL remote_trail_1
-- Specify tables to be captured:
TABLE [container.|catalog.]owner.*;

Replicatグループを構成する手順

セカンダリ・システムで次の手順を実行します。

1. ADD REPLICATコマンドを使用してReplicatグループを作成します。説明上、このグループをrep_1と呼びます。

ADD REPLICAT rep_1
[, INTEGRATED | COORDINATED [MAXTHREADS number]]
, EXTTRAIL remote_trail_1, BEGIN time

EXTTRAILでは、このReplicatが読み取る証跡としてremote_trail_1を指定します。

これらのオプション、およびインストール環境によって必要になるその他のオプションの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

2. EDIT PARAMSコマンドを使用してrep_1グループのパラメータ・ファイルを作成します。次のパラメータと、データベース環境に適用する他のパラメータを含めます。考えられるその他の必須パラメータの詳細は、使用中のデータベースに対応するOracle GoldenGateインストレーションおよびセットアップ・ガイドを参照してください。

-- Identify the Replicat group:
REPLICAT rep_1
-- State that source and target definitions are identical:
ASSUMETARGETDEFS
-- Specify database login information as needed for the database:
[TARGETDB dsn_2][, USERIDALIAS alias]
-- Specify error handling rules:
REPERROR (error, response)
-- Set redo tag for Oracle only replicat via settag
-- Default is 00.
SETTAG tag_value
-- Specify tables for delivery, threads if coordinated Replicat
-- and conflict-resolution:
MAP [container.|catalog.]owner.*, TARGET owner.*, COMPARECOLS (ON operation {ALL | KEY | KEYINCLUDING (col_list) | ALLEXCLUDING (col_list)}), RESOLVECONFLICT (conflict type (resolution_name, resolution_type COLS (col[,...]))
[, THREAD (thread_ID)]
[, THREADRANGE (thread_range[, column_list])]
;
-- Specify mapping of exceptions to exceptions table:
MAP [container.|catalog.]owner.*, TARGET owner.exceptions, EXCEPTIONSONLY;

9.6.3 セカンダリ・システムからプライマリ・システムに対する構成

次の手順では、セカンダリ・システムからプライマリ・データベースへのデータ送信に必要なプロセスを追加します。

プライマリExtractグループを構成する手順

セカンダリ・システムで次の手順を実行します。

注意:

この手順は、これまでに作成した構成を逆にするイメージです。

1. ADD EXTRACTコマンドを使用してプライマリExtractグループを作成します。説明上、このグループをext_2と呼びます。

ADD EXTRACT ext_2, {TRANLOG | INTEGRATED TRANLOG}, BEGIN time

これらのオプション、およびインストール環境によって必要になるその他のADD EXTRACTオプションの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

2. ADD EXTTRAILコマンドを使用してローカル証跡を追加します。説明上、この証跡をlocal_trail_2と呼びます。

ADD EXTTRAIL local_trail_2, EXTRACT ext_2

EXTRACTでは、この証跡に書込みを行うext_2グループを指定します。

3. EDIT PARAMSコマンドを使用してext_2グループのパラメータ・ファイルを作成します。次のパラメータと、データベース環境に適用する他のパラメータを含めます。考えられるその他の必須パラメータの詳細は、使用中のデータベースに対応するOracle GoldenGateインストレーションおよびセットアップ・ガイドを参照してください。

-- Identify the Extract group:
EXTRACT ext_2
-- Specify database login information as needed for the database:
[SOURCEDB dsn_2][, USERIDALIAS alias]
-- Specify the local trail that this Extract writes to
-- and the encryption algorithm:
ENCRYPTTRAIL algorithm
EXTTRAIL local_trail_2
-- Exclude Replicat transactions. Uncomment ONE of the following:
-- DB2 z/OS, DB2 LUW, DB2 IBM i, Oracle, and Sybase:
-- TRANLOGOPTIONS EXCLUDEUSER Replicat_user
-- Oracle alternative to EXCLUDEUSER:
-- EXCLUDEUSERID Oracle_uid
-- Oracle integrated capture:
-- EXCLUDETAG tag
-- SQL Server and Sybase:
-- TRANLOGOPTIONS EXCLUDETRANS transaction_name
-- SQL/MX:
-- TRANLOGOPTIONS FILTERTABLE checkpoint_table_name
-- Teradata:
-- SQLEXEC 'SET SESSION OVERRIDE REPLICATION ON;'
-- SQLEXEC 'COMMIT;'
-- Oracle:
-- TRACETABLE trace_table_name
-- Log all scheduling columns for CDR and if using integrated Replicat
LOGALLSUPCOLS
-- Capture before images for conflict resolution:
GETBEFORECOLS (ON operation {ALL | KEY | KEYINCLUDING (col_list) | ALLEXCLUDING (col_list)})
-- Specify tables to be captured and (optional) columns to fetch:
TABLE [container.|catalog.]owner.* [, FETCHCOLS cols | FETCHCOLSEXCEPT cols];

注意:

Oracle DBFSデータをレプリケートするには、各ノードのTABLE文で、内部的に生成されたローカルの読取り/書込みDBFS表を指定します。これらの表を識別し、Oracle GoldenGateによる伝播が行われるようにDBFSを構成する方法の詳細は、Oracle DatabaseのためのOracle GoldenGateのインストールおよび構成を参照してください。

データ・ポンプを構成する手順

セカンダリ・システムで次の手順を実行します。

1. ADD EXTRACTコマンドを使用してデータ・ポンプ・グループを作成します。説明上、このグループをpump_2と呼びます。

ADD EXTRACT pump_2, EXTTRAILSOURCE local_trail_2, BEGIN time

EXTTRAILSOURCEでは、データソースとしてlocal_trail_2を指定します。

2. ADD RMTTRAILコマンドを使用して、プライマリ・システムに作成するリモート証跡を追加します。説明上、この証跡をremote_trail_2と呼びます。

ADD RMTTRAIL remote_trail_2, EXTRACT pump_2

EXTRACTでは、この証跡に書込みを行うpump_2データ・ポンプを指定します。

その他のADD RMTTRAILオプションは、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

3. EDIT PARAMSコマンドを使用してpump_2グループのパラメータ・ファイルを作成します。次のパラメータと、データベース環境に適用する他のパラメータを含めます。

-- Identify the data pump group:
EXTRACT pump_2
-- Specify database login information as needed for the database:
[SOURCEDB dsn_2][, USERIDALIAS alias]
-- Decrypt the data only if the data pump must process it.
-- DECRYPTTRAIL
-- Specify the name or IP address of the primary system
-- and optional encryption of data over TCP/IP:
RMTHOSTOPTIONS system_1, MGRPORT port_number, ENCRYPT encryption_options
-- Specify the remote trail and encryption algorithm on the primary system:
ENCRYPTTRAIL algorithm
RMTTRAIL remote_trail_2
-- Pass data through without mapping, filtering, conversion:
PASSTHRU
-- Specify tables to be captured:
TABLE [container.|catalog.]owner.*;

注意:

Oracle DBFSデータをレプリケートするには、各ノードのTABLE文で、内部的に生成されたローカルの読取り/書込みDBFS表を指定します。これらの表を識別し、Oracle GoldenGateによる伝播が行われるようにDBFSを構成する方法の詳細は、Oracle DatabaseのためのOracle GoldenGateのインストールおよび構成を参照してください。

Replicatグループを構成する手順

プライマリ・システムで次の手順を実行します。

1. ADD REPLICATコマンドを使用してReplicatグループを作成します。説明上、このグループをrep_2と呼びます。

ADD REPLICAT rep_2
[, INTEGRATED | COORDINATED [MAXTHREADS number]]
, EXTTRAIL remote_trail_2, BEGIN time

EXTTRAILでは、このReplicatが読み取る証跡としてremote_trail_2を指定します。

これらのオプション、およびインストール環境によって必要になるその他のオプションの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

2. EDIT PARAMSコマンドを使用してrep_2グループのパラメータ・ファイルを作成します。次のパラメータと、データベース環境に適用する他のパラメータを含めます。考えられるその他の必須パラメータの詳細は、使用中のデータベースに対応するOracle GoldenGateインストレーションおよびセットアップ・ガイドを参照してください。

-- Identify the Replicat group:
REPLICAT rep_2
-- State that source and target definitions are identical:
ASSUMETARGETDEFS
-- Specify database login information as needed for the database:
[TARGETDB dsn_1][, USERIDALIAS alias]
-- Specify error handling rules:
REPERROR (error, response)
-- Specify tables for delivery, threads if coordinated Replicat
-- and conflict-resolution:
MAP [container.|catalog.]owner.*, TARGET owner.*, COMPARECOLS (ON operation {ALL | KEY | KEYINCLUDING (col_list) | ALLEXCLUDING (col_list)}), RESOLVECONFLICT (conflict type (resolution_name, resolution_type COLS (col[,...]))
[, THREAD (thread_ID)]
[, THREADRANGE (thread_range[, column_list])]
;
-- Specify mapping of exceptions to exceptions table:
MAP [container.|catalog.]owner.*, TARGET owner.exceptions, EXCEPTIONSONLY;

注意:

Oracle DBFSデータをレプリケートするには、各ノードのTABLE文で、内部的に生成されたローカルの読取り/書込みDBFS表を指定します。これらの表を識別し、Oracle GoldenGateによる伝播が行われるようにDBFSを構成する方法の詳細は、Oracle DatabaseのためのOracle GoldenGateのインストールおよび構成を参照してください。

10 競合の検出および解決の構成

この章では、Oracle GoldenGateの競合検出および解決(CDR)機能を使用する方法について説明します。アクティブ/アクティブ構成のOracle GoldenGateでは、同じデータセットを持つ複数のデータベース間でデータの同期性を維持する必要があるため、競合検出および解決が必要です。

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

- Oracle GoldenGate CDR機能の概要

- Oracle GoldenGate CDRの構成

- CDRの例1: USEMAX、OVERWRITE、DISCARDによるすべての競合タイプの処理

- CDRの例2: USEDELTAおよびUSEMAXによるUPDATEROWEXISTSの処理

- CDRの例3: USEDELTA、USEMAXおよびIGNOREによるUPDATEROWEXISTSの処理

10.1 Oracle GoldenGate CDR機能の概要

Oracle GoldenGateの競合検出および解決(CDR)は、次の処理を行う基本的な競合解決ルーチンを備えています。

- INSERTの一意性競合を解決します。

- 行は存在するが、1つ以上の列の変更前イメージがデータベースの現行値と異なる場合に発生する、UPDATEの「データが見つからない」競合を解決します。

- 行が存在しない場合に発生する、UPDATEの「データが見つからない」競合を解決します。

- 行は存在するが、1つ以上の列の変更前イメージがデータベースの現行値と異なる場合に発生する、DELETEの「データが見つからない」競合を解決します。

- 行が存在しない場合に発生する、DELETEの「データが見つからない」競合を解決します。

競合検出および解決(CDR)を使用するには、ターゲット・データベースがWindows、Linux、UNIXのいずれかのシステムに配置されている必要があります。これは、NonStopプラットフォーム上のデータベースに対してはサポートされません。

CDRは、明示的な変換を行わずに単純なSQLと比較することのできるデータ型をサポートしています。

- NUMERIC

- DATE

- TIMESTAMP

- CHAR/NCHAR

- VARCHAR/ NVARCHAR

つまり、これらの列タイプは、COMPARECOLSパラメータおよびGETBEFORECOLSパラメータで使用でき、また、RESOLVECONFLICTパラメータのUSEMINおよびUSEMAXオプションの解決列として使用できます。RESOLVECONFLICTのUSEDELTAオプションに使用できるのは、NUMERIC列のみです。CDRは、LOB、抽象データ型(ADT)またはユーザー定義型(UDT)を含む列に使用しないでください。

ReplicatがBATCHSQLモードで動作する場合、競合解決は実行されません。BATCHSQLモードで競合が発生すると、ReplicatはGROUPTRANSOPSモードに戻り、さらに単一トランザクション・モードに戻ります。競合検出は3つのモードすべてで行われます。詳細は、『Oracle GoldenGate for Windows and UNIXリファレンス』を参照してください。

10.2 Oracle GoldenGate CDRの構成

ソース・データベース、ターゲット・データベースおよびOracle GoldenGateを競合検出および解決のために構成するには、次の手順を実行します。手順は次のとおりです。

- 必要な列値をExtractで使用可能にする方法

- 競合解決のためのOracle GoldenGateパラメータ・ファイルの構成

- エラー処理のためのOracle GoldenGateパラメータ・ファイルの構成

10.2.1 必要な列値をExtractで使用可能にする方法

CDRを使用するには、次の列値をログに記録して、Extractがその値を証跡に書き込めるようにする必要があります。

- 各レコードの完全な変更前イメージ。一部のデータベースは、変更前イメージをログ・レコードに記録できないため、サプリメンタル・ロギングを使用してこの処理を行うよう構成する必要があります。ほとんどのサポート対象データベースでは、ADD TRANDATAコマンドをこの目的で使用できます。

- LOGALLSUPCOLSパラメータを使用して、スケジュール列の完全な変更前イメージと変更後イメージが確実に証跡に書き込まれるようにします。スケジュール列は、主キー、一意索引および外部キーの列です。LOGALLSUPCOLSを使用すると、Extractでは、UPDATE操作の変更前イメージおよびUPDATEとDELETEの両操作のサプリメンタル・ロギング列すべての変更前イメージを証跡レコードに含めるようになります。

- NonStop SQL/MXソース・データベースの場合、表を作成または変更してno auditcompress属性を持たせます。

これらのパラメータとコマンドの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。これらのパラメータがCDRでどのように動作するかについては、「CDRの例1: USEMAX、OVERWRITE、DISCARDによるすべての競合タイプの処理」以降の例を参照してください。

10.2.2 競合解決のためのOracle GoldenGateパラメータ・ファイルの構成

競合検出および解決をサポートするには、次のパラメータが必要です。

1. ExtractのTABLEパラメータのGETBEFORECOLSオプションを使用して、Extractで更新操作また削除操作の変更前イメージを取得する対象列を指定します。DB2データベースの場合、DB2でサポートされないGETBEFORECOLSパラメータではなく、GETUPDATEBEFORESパラメータを使用します。

2. Replicatパラメータ・ファイル内のMAPパラメータのCOMPARECOLSオプションを使用して、ReplicatのWHERE句で変更前の値とともに使用する列を指定します。変更前の値は、更新および削除の競合を検出するために、ターゲット・データベースの現行値と比較されます。(デフォルトでは、ReplicatはWHERE句で主キーのみを使用しますが、これでは競合検出には不十分な場合があります)。

3. MAPパラメータのRESOLVECONFLICTオプションを使用して、様々な操作や競合タイプに対する競合解決ルーチンを指定します。RESOLVECONFLICTをMAP文で複数回使用すると、競合タイプごとに異なる解決を指定できます。同じ競合は同じ最終結果となるように、すべてのデータベースで同一の競合解決手順を使用してください。1つの競合解決方法で、発生する可能性のあるすべての競合に対応できるわけではありません。障害のリスクを最小化するため、状況に応じて、論理的な優先順でコールできる複数のルーチンを作成する必要があります。

注意:

表に主キーと他の一意索引または一意キーが含まれている場合は、他にも考慮すべき事項があります。COMPARECOLSパラメータとRESOLVECONFLICTパラメータで自動ルーチンが指定されている場合、一貫した方法で各行を一意に識別する必要があります。一貫した方法で行を識別できない場合、競合解決時にエラーが発生します。このような状況では、主キー以外の一意キーを無効化するか、または、SQLEXEC機能を使用してスローされたエラーを処理することで競合を解決できます。

これらのパラメータの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。これらのパラメータの詳細は、CDRの例1: USEMAX、OVERWRITE、DISCARDによるすべての競合タイプの処理以降の例を参照してください。

10.2.3 エラー処理のためのOracle GoldenGateパラメータ・ファイルの構成

CDRをエラー処理と併用して、解決済のエラーとCDRで解決できなかったエラーを取得する必要があります。

1. 競合解決は、他のエラー処理パラメータ(HANDLECOLLSIONS、INSERTMISSINGUPDATESおよびREPERROR)の前に実行されます。REPERRORパラメータを使用して、CDRで解決できないエラーを処理するためのルール、またはCDRで処理しないエラーに関するルールを割り当てます。一部のエラーをREPERRORで処理し、残りをCDRで処理するのが適当なこともありますが、同じ競合を処理するようにREPERRORとCDRを構成した場合は、CDRが優先されます。INSERTMISSINGUPDATESパラメータとHANDLECOLLISIONSパラメータも、CDRで処理されない一部のエラーを処理するために使用できます。これらのパラメータの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

2. (オプション)例外表を作成します。例外MAP文とともに例外表を使用する場合(「エラー処理のためのOracle GoldenGateパラメータ・ファイルの構成」を参照)、Replicatは競合が発生しているすべての操作を(競合が解決したかどうかにかかわらず)、例外表にマップされる例外MAP文に送信します。UPDATEとDELETEの競合をReplicatで処理する場合は、この表の主キーを省略してください。そうしないと、整合性制約エラーが発生する可能性があります。

少なくとも、例外表にターゲット表と同じ列を含める必要があります。これらの行には、Replicatがターゲットに適用した(または適用しようとした)各行イメージが格納されます。

さらに、追加の列を定義してその他の情報を取得し、データをトランザクションの文脈で扱うのに役立てることができます。Oracle GoldenGateには、例外MAP文を通じてこの情報を取得するためのツールが用意されています(「エラー処理のためのOracle GoldenGateパラメータ・ファイルの構成」を参照)。そのような列には次のものがあります(これだけに限りません)。

- 証跡レコードの変更前イメージ。これは、col1_beforeやcol2_beforeなどの名前を持つ、ターゲット列の複製です。

- ターゲット列の現行値。これは、col1_currentやcol2_currentなどの名前を持つ、ターゲット列の複製です。

- ターゲット表の名前

- 競合のタイムスタンプ

- 操作タイプ

- データベースのエラー番号

- (オプション)データベースのエラー・メッセージ

- 競合が解決されたかどうか

3. 例外MAP文を作成して、例外データを例外表にマップします。例外MAP文には次の要素が含まれます。

- (必須)INSERTALLRECORDSオプション。このパラメータを指定すると、すべての列値が例外表にマップされるように、すべてのマップ済操作がINSERTに変換されます。

- (必須)EXCEPTIONSONLYオプション。このパラメータを指定すると、エラーを生成する操作がマップされます(成功した操作はマップされません)。

- (オプション)COLMAP句。例外表の列の名前および定義がソース表のものと同一であり、例外表にその列のみが含まれている場合、COLMAPは不要です。ただし、名前または定義が異なる場合、あるいは例外表に追加の列があり、それらの列に追加データを移入する場合は、COLMAP句を使用してすべての列をマップします。

10.2.3.1 追加データを例外表にマップするためのツール

次に示すのは、追加列に値を移入するためにCOLMAP句で使用できるツールです。

- ソース列の名前および定義が例外表のターゲット列のものと同一である場合、明示的にマッピングを行う名前のかわりにUSEDEFAULTSキーワードを使用できます。それ以外の場合は、次の例のように、それらの列をCOLMAP句でマッピングする必要があります。

COLMAP (exceptions_col1 = col1, [...])

- ソース行の変更前イメージを例外表の列にマップするには、証跡レコードから列の変更前イメージを取得する@BEFORE変換関数を使用します。次の例は、@BEFOREの使用方法を示しています。

COLMAP (USEDEFAULTS, exceptions_col1 = @BEFORE (source_col1), &
exceptions_col2 = @BEFORE (source_col2), [...])

- ターゲット行の現行イメージを例外表の列にマップするには、SQLEXEC問合せを使用してイメージを取得し、COLMAP句でqueryID.column構文を使用して問合せの結果を例外表の列にマップします。

COLMAP (USEDEFAULTS, name_current = queryID.name, phone_current = queryID.phone, [...])

- タイムスタンプ、データベース・エラー、その他の環境情報をマップするには、該当するOracle GoldenGate列変換関数を使用します。たとえば、次の例では実行時の現行タイムスタンプをマップしています。

res_date = @DATENOW ()

例外MAP文のCOLMAP句でこれらの機能を組み合せて詳細な例外表にデータを移入する方法は、例外表の追加の列を含むサンプル例外マッピングを参照してください。

これらの例で示したパラメータおよび列変換関数の使用方法と構文については、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

10.2.3.2 ソース列とターゲット列のみを含むサンプル例外マッピング

次のサンプル・パラメータ・ファイルは、以降のCDRの例で使用されるソース表およびターゲット表のエラー処理と単純な例外マッピングを示しています。この例でマップするのはソース列とターゲット列であり、追加の列はマップしません。次の理由から、この例の例外MAP文にはCOLMAP句は不要です。

- ソースとターゲットの例外列は、名前と定義がそれぞれ同一です。

- 例外表に他の列がありません。

注意:

この例では、Replicatパラメータ・ファイルに必要なその他のパラメータ(プロセス名やログイン資格証明、特定のデータベース・タイプに必要なオプションのパラメータなど)を意図的に省略してあります。改行を使用してパラメータ文を複数の行に分割するときは、各行の末尾でアンパサンド(&)を使用します。

-- REPERROR error handling: DEFAULT represents all error types. DISCARD
-- writes operations that could not be processed to a discard file.
REPERROR (DEFAULT, DISCARD)
-- Specifies a discard file.
DISCARDFILE /users/ogg/discards/discards.dsc, PURGE
-- The regular MAP statement with the CDR parameters
MAP fin.src, TARGET fin.tgt, &
COMPARECOLS (ON UPDATE ALL, ON DELETE ALL), &
RESOLVECONFLICT (UPDATEROWEXISTS, (DEFAULT, USEMAX (last_mod_time)), &
RESOLVECONFLICT (INSERTROWEXISTS, (DEFAULT, USEMAX (last_mod_time)), &
RESOLVECONFLICT (DELETEROWEXISTS, (DEFAULT, OVERWRITE)), &
RESOLVECONFLICT (UPDATEROWMISSING, (DEFAULT, OVERWRITE)), &
RESOLVECONFLICT (DELETEROWMISSING, (DEFAULT, DISCARD)), &
);
-- Starts the exceptions MAP statement by mapping the source table to the
-- exceptions table.
MAP fin.src, TARGET fin.exception, &
-- directs Replicat only to map operations that caused the error specified
-- in REPERROR.
EXCEPTIONSONLY, &
-- directs Replicat to convert all the exceptions to inserts into the
-- exceptions table. This is why there cannot be a primary key constraint
-- on the exceptions table.
INSERTALLRECORDS
;

10.2.3.3 例外表の追加の列を含むサンプル例外マッピング

次のサンプル・パラメータ・ファイルは、以降のCDRの例で使用されるソース表およびターゲット表のエラー処理と複雑な例外マッピングを示しています。この例では、例外表にソース表と同じ行があり、コンテキスト・データを取得するための追加の列もあります。

注意:

この例では、Replicatパラメータ・ファイルに必要なその他のパラメータ(プロセス名やログイン資格証明、特定のデータベース・タイプに必要なオプションのパラメータなど)を意図的に省略してあります。改行を使用してパラメータ文を複数の行に分割するときは、各行の末尾でアンパサンド(&)を使用します。

-- REPERROR error handling: DEFAULT represents all error types. DISCARD
-- writes operations that could not be processed to a discard file.
REPERROR (DEFAULT, DISCARD)
-- Specifies the discard file.
DISCARDFILE /users/ogg/discards/discards.dsc, PURGE
-- The regular MAP statement with the CDR parameters
MAP fin.src, TARGET fin.tgt, &
COMPARECOLS (ON UPDATE ALL, ON DELETE ALL), &
RESOLVECONFLICT (UPDATEROWEXISTS, (DEFAULT, USEMAX (last_mod_time)), &
RESOLVECONFLICT (INSERTROWEXISTS, (DEFAULT, USEMAX (last_mod_time)), &
RESOLVECONFLICT (DELETEROWEXISTS, (DEFAULT, OVERWRITE)), &
RESOLVECONFLICT (UPDATEROWMISSING, (DEFAULT, OVERWRITE)), &
RESOLVECONFLICT (DELETEROWMISSING, (DEFAULT, DISCARD))
);
-- Starts the exceptions MAP statement by mapping the source table to the -- exceptions table.
MAP fin.src, TARGET fin.exception, &
-- directs Replicat only to map operations that caused the error specified
-- in REPERROR.
EXCEPTIONSONLY, &
-- directs Replicat to convert all the exceptions to inserts into the
-- exceptions table. This is why there cannot be a primary key constraint
-- on the exceptions table.
INSERTALLRECORDS &
-- SQLEXEC query to select the values from the target record before the
-- Replicat statement is applied. These are mapped to the *_target
-- columns later.
SQLEXEC (id qry, query 'select name, phone, address, salary, balance, & comment, last_mod_time from fin.tgt where name = :p1', PARAMS(p1 = name )), &
-- Start of the column mapping, specifies use default column definitions.
COLMAP ( &
-- USEDEFAULTS maps the source columns to the target exceptions columns
-- that receive the after image that Replicat applied or tried to apply.
-- In this case, USEDEFAULTS can be used because the names and definitions
-- of the source and target exceptions columns are identical; otherwise
-- the columns must be mapped explicitly in the COLMAP clause.
USEDEFAULTS, &
-- captures the timestamp when the resolution was performed.
res_date = @DATENOW (), &
-- captures and maps the DML operation type.
optype = @GETENV ('LASTERR', 'OPTYPE'), &
-- captures and maps the database error number that was returned.
dberrnum = @GETENV ('LASTERR', 'DBERRNUM'), &
-- captures and maps the database error that was returned.
dberrmsge = @GETENV ('LASTERR', 'DBERRMSG'), &
-- captures and maps the name of the target table
tabname = @GETENV ('GGHEADER', 'TABLENAME'), &
-- If the names and definitions of the source columns and the target
-- exceptions columns were not identical, the columns would need to
-- be mapped in the COLMAP clause instead of using USEDEFAULTS, as
-- follows:
-- name_after = name, &
-- phone_after = phone, &
-- address_after = address, &
-- salary_after = salary, &
-- balance_after = balance, &
-- comment_after = comment, &
-- last_mod_time_after = last_mod_time &
-- maps the before image of each column from the trail to a column in the
-- exceptions table.
name_before = @BEFORE (name), &
phone_before = @BEFORE (phone), &
address_before = @BEFORE (address), &
salary_before = @BEFORE (salary), &
balance_before = @BEFORE (balance), &
comment_before = @BEFORE (comment), &
last_mod_time_before = @BEFORE (last_mod_time), &
-- maps the results of the SQLEXEC query to rows in the exceptions table
-- to show the current image of the row in the target.
name_current = qry.name, &
phone_current = qry.phone, &
address_current = qry.address, &
salary_current = qry.salary, &
balance_current = qry.balance, &
comment_current = qry.comment, &
last_mod_time_current = qry.last_mod_time)
;

例外表の作成と例外マッピングの使用の詳細は、「DML操作中のReplicatエラーの処理」を参照してください。

現在のルーチンがすべての状況で予定どおり動作することを確認したら、解決ルーチンのオーバーヘッドを削減するために、例外表に記録されるデータの量を減らすことができます。

10.2.4 CDR統計の表示

CDR機能には、競合解決の結果を表示するために次の方法が用意されています。

10.2.4.1 レポート・ファイル

Replicatは、CDR統計をレポート・ファイルに書き込みます。

Total CDR conflicts                 7
CDR resolutions succeeded       6
CDR resolutions failed          1
CDR INSERTROWEXISTS conflicts   1
CDR UPDATEROWEXISTS conflicts   4
CDR DELROWEXISTS conflicts      1
CDR DELROWMISSING conflicts     1

10.2.4.2 GGSCI

CDR統計は、STATS REPLICATコマンドをREPORTCDRオプションとともに使用して、GGSCIから表示することもできます。

STATS REPLICAT group, REPORTCDR

10.2.4.3 列変換関数

次のCDR統計を取得し、必要に応じて、例外表にマップしたり、列変換関数からの入力を受け付ける他のOracle GoldenGateパラメータで使用できます。

- Replicatで検出した競合の数

- Replicatで解決した解決の数

- Replicatで解決できなかった解決の数

これらの統計を取得するには、'STATS'または'DELTASTATS'情報タイプを指定して@GETENV列変換関数を使用します。結果は、現在のReplicatセッションに基づいています。Replicatが停止して再起動すると、統計はリセットされます。

特定の表またはワイルドカードで指定された表のセットについて統計が返されます。

@GETENV ('STATS','TABLE','SCHEMA.TABLNAME','CDR_CONFLICTS')
@GETENV ('STATS','TABLE','SCHEMA.TABLNAME','CDR_RESOLUTIONS_SUCCEEDED')
@GETENV ('STATS','TABLE','SCHEMA.TABLNAME','CDR_RESOLUTIONS_FAILED')

Replicatパラメータ・ファイルのすべてのMAP文のすべての表について統計が返されます。

@GETENV ('STATS','CDR_CONFLICTS')
@GETENV ('STATS','CDR_RESOLUTIONS_SUCCEEDED')
@GETENV ('STATS','CDR_RESOLUTIONS_FAILED')

前述の例の'STATS'情報タイプを'DELTASTATS'に置き換えると、前回の'DELTASTATS'の実行以降の数が返されます。

@GETENVの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

10.3 CDRの例1: USEMAX、OVERWRITE、DISCARDによるすべての競合タイプの処理

この例では、USEMAX解決、OVERWRITE解決およびDISCARD解決を使用して、すべての競合タイプを解決します。

10.3.1 この例で使用する表

各例では同一のOracleデータベースを想定しています。

CREATE TABLE tgt(
name varchar2(30) primary key,
phone varchar2(10),
address varchar2(100),
salary number,
balance number,
comment varchar2(100),
last_mod_time timestamp);

ソース・データベースでは、すべての列が補足的にログに記録されます。

ADD TRANDATA scott.src, COLS (name, phone, address, salary, balance, comment, last_mod_time);

10.3.2 競合解決を指定したMAP文

MAP fin.src, TARGET fin.tgt,
COMPARECOLS (ON UPDATE ALL, ON DELETE ALL),
RESOLVECONFLICT (UPDATEROWEXISTS, (DEFAULT, USEMAX (last_mod_time)),
RESOLVECONFLICT (INSERTROWEXISTS, (DEFAULT, USEMAX (last_mod_time)),
RESOLVECONFLICT (DELETEROWEXISTS, (DEFAULT, OVERWRITE)),
RESOLVECONFLICT (UPDATEROWMISSING, (DEFAULT, OVERWRITE)),
RESOLVECONFLICT (DELETEROWMISSING, (DEFAULT, DISCARD)),
);

10.3.3 MAP文の説明

次に、MAP文について説明します。

- COMPARECOLSでは、更新および削除のReplicat WHERE句において、証跡レコード内のすべての列の変更前イメージを使用します。

- DEFAULTでは、すべての競合タイプの列グループとしてすべての列を使用します。そのため、解決はすべての列に適用されます。

- INSERTROWEXISTS競合には、USEMAX解決を使用します。つまり、挿入時に行が存在する場合は、last_mod_time列を解決列として使用し、証跡の値とデータベースの値のどちらが大きいかを判別します。証跡の値の方が大きい場合、レコードを適用しますが、挿入を更新に変更します。データベースの値の方が大きい場合、レコードを無視します。

- UPDATEROWEXISTS競合には、USEMAX解決を使用します。つまり、更新時に行が存在する場合は、last_mod_time列を解決列として使用します。証跡の値の方が大きい場合、更新を適用します。

- DELETEROWEXISTS競合には、OVERWRITE解決を使用します。つまり、削除操作時に行が存在する場合は、削除を適用します。

- UPDATEROWMISSING競合には、OVERWRITE解決を使用します。つまり、更新時に行が存在しない場合は、更新を挿入に変更して適用します。

- DELETROWMISSING競合には、DISCARD解決を使用します。つまり、削除操作時に行が存在しない場合は、証跡レコードを破棄します。

注意:

USEMAXのかわりにUSEMAXEQ解決を使用すると、=条件を適用できます。詳細は、『Oracle GoldenGate for Windows and UNIXリファレンス』を参照してください。

10.3.4 エラー処理

例外表に対するエラー処理の例は、「エラー処理のためのOracle GoldenGateパラメータ・ファイルの構成」を参照してください。

10.3.5 USEMAX解決によるINSERTROWEXISTSの処理

この例では、証跡とデータベースのレコードに対する適用可能な変更前イメージと変更後イメージを使用したUSEMAX解決を説明しています。ソースとターゲットに行が存在するが、一部またはすべての行の値が異なる場合の挿入の解決方法を示します。

表10-1 USEMAX解決によるINSERTROWEXISTS競合の処理

イメージ

SQL

コメント

証跡内の変更前イメージ

None (row was inserted on the source).

N/A

証跡内の変更後イメージ

name='Mary'
phone='1234567890'
address='Oracle Pkwy'
salary=100
balance=100
comment=NULL
last_mod_time='9/1/10 3:00'

last_mod_time='9/1/10 3:00は、解決列の変更後イメージです。変更後イメージが存在するため、これが解決の特定に使用されます。

ターゲット・データベースのイメージ

name='Mary'
phone='111111'
address='Ralston'
salary=200
balance=500
comment='aaa'
last_mod_time='9/1/10 1:00'

last_mod_time='9/1/10 1:00は、ターゲットの解決列の現行イメージであり、証跡内の解決列の値はこれと比較されます。

Replicatによって適用され、競合を検出する初期INSERT

SQLバインド変数:

1)'Mary'
2)'1234567890'
3)'Oracle Pkwy'
4)100
5)100
6)NULL
7)'9/1/10 3:00'

このSQLは、Maryに対する一意性競合を戻します。

競合を解決するためにReplicatによって適用されるUPDATE

SQLバインド変数:

1)'1234567890'
2)'Oracle Pkwy'
3)100
4)100
5)NULL
6)'9/1/10 3:00'
7)'Mary'
8)'9/1/10 3:00'

INSERTROWEXISTSに対してUSEMAXが指定されているため、Replicatは挿入を更新に変換し、証跡レコードのlast_mod_timeの値をデータベースの値と比較します。レコードの値の方が大きいため、証跡ファイル内の列の変更後イメージがターゲットに適用されます。

10.3.6 USEMAX解決によるUPDATEROWEXISTSの処理

この例では、証跡とデータベースのレコードに対する適用可能な変更前イメージと変更後イメージを使用したUSEMAX解決を説明しています。ソースとターゲットに行が存在するが、一部またはすべての行の値が異なる場合の更新の解決方法を示します。

表10-2 USEMAX解決によるUPDATEROWEXISTS競合の処理

イメージ

SQL

コメント

証跡内の変更前イメージ

name='Mary'
phone='1234567890'
address='Oracle Pkwy'
salary=100
balance=100
comment=NULL
last_mod_time='9/1/10 3:00'

last_mod_time='9/1/10 3:00は、解決列の変更前イメージです。

証跡内の変更後イメージ

phone='222222'
address='Holly'
last_mod_time='9/1/10 5:00'

last_mod_time='9/1/10 5:00は、解決列の変更後イメージです。変更後イメージが存在するため、これが解決の特定に使用されます。

ターゲット・データベースのイメージ

name='Mary'
phone='1234567890'
address='Oracle Pkwy'
salary=100
balance=600
comment='com'
last_mod_time='9/1/10 6:00'

last_mod_time='9/1/10 6:00は、ターゲットの解決列の現行イメージであり、証跡内の解決列の値はこれと比較されます。

Replicatによって適用され、競合を検出する初期UPDATE

SQLバインド変数:

1)'222222'
2)'Holly'
3)'9/1/10 5:00'
4)'Mary'
5)'1234567890'
6)'Oracle Pkwy'
7)100
8)100
9)NULL
10)'9/1/10 3:00'

balance、commentおよびlast_mod_timeの値がターゲット内で異なるため、このSQLはデータが見つからないというエラーを戻します。

COMPARECOLS文がALLに設定されているため、すべての列がWHERE句で使用されます。

競合を解決するためにReplicatによって適用されるUPDATE

SQLバインド変数:

1)'Mary'
2)'222222'
3)'Holly'
4)100
5)100
6)NULL
7)'9/1/10 5:00'
8)'Mary'
9)'9/1/10 5:00'

証跡レコードのlast_mod_timeの変更後の値の方がデータベースの現行値より小さいため、データベースの値は維持されます。Replicatは、主キーと、9/1/10 5:00より小さく設定されたlast_mod_time値を含むWHEREで操作を適用します。この基準に一致する行はないため、「データが見つからない」というエラーが発生して文は失敗しますが、条件に一致しない場合はUSEMAX解決が失敗すると予想されることから、Replicatはエラーを無視します。

10.3.7 OVERWRITE解決によるUPDATEROWMISSINGの処理

この例では、証跡とデータベースのレコードに対する適用可能な変更前イメージと変更後イメージを使用したOVERWRITE解決を説明しています。ターゲット行が存在しない場合の解決方法を示します。論理的な解決は、行をターゲットに上書きして両方のデータベースを再度同期させることであり、この方法が使用されます。

表10-3 OVERWRITE解決によるUPDATEROWMISSING競合の処理

イメージ

SQL

コメント

証跡内の変更前イメージ

name='Jane'
phone='333'
address='Oracle Pkwy'
salary=200
balance=200
comment=NULL
last_mod_time='9/1/10 7:00'

N/A

証跡内の変更後イメージ

phone='4444'
address='Holly'
last_mod_time='9/1/10 8:00'

ターゲット・データベースのイメージ

None (row for Jane is missing)

Replicatによって適用され、競合を検出する初期UPDATE

SQLバインド変数:

1)'4444'
2)'Holly'
3)'9/1/10 8:00'
4)'Jane'
5)'333'
6)'Oracle Pkwy'
7)200
8)200
9)NULL
10)'9/1/10 7:00'

このSQLは、データが見つからないというエラーを戻します。COMPARECOLS文がALLに設定されているため、すべての列がWHERE句で使用されます。

競合を解決するためにReplicatによって適用されるINSERT

SQLバインド変数:

1)'Jane'
2)'4444'
3)'Holly'
4)200
5)200
6)NULL
7)'9/1/10 8:00'

OVERWRITEが解決であるため、更新は挿入に変更されます。列の変更後イメージがあれば使用され、ない場合は変更前イメージが使用されます。

10.3.8 DISCARD解決によるDELETEROWMISSINGの処理

この例では、証跡とデータベースのレコードに対する適用可能な変更前イメージと変更後イメージを使用したDISCARD解決を説明しています。ターゲット行が存在しない場合の解決方法を示します。ソースに対する削除の場合、ターゲット行が存在しなくてもかまわない(ターゲット行はいずれにせよ削除する必要がある)ため、解決方法は証跡内のDELETE操作を破棄することです。

表10-4 DISCARD解決によるDELETEROWMISSING競合の処理

イメージ

SQL

コメント

証跡内の変更前イメージ

name='Jane'
phone='4444'
address='Holly'
salary=200
balance=200
comment=NULL
last_mod_time='9/1/10 8:00'

N/A

証跡内の変更後イメージ

None

N/A

ターゲット・データベースのイメージ

None (row missing)

N/A

Replicatによって適用され、競合を検出する初期DELETE

SQLバインド変数:

1)'Jane'
2)'4444'
3)'Holly'
4)200
5)200
6)NULL
7)'9/1/10 8:00'

このSQLは、データが見つからないというエラーを戻します。COMPARECOLS文がALLに設定されているため、すべての列がWHERE句で使用されます。

競合を解決するためにReplicatによって適用されるSQL

None

DELETEROWMISSINGの解決としてDISCARDが指定されているため、証跡からの削除が破棄ファイルに格納されます。

10.3.9 OVERWRITE解決によるDELETEROWEXISTSの処理

この例では、証跡とデータベースのレコードに対する適用可能な変更前イメージと変更後イメージを使用したOVERWRITE解決を説明しています。ここでは、ソース行は削除されたがターゲット行は存在する場合の解決方法を示します。この場合、OVERWRITE解決により、ターゲットに削除が適用されます。

表10-5 OVERWRITE解決によるDELETEROWEXISTS競合の処理

イメージ

SQL

コメント

証跡内の変更前イメージ

name='Mary'
phone='222222'
address='Holly'
salary=100
balance=100
comment=NULL
last_mod_time='9/1/10 5:00'

N/A

証跡内の変更後イメージ

None

N/A

ターゲット・データベースのイメージ

name='Mary'
phone='1234567890'
address='Oracle Pkwy'
salary=100
balance=600
comment=com
last_mod_time='9/1/10 7:00'

行はターゲットに存在しますが、phone、address、balance、comment、last_mod_timeの各列が証跡内の変更前イメージと異なっています。

Replicatによって適用され、競合を検出する初期DELETE

SQLバインド変数:

1)'Mary'
2)'222222'
3)'Holly'
4)100
5)100d
6)NULL
7)'9/1/10 5:00'

COMPARECOLS文がALLに設定されているため、すべての列がWHERE句で使用されます。

変更前の値と現行値が異なるため、データが見つからないというエラーが発生します。

競合を解決するためにReplicatによって適用されるDELETE

SQLバインド変数:

1)'Mary'

OVERWRITEが解決であるため、(整合性エラーを回避するために)主キーのみを使用してDELETEが適用されます。

10.4 CDRの例2: USEDELTAおよびUSEMAXによるUPDATEROWEXISTSの処理

この例では、UPDATEにターゲット行は存在するが、キー以外の列が異なる場合、影響を受ける列に応じて2つの異なる解決タイプを使用してこの状況を処理し、問題を解決します。

10.4.1 この例で使用する表

各例では同一のOracleデータベースを想定しています。

CREATE TABLE tgt(
name varchar2(30) primary key,
phone varchar2(10),
address varchar2(100),
salary number,
balance number,
comment varchar2(100),
last_mod_time timestamp);

ソース・データベースでは、すべての列が補足的にログに記録されます。

ADD TRANDATA scott.src, COLS (name, phone, address, salary, balance, comment, last_mod_time);

10.4.2 MAP文

MAP fin.src, TARGET fin.tgt,
COMPARECOLS
(ON UPDATE KEYINCLUDING (address, phone, salary, last_mod_time),
ON DELETE KEYINCLUDING (address, phone, salary, last_mod_time)),
RESOLVECONFLICT (
UPDATEROWEXISTS,
(delta_res_method, USEDELTA, COLS (salary)),
(DEFAULT, USEMAX (last_mod_time)));

10.4.3 MAP文の説明

UPDATEにターゲット行は存在するが、キー以外の列が異なるUPDATEROWEXISTS競合には、列に応じて2つの異なる解決を使用します。

- delta_res_method解決では、salary列に対してUSEDELTA解決ロジックを使用し、値の変更が列の現行値に追加されるようにします。

- DEFAULTでは、last_mod_time列を解決列として使用し、表(デフォルトの列グループ)のその他すべての列に対しUSEMAX解決ロジックを使用します。この列は行が変更されるたびに現在の時間で更新され、証跡内のこの列の値がターゲットの値と比較されます。証跡レコード内のlast_mod_timeの値がターゲット・データベースのlast_mod_timeの現行値より大きい場合は、name、phone、address、balance、commentおよびlast_mod_timeの変更がターゲットに適用されます。

COMPARECOLSでは、主キー(name 列)とaddress、phone、salary、last_mod_timeの各列をUPDATE操作とDELETE操作の競合検出のための比較列として使用します。(balance列とcomment列は比較されません。)

注意:

USEMAXのかわりにUSEMAXEQ解決を使用すると、=条件を適用できます。詳細は、『Oracle GoldenGate for Windows and UNIXリファレンス』を参照してください。

10.4.4 エラー処理

例外表に対するエラー処理の例は、「エラー処理のためのOracle GoldenGateパラメータ・ファイルの構成」を参照してください。

表10-6 USEDELTAおよびUSEMAXによるUPDATEROWEXISTSの処理

イメージ

SQL

コメント

証跡内の変更前イメージ

name='Mary'
phone='1234567890'
address='Oracle Pkwy'
salary=100
balance=100
comment=NULL
last_mod_time='9/1/10 3:00'

last_mod_time='9/1/10 3:00は、USEMAX解決の解決列の変更前イメージです。

salary=100は、USEDELTA解決の変更前イメージです。

証跡内の変更後イメージ

phone='222222'
address='Holly'
salary=200
comment='new'
last_mod_time='9/1/10 5:00'

last_mod_time='9/1/10 5:00は、USEMAXの解決列の変更後イメージです。変更後イメージが存在するため、これが解決の特定に使用されます。

ターゲット・データベースのイメージ

name='Mary'
phone='1234567890'
address='Oracle Pkwy'
salary=600
balance=600
comment='com'
last_mod_time='9/1/10 4:00'

last_mod_time='9/1/10 4:00は、ターゲットの解決列の現行イメージであり、証跡内の解決列の値はこれと比較されます。

salary=600は、USEDELTA解決のターゲット列の現行イメージです。

Replicatによって適用され、競合を検出する初期UPDATE

SQLバインド変数:

1)'222222'
2)'Holly'
3)200
4)'new'
5)'9/1/10 5:00'
6)'Mary'
7)'1234567890'
8)'Oracle Pkwy'
9)100
10)'9/1/10 3:00'

salaryとlast_mod_timeの値が異なるため、このSQLはデータが見つからないというエラーを戻します。(commentとbalanceの値も異なりますが、これらの列は比較されません。)

USEDELTAを使用してsalaryの競合を解決するためにReplicatによって適用されるUPDATE。

SQLバインド変数:

1)200
2)100
3)'Mary'

USEDELTAでは、証跡内のsalaryの変更後イメージ(200)と証跡内のsalaryの変更前イメージ(100)の差が、ターゲットのsalaryの現行値(600)に追加されます。結果は700です。

600 + (200 - 100) = 700

USEMAXを使用してデフォルト列の競合を解決するためにReplicatによって適用されるUPDATE。

SQLバインド変数:

1)'222222'
2)'Holly'
3)'new'
4)'9/1/10 5:00'
5)'Mary'
6)'9/1/10 5:00'

USEMAXでは、証跡レコード内のlast_mod_timeの変更後の値がデータベースの現行値より大きいため、証跡レコードの変更後の値で行が更新されます。

salary列は、USEDELTA解決のUPDATEで解決されるため、ここでは設定していません。

10.5 CDRの例3: USEDELTA、USEMAXおよびIGNOREによるUPDATEROWEXISTSの処理

この例では、UPDATEにターゲット行は存在するが、キー以外の列が異なる場合、影響を受ける列に応じて3つの異なる解決タイプを使用してこの状況を処理し、競合を解決します。

10.5.1 この例で使用する表

各例では同一のOracleデータベースを想定しています。

CREATE TABLE tgt(
name varchar2(30) primary key,
phone varchar2(10),
address varchar2(100),
salary number,
balance number,
comment varchar2(100),
last_mod_time timestamp);

ソース・データベースでは、すべての列が補足的にログに記録されます。

ADD TRANDATA scott.src, COLS (name, phone, address, salary, balance, comment, last_mod_time);

10.5.2 MAP文

MAP fin.src, TARGET fin.tgt,
COMPARECOLS
(ON UPDATE ALLEXCLUDING (comment)),
RESOLVECONFLICT (
UPDATEROWEXISTS,
(delta_res_method, USEDELTA, COLS (salary, balance)),
(max_res_method, USEMAX (last_mod_time), COLS (address, last_mod_time)),
(DEFAULT, IGNORE));

10.5.3 MAP文の説明

- UPDATEにターゲット行は存在するが、キー以外の列が異なるUPDATEROWEXISTS競合には、列に応じて2つの異なる解決を使用します。

- delta_res_method解決では、salary列とbalance列に対してUSEDELTA解決ロジックを使用し、各値の変更が各列の現行値に追加されるようにします。

- max_res_method解決では、address列とlast_mod_time列に対してUSEMAX解決ロジックを使用します。last_mod_time列が解決列です。この列は行が変更されるたびに現在の時間で更新され、証跡内のこの列の値がターゲットの値と比較されます。証跡レコード内のlast_mod_timeの値がターゲット・データベースのlast_mod_timeの現行値より大きい場合は、addressとlast_mod_timeの変更がターゲットに適用されます。そうでない場合、変更は無視され、ターゲット値が維持されます。

- DEFAULTでは、表(デフォルトの列グループ)の残りの列(phoneとcomment)に対してIGNORE解決ロジックを使用します。Replicatでは、これらの列の変更は常に無視されます。

- COMPARECOLSでは、comment列を除くすべての列を、UPDATE操作の競合検出における比較列として使用します。commentは更新のWHERE句では使用されませんが、証跡レコード内に変更前イメージを持つその他すべての列が使用されます。

注意:

USEMAXのかわりにUSEMAXEQ解決を使用すると、=条件を適用できます。詳細は、『Oracle GoldenGate for Windows and UNIXリファレンス』を参照してください。

10.5.4 エラー処理

例外表に対するエラー処理の例は、「エラー処理のためのOracle GoldenGateパラメータ・ファイルの構成」を参照してください。

表10-7 USEDELTA、USEMAXおよびIGNOREによるUPDATEROWEXISTSの処理

イメージ

SQL

コメント

証跡内の変更前イメージ

name='Mary'
phone='1234567890'
address='Oracle Pkwy'
salary=100
balance=100
comment=NULL
last_mod_time='9/1/10 3:00

last_mod_time='9/1/10 3:00は、USEMAX解決の解決列の変更前イメージです。

salary=100とbalance=100は、USEDELTA解決の変更前イメージです。

証跡内の変更後イメージ

phone='222222'
address='Holly'
salary=200
comment='new'
last_mod_time='9/1/10 5:00'

last_mod_time='9/1/10 5:00は、USEMAXの解決列の変更後イメージです。変更後イメージが存在するため、これが解決の特定に使用されます。

salary=200は、USEDELTA解決の唯一の変更後イメージです。balanceについては、変更前イメージが計算で使用されます。

ターゲット・データベースのイメージ

name='Mary'
phone='1234567890'
address='Ralston'
salary=600
balance=600
comment='com'
last_mod_time='9/1/10 4:00'

last_mod_time='9/1/10 4:00は、USEMAXのターゲットの解決列の現行イメージであり、証跡内の解決列の値はこれと比較されます。

salary=600とbalance=600は、USEDELTAのターゲット列の現行イメージです。

Replicatによって適用され、競合を検出する初期UPDATE

SQLバインド変数:

1)'222222'
2)'Holly'
3)200
4)'new'
5)'9/1/10 5:00'
6)'Mary'
7)'1234567890'
8)'Oracle Pkwy'
9)100
10)100
11)'9/1/10 3:00'

address、salary、balance、last_mod_timeの各列の値が異なるため、このSQLはデータが見つからないというエラーを戻します。

USEDELTAを使用してsalaryの競合を解決するためにReplicatによって適用されるUPDATE。

SQLバインド変数:

1)200
2)100
3)'Mary'

salaryには100の差がありますが、balanceの値に変更がなかったため、更新のSQLではsalaryは不要です。USEDELTAでは、証跡内のsalaryの変更後イメージ(200)と変更前イメージ(100)の差が、ターゲットのsalaryの現行値(600)に追加されます。結果は700です。

USEMAXの競合を解決するためにReplicatによって適用されるUPDATE。

SQLバインド変数:

1)'Holly'
2)'9/1/10 5:00'
3)'Mary'
4)'9/1/10 5:00'

証跡レコード内のlast_mod_timeの変更後の値がデータベースの現行値より大きいため、その列とaddress列が証跡レコードの変更後の値で更新されます。

salary列は、USEDELTA解決のUPDATEで解決されるため、ここでは設定していません。

IGNOREに対し、Replicatによって適用されるUPDATE。

SQLバインド変数:

1)'222222'
2)'new'
3)'Mary'

DEFAULT列グループ(phoneとcomment)にIGNOREが指定されているため、解決のSQLは適用されません。

window.name='GUID-E14F094A-A46B-4D31-857F-3916C0090875' function footdisplay(footnum,footnote) { var msg = window.open('', 'NewWindow' + footnum, 'directories=no,height=120,location=no,menubar=no,resizable=yes,' + 'scrollbars=yes,status=no,toolbar=no,width=598'); msg.document.open('text/html'); }
11 Oracle GoldenGateのセキュリティの構成

この章では、Oracle GoldenGateのセキュリティの構成方法について説明します。

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

- Oracle GoldenGateのセキュリティ・オプションの概要

- マスター・キーとウォレット方式を使用したデータ暗号化

- ENCKEYS方式を使用したデータ暗号化

- 資格証明ストアでのアイデンティティ管理

- コマンドまたはパラメータ・ファイルで使用するパスワードの暗号化

- ENCKEYSファイルへの暗号化鍵の移入

- GGSCIコマンド・セキュリティの構成

- ターゲット・システムからの接続開始の使用

- Managerの保護

11.1 Oracle GoldenGateのセキュリティ・オプションの概要

次のセキュリティ機能を使用して、Oracle GoldenGate環境および処理対象のデータを保護できます。

セキュリティ機能

保護の対象

サポートされるデータベース

説明

データ暗号化

次の2つの方法が用意されています。

- マスター・キーとウォレット方式を使用したデータ暗号化

- ENCKEYS方式を使用したデータ暗号化

- 証跡または抽出ファイルのデータ

- TCP/IPネットワークを通じて送信されるデータ

マスター・キーとウォレット方式は、これをサポートしているプラットフォームで推奨される方法です。iSeries、z/OSおよびNonStopプラットフォームでは使用できません。

ENCKEYS方式は、Oracle GoldenGateでサポートされているすべてのデータベースとプラットフォームで使用できます。iSeries、z/OSおよびNonStopプラットフォームでは、Blowfishを使用する必要があります。

ファイル内、データ・リンク経由およびTCP/IP間のデータを暗号化します。次のいずれかの方法を使用します。

- 任意のAdvanced Encryption Security (AES)脚注 1暗号:
AES-128

AES-192

AES-256

- Blowfish脚注2

資格証明ストアのアイデンティティ管理

「資格証明ストアでのアイデンティティ管理」を参照してください

データベースへのログイン用にOracle GoldenGateプロセスに割り当てられたユーザーIDとパスワード(資格証明)

資格証明ストアは、この機能をサポートしているプラットフォームで推奨されるパスワード管理方法です。iSeries、z/OSおよびNonStopプラットフォームでは使用できません。

ユーザー資格証明は、セキュアなウォレット・ストレージで管理されます。コマンドやパラメータでは、資格証明の別名を指定します。

パスワード暗号化

「コマンドまたはパラメータ・ファイルで使用するパスワードの暗号化」を参照してください

コマンドおよびパラメータ・ファイルに指定され、Oracle GoldenGateプロセスがデータベースへのログインに使用するパスワード

Oracle GoldenGateでサポートされているすべてのデータベースとプラットフォームで使用できます。iSeries、z/OSおよびNonStopプラットフォームでは、Blowfishを使用する必要があります。その他のプラットフォームで推奨されるパスワード管理方法は、資格証明ストアです。

パスワードを暗号化し、その暗号化されたパスワードをコマンドまたはパラメータ入力で指定できるようにします。次のいずれかの方法を使用します。

- AES-128

- AES-192

- AES-256

- Blowfish

コマンドの認証

「GGSCIコマンド・セキュリティの構成」を参照してください

GGSCIを通じて発行されるOracle GoldenGateコマンド

Oracle GoldenGateでサポートされているすべてのデータベースとプラットフォームで使用できます。

オペレーティング・システムで保護されたファイル内に認証許可を格納します。CMDSEC(コマンド・セキュリティ)ファイルを構成します。

信頼できる接続

「ターゲット・システムからの接続開始の使用」を参照してください

ファイアウォールの先にある信頼されないOracle GoldenGateホスト・マシンへのTCP/IP接続

Oracle GoldenGateでサポートされているすべてのデータベースとプラットフォームで使用できます。

次のいずれかの方法を使用します。

- AES-128

- AES-192

- AES-256

- Blowfish

Managerセキュリティ

Managerのアクセス・ルール。

Oracle GoldenGateでサポートされているすべてのデータベースとプラットフォームで使用できます。

次を保護することができます。

- GGSCI: GGSCIコマンドライン・インタフェースへのアクセスを保護します。

- GUI: Activity ConsoleからOracle GoldenGateへのアクセスを保護します。

- MGR | MANAGER: Managerによって制御されるすべてのプロセス間コマンド(START、STOP、KILLなど)へのアクセスを保護します

- REPLICAT: Replicatプロセスへの接続を保護します。

- COLLECTOR | SERVER: Collectorプロセスを動的に作成する機能を保護します。

CryptoEngine

要件に適合する暗号化ライブラリを選択できます。ポータビリティ(Classic)、ポータビリティおよびFIPS-140標準の準拠(FIPS140)、または拡張スループット(Native)。

Oracle GoldenGateでサポートされているすべてのデータベースとプラットフォームで使用できます(ClassicおよびFIPS140)。

Oracle GoldenGateでサポートされているLinux.x64およびWindows.x64上のすべてのデータベースで使用できます(Native)。

Oracle GoldenGateプロセスで使用する暗号化ライブラリを選択します。

脚注1

Advanced Encryption Standard (AES)は、高度なデータ・セキュリティを必要とする政府機関やその他の組織で使用されている対称鍵暗号化標準です。128ビット鍵暗号、192ビット鍵暗号、256ビット鍵暗号という3種類の128ビット・ブロック暗号が用意されています。32ビットのプラットフォーム上で稼働するOracle以外のデータベースでAESを使用するには、LD_LIBRARY_PATH変数またはSHLIB_PATH変数(UNIX)、あるいはPATH変数(Windows)を使用して、Oracle GoldenGateインストール・ディレクトリのlibサブディレクトリのパスを設定する必要があります。64ビットのプラットフォームでは必要ありません。

脚注2

Blowfish暗号化: 鍵を使用した対称ブロック暗号です。Oracle GoldenGateによるBlowfishの実装では、ブロック・サイズは64ビット、鍵サイズは32から256ビットの可変長です。

11.2 マスター・キーとウォレット方式を使用したデータ暗号化

このデータ暗号化方式を使用するには、マスター・キー・ウォレットを作成してマスター・キーをウォレットに追加します。この方式では、データが証跡内またはTCP/IP間のどちらで暗号化されるかに応じて、次の処理を行います。

- 証跡ファイルがOracle GoldenGateで作成されるたびに、新規の暗号化鍵が自動的に生成されます。この暗号化鍵で証跡の内容を暗号化します。マスター・キーは、暗号化鍵を暗号化します。この暗号化鍵を暗号化するプロセスは鍵ラップと呼ばれています(詳細は、米国標準委員会のANS X9.102標準を参照してください)。

- ネットワーク間でデータを暗号化するため、Oracle GoldenGateではマスター鍵に基づく暗号化機能を使用してセッション鍵が生成されます。

Oracle GoldenGateでは、自動ログイン・ウォレット(ファイル拡張子.sso)と呼ばれる、ユーザーの操作なしで必要なパスワードを提供できる不明瞭化されたコンテナを使用します。

マスター・キーとウォレットを使用したデータ暗号化は、iSeries、z/OSまたはNonStopプラットフォームではサポートされていません。

この項では、次のタスクについて説明します。

ウォレットの作成とマスター・キーの追加

パラメータ・ファイルでの暗号化パラメータの指定

マスター・キーの更新

失効したマスター・キーの削除

11.2.1 ウォレットの作成とマスター・キーの追加

ウォレットはプラットフォームに依存しない形式で作成されます。ウォレットは、Oracle GoldenGate環境内のすべてのシステムからアクセス可能な共有ファイル・システム上に格納できます。あるいは、Oracle GoldenGate環境内の各システムで同じウォレットを使用することも可能です。各システム上のウォレットを使用する場合は、1つのシステム(通常はソース・システム)でウォレットを作成し、それをOracle GoldenGate環境内の他のすべてのシステムにコピーする必要があります。マスター・キーを追加、変更または削除するたびに、これを実行する必要があります。

次の手順では、ソース・システムでウォレットを作成し、それをOracle GoldenGate環境内の他のシステムにコピーする方法を説明します。

1. (オプション)Oracle GoldenGateインストール・ディレクトリのdirwltサブディレクトリ以外の場所にウォレットを格納するには、GLOBALSファイルでWALLETLOCATIONパラメータを使用して目的の場所を指定します。(GLOBALSファイルの詳細は、「GLOBALSファイルの操作」を参照してください。)

WALLETLOCATION directory_path

2. GGSCIでCREATE WALLETコマンドを使用して、マスター・キー・ウォレットを作成します。

CREATE WALLET

3. GGSCIでADD MASTERKEYコマンドを使用して、マスター・キーをウォレットに追加します。

ADD MASTERKEY

4. INFO MASTERKEYコマンドを発行して、追加した鍵が現在のバージョンであることを確認します。新規インストールの場合、バージョンは1です。

INFO MASTERKEY

5. VERSIONオプションを指定してINFO MASTERKEYコマンドを発行します(versionには現在のバージョン番号を指定します)。バージョン番号とそのバージョンのAESハッシュ値を記録します。

INFO MASTERKEY VERSION version

6. 他のすべてのOracle GoldenGateシステムにウォレットをコピーします。

7. ウォレットをコピーした各システム上で、VERSIONオプションを指定してINFO MASTERKEYコマンドを発行します(versionには記録しておいたバージョン番号を指定します)。各ウォレットで、StatusがCurrentになっていることを確認し、AESハッシュ値を記録しておいたコピー元の値と比較します。すべてのウォレットで、同じ鍵バージョンとハッシュ値が表示される必要があります。

INFO MASTERKEY VERSION version

11.2.2 パラメータ・ファイルでの暗号化パラメータの指定

次の手順では、証跡内およびネットワーク間のデータをマスター・キーとウォレット方式で暗号化するために必要なパラメータを追加します。

1. 次に示すパラメータ・ファイルに、次の項目を追加します。

- 証跡データを暗号化する手順: プライマリExtractグループとデータ・ポンプのパラメータ・ファイルで、暗号化対象の証跡またはファイルを指定するパラメータの前に、ENCRYPTTRAILパラメータ文を追加します。証跡またはファイルを指定するパラメータは、EXTTRAIL、RMTTRAIL、EXTFILEおよびRMTFILEです。構文は次のとおりです。

ENCRYPTTRAIL {AES128 | AES192 | AES256 | BLOWFISH}

- TCP/IP間のデータを暗号化する手順: データ・ポンプ(ポンプが使用されていない場合はプライマリExtract)のパラメータ・ファイルで、RMTHOSTOPTIONSパラメータのENCRYPTオプションを使用します。構文は次のとおりです。

RMTHOSTOPTIONS host, MGRPORT port, ENCRYPT {AES128 | AES192 | AES256 | BLOWFISH}

RMTHOSTOPTIONS ENCRYPT {AES128 | AES192 | AES256 | BLOWFISH}

説明:

- RMTHOSTOPTIONSは、パッシブExtractを含むExtractに使用されます。パッシブExtractの詳細は、「ターゲット・システムからの接続開始の使用」を参照してください。

- オプションなしのENCRYPTTRAILは、256鍵バイト置換を指定します。このフォーマットは安全ではないため、本番環境では使用しないでください。以前のOracle GoldenGateバージョンとの下位互換性を維持するためにのみ使用します。

- AES128の場合、AES-128暗号化アルゴリズムで暗号化されます。

- AES192の場合、AES-192暗号化アルゴリズムで暗号化されます。

- AES256の場合、AES-256暗号化アルゴリズムで暗号化されます。

- BLOWFISHの場合、Blowfish暗号化が使用されます(ブロック・サイズは64ビット、鍵サイズは32から128ビットの可変長です)。プラットフォームでサポートされている場合には、AESを使用します。BLOWFISHは、以前のOracle GoldenGateバージョンとの下位互換性を維持するために使用する他、z/OS上のDB2、DB2 for iおよびNonStop上のSQL/MXで使用します。これらのプラットフォームでは、AESはサポートされていません。

2. 証跡データを復号化してから出力証跡に書き込む場合は、データ・ポンプでDECRYPTTRAILパラメータを使用します。そうしないと、データ・ポンプで処理が必要なデータは自動的に復号化され、後で再暗号化されてから出力証跡に書き込まれます。(Replicatでは、パラメータ入力なしでデータが自動的に復号化されます。)

DECRYPTTRAIL

注意:

受信した証跡データを復号化してから再暗号化して任意の出力証跡またはファイルに書き込むよう、明示的に指定できます。まず、データを復号化するDECRYPTTRAILを入力し、次にENCRYPTTRAILと出力証跡の指定を入力します。DECRYPTTRAILはENCRYPTTRAILの前に入力されている必要があります。復号化と再暗号化を明示的に指示することにより、必要に応じてAESアルゴリズムを証跡ごとに変更できます。たとえば、ローカル証跡の暗号化にはAES 128を、リモート証跡の暗号化にはAES 256をそれぞれ使用できます。あるいは、1番目のプロセスと2番目のプロセス間の暗号化にはマスター・キーとウォレット方式を使用し、2番目のプロセスと3番目のプロセス間の暗号化にはENCKEYS方式を使用することも可能です。

11.2.3 マスター・キーの更新

次の手順では、暗号化鍵ウォレット内のマスター暗号化鍵を更新します。マスター・キーを更新すると、鍵の新しいバージョンが作成されます。名前は同じままですが、ビット順序が変更されます。セキュリティ・ポリシーの一環として、現在のマスター・キーを定期的に更新し、失効を回避してください。

マスター・キーの更新済バージョンはすべてウォレット内に残ります(ただし、DELETE MASTERKEYコマンドで削除対象とマークされてからPURGE WALLETコマンドでウォレットが消去されるまで)。詳細は、「失効したマスター・キーの削除」を参照してください。

ウォレットが共有記憶域で(共有ウォレットとして)一元管理されていない場合、更新されたウォレットは、Oracle GoldenGate構成内でウォレットを使用する他のすべてのシステムにコピーする必要があります。これを行うには、Oracle GoldenGateを停止する必要があります。次の手順では、これらの作業を正しい順序で実行する方法を示します。

1. Extractを停止します。

STOP EXTRACT group

2. ターゲット・システムで、各Replicatに対して次のコマンドを発行します(At EOFが戻されるまで)。

SEND REPLICAT group STATUS

3. ソース・システムで、データ・ポンプを停止します。

STOP EXTRACT group

4. ターゲット・システムで、Replicatグループを停止します。

STOP REPLICAT group

5. ソース・システムで、次のコマンドを発行してウォレットを開きます。

OPEN WALLET

6. ソース・システムで、次のコマンドを発行して現在の鍵のバージョンを確認します。バージョンを記録します。

INFO MASTERKEY

7. ソース・システムで、次のコマンドを発行してマスター・キーを更新します。

RENEW MASTERKEY

8. ソース・システムで、次のコマンドを発行して新しいバージョンが現在のものであることを確認します。

INFO MASTERKEY

注意:

共有ウォレットを使用している場合は、手順12に進みます。各システム上のウォレットを使用している場合は、次の手順を続行します。

9. ソース・システムで、次のコマンドを発行します(versionにはマスター・キーの新しいバージョンを指定します)。ハッシュ値を記録します。

INFO MASTERKEY VERSION version

10. すべてのターゲット・システム上で、以前のウォレットと同じ場所に、ソース・システムの更新されたウォレットをコピーします。

11. 各ターゲットで、次のコマンドを発行します(versionにはマスター・キーの新しいバージョン番号を指定します)。各ウォレットで、StatusがCurrentになっていることを確認し、新しいハッシュ値を記録しておいたコピー元の値と比較します。すべてのウォレットで、同じ鍵バージョンとハッシュ値が表示される必要があります。

INFO MASTERKEY VERSION version

12. Extractを再起動します。

START EXTRACT group

13. データ・ポンプを再起動します。

START EXTRACT group

14. Replicatを再起動します。

START REPLICAT group

11.2.4 失効したマスター・キーの削除

次の手順では、マスター・キーの失効バージョンを削除します。セキュアなOracle GoldenGateウォレットを維持するための全体的なポリシーの一環として、失効した鍵は削除してください。ウォレット内で保持する鍵のバージョンの数とその保存期間を定めたポリシーを作成しておくことをお薦めします。

注意:

Oracle GoldenGateの共有ウォレットを使用したデプロイの場合、マスター・キーの古いバージョンは、マスター・キーが更新された後、すべてのプロセスが最新バージョンを使用するまで保持される必要があります。待機する時間は、トポロジ、レイテンシ、およびデプロイのデータ・ロードにより異なります。24時間の最小の待機時間は控えめな見積りですが、すべてのプロセスが新しい鍵の使用を開始するのにかかる時間を決定するには、テストを実行する必要がある場合があります。すべてのプロセスが最新バージョンを使用しているかどうかを判定するには、マスター・キーの更新後すぐに各Extractのレポート・ファイルを表示して、古い鍵でマイニングされた最後のSCNを確認します。次に、Replicatレポート・ファイルを監視し、このSCNがすべてのReplicatグループにより適用されたことを確認します。この時点で、マスター・キーの旧バージョンを削除できます。

ウォレットが中央の記憶域に配置され、Oracle GoldenGateインストール環境全体でそのウォレットを使用できる場合、次の手順は共有ウォレットに対して1回実行するだけで済みます。Oracle GoldenGateプロセスを停止する必要はありません。

ウォレットが中央の記憶域にない(つまり、各Oracle GoldenGateシステムにコピーが存在する)場合は、次のいずれかを実行します。

- Oracle GoldenGateプロセスを停止できる場合は、ウォレットの変更手順を1度だけ実行して、更新されたウォレットを他のシステムにコピーしてから、Oracle GoldenGateプロセスを再起動します。

- Oracle GoldenGateプロセスを停止できない場合は、必ず各システム上でまったく同じ方法を使用してウォレットの変更手順を実行する必要があります。
次の手順には、両方のシナリオに対応する説明が含まれています。

1. ソース・システムで、次のコマンドを発行して、削除対象のマスター・キーのバージョンを確認します。通常、最も古いバージョンが削除対象です。対象のバージョンを記録します。

INFO MASTERKEY

2. ソース・システムで、次のコマンドを発行してウォレットを開きます。

OPEN WALLET

3. 次のコマンドを発行して失効したマスター・キーを削除します。特定のバージョン、指定範囲のバージョン、または現在のものを含むすべてのバージョンを削除するオプションが用意されています。すべてのバージョンを削除するには、トランザクション・アクティビティとOracle GoldenGateプロセスを停止する必要があります。

DELETE MASTERKEY {VERSION version | RANGE FROM begin_value TO end_value}

注意:

DELETE MASTERKEYは、削除対象の鍵のバージョンをマークするだけで、実際の削除は行いません。

4. DELETE MASTERKEYコマンドから戻されたメッセージを確認し、正しいバージョンが削除対象としてマークされていることを確かめます。間違ってマークされたバージョンのマークを解除するには、次の手順に進む前に、UNDELETE MASTERKEY VERSION versionコマンドを使用します。必要に応じて、INFO MASTERKEYコマンドを実行すると、マークされた削除対象を確認できます。

5. 正しいバージョンが削除対象としてマークされていることが確認できたら、次のコマンドを発行して、それらをウォレットから消去します。これは永久削除なので、元に戻せません。

PURGE WALLET

次の手順:

- ウォレットが共有記憶域に配置されている場合、手順はこれで終了です。

- 各システム上にウォレットが配置され、Oracle GoldenGateプロセスを停止できない場合は、Oracle GoldenGateシステムごとに前の手順を繰り返します。

- 各システム上にウォレットが配置され、Oracle GoldenGateプロセスを停止できる場合は、次の手順を続行してプロセスを停止し、ウォレットを正しい順序で他のシステムにコピーします。

6. Extractを停止します。

STOP EXTRACT group

7. GGSCIで、各データ・ポンプExtracに対して次のコマンドを発行します(At EOFが戻され、ローカル証跡内のすべてのデータが処理されたことが確認されるまで)。

SEND EXTRACT group STATUS

8. データ・ポンプを停止します。

STOP EXTRACT group

9. ターゲット・システムで、各Replicatに対して次のコマンドを発行します(At EOFが戻されるまで)。

SEND REPLICAT group STATUS

10. Replicatグループを停止します。

STOP REPLICAT group

11. すべてのターゲット・システム上で、以前のウォレットと同じ場所に、ソース・システムの更新されたウォレットをコピーします。

12. Extractを再起動します。

START EXTRACT group

13. データ・ポンプを再起動します。

START EXTRACT group

14. Replicatを再起動します。

START REPLICAT group

11.3 ENCKEYS方式を使用したデータ暗号化

このデータ暗号化方式を使用するには、暗号化鍵を生成してローカルのENCKEYSファイルに格納するよう、Oracle GoldenGateを構成します。この方式では永久鍵を使用します(永久鍵を変更するには、ENCKEYSファイルへの暗号化鍵の移入の指示に従ってアルゴリズムを再生成する必要があります)。ENCKEYSファイルは、オペレーティング・システムの一般的なファイル権限の割当て方法で保護されている必要があります。

次の手順では、AES暗号化鍵を生成し、それをENCKEYSファイルに格納する方法について説明します。

11.3.1 ENCKEYS方式を使用したデータ暗号化

1. 暗号化鍵を生成して、ENCKEYSファイルに格納します。ENCKEYSファイルへの暗号化鍵の移入を参照してください。作成したENCKEYSファイルを、中間システムとすべてのターゲット・システムのOracle GoldenGateインストール・ディレクトリに必ずコピーしてください。

2. 次に示すパラメータ・ファイルに、次の項目を追加します。

- 証跡データを暗号化する手順: プライマリExtractグループとデータ・ポンプのパラメータ・ファイルで、暗号化対象の証跡またはファイルを指定するパラメータの前に、ENCRYPTTRAILパラメータを追加します。証跡またはファイルを指定するパラメータは、EXTTRAIL、RMTTRAIL、EXTFILEおよびRMTFILEです。構文は次のいずれかです。

ENCRYPTTRAIL {AES128 | AES192 | AES256 | BLOWFISH}

ENCRYPTTRAIL AES192, KEYNAME keyname

- TCP/IP間のデータを暗号化する手順: データ・ポンプ(ポンプが使用されていない場合はプライマリExtract)のパラメータ・ファイルで、RMTHOSTOPTIONSパラメータに、ENCRYPTオプションとKEYWORD句を追加します。構文は次のいずれかです。

RMTHOSTOPTIONS host, MGRPORT port, ENCRYPT {AES128 | AES192 | AES256 | BLOWFISH} KEYNAME keyname

RMTHOSTOPTIONS ENCRYPT {AES128 | AES192 | AES256 | BLOWFISH} KEYNAME keyname

説明:

- RMTHOSTOPTIONSは、Extractに使用されます。パッシブExtractの詳細は、「ターゲット・システムからの接続開始の使用」を参照してください。

- ENCRYPTTRAILでオプションを指定しない場合、すべてのデータベース・タイプでAES128がデフォルトとして使用されます(ただし、iSeries、z/OSおよびNonStopプラットフォームではBLOWFISHがデフォルトです)。

- AES128の場合、AES-128暗号化アルゴリズムで暗号化されます。iSeries、z/OSおよびNonStopプラットフォームではサポートされていません。

- AES192の場合、AES-192暗号化アルゴリズムで暗号化されます。iSeries、z/OSおよびNonStopプラットフォームではサポートされていません。

- AES256の場合、AES-256暗号化アルゴリズムで暗号化されます。iSeries、z/OSおよびNonStopプラットフォームではサポートされていません。

- BLOWFISHの場合、Blowfish暗号化が使用されます(ブロック・サイズは64ビット、鍵サイズは32から128ビットの可変長です)。プラットフォームでサポートされている場合には、AESを使用します。BLOWFISHは、以前のOracle GoldenGateバージョンとの下位互換性を維持するために使用する他、z/OS上のDB2、DB2 for iおよびNonStop上のSQL/MXで使用します。これらのプラットフォームでは、AESはサポートされていません。

- KEYNAME keynameでは、ENCKEYSファイルにある暗号化鍵の論理参照名を指定します。ENCRYPTTRAILのオプションではありません。

注意:

RMTHOSTは、Extractがパッシブ構成でない場合に使用します。詳細は、「ターゲット・システムからの接続開始の使用」を参照してください。

3. TCP/IPを通じて暗号化されるデータで静的Collectorを使用する場合、Collectorの起動文字列に次のパラメータを挿入します。

-KEYNAME keyname
-ENCRYPT algorithm

指定した鍵名とアルゴリズムは、RMTHOSTのKEYNAMEおよびENCRYPTオプションで指定されたものと一致する必要があります。

11.3.2 ENCKEYS方式を使用したデータ復号化

TCP/IP接続を通じて暗号化されたデータは、送信先で証跡に書き込まれる前に自動的に復号化されます(証跡暗号化が指定されていない場合)。

証跡内で暗号化されたデータは暗号化されたままです(DECRYPTTRAILパラメータが使用されていない場合)。Replicatで暗号化データをターゲットに適用できるようにするには、あらかじめDECRYPTTRAILが必要です。データ・ポンプでは、暗号化データをそのまま出力証跡に渡します(DECRYPTTRAILおよびENCRYPTTRAILパラメータが使用されていない場合)。データ・ポンプでデータを処理する必要がある場合は、次のようにデータの復号化と暗号化を行います。

データ・ポンプで処理するためにデータを復号化する手順

データ・ポンプのパラメータ・ファイルにDECRYPTTRAILパラメータを追加します。復号化アルゴリズムと鍵は、証跡の暗号化に使用したものと一致している必要があります(「ENCKEYS方式を使用したデータ暗号化」を参照)。

DECRYPTTRAIL {AES128 | AES192 | AES256 | BLOWFISH}

データ・ポンプで処理した後にデータを暗号化する手順

データ・ポンプが出力証跡またはファイルにデータを書き込む前にそのデータを暗号化するには、対象の証跡またはファイルを指定するパラメータの前にENCRYPTTRAILパラメータを使用します。証跡またはファイルを指定するパラメータは、EXTTRAIL、RMTTRAIL、EXTFILEおよびRMTFILEです。ENCRYPTTRAILパラメータと証跡またはファイルの指定は、DECRYPTTRAILパラメータの後に配置する必要があります。「ENCKEYS方式を使用したデータ暗号化」を参照してください

注意:

ENCRYPTTRAILで指定するアルゴリズムは、証跡ごとに変更できます。たとえば、ローカル証跡の暗号化にはAES 128を、リモート証跡の暗号化にはAES 256をそれぞれ使用できます。

Replicatで処理するためにデータを復号化する手順

Replicatの読み取る証跡が暗号化されている場合は、Replicatのパラメータ・ファイルにDECRYPTTRAILパラメータ文を追加します。復号化アルゴリズムと鍵は、証跡の暗号化に使用したものと一致している必要があります。「ENCKEYS方式を使用したデータ暗号化」を参照してください

11.3.3 ENCKEYS方式を使用したデータ暗号化の例

次の例では、様々な証跡またはファイルに対して暗号化を有効化/無効化する方法を示しています。この例では、Extractで2つのローカル証跡に書き込みますが、暗号化する必要があるのはそのうちの1つのみです。

Extract構成で、証跡bbは暗号化されない証跡なので、そのEXTTRAILパラメータは、証跡aaを暗号化するENCRYPTTRAILパラメータの前に配置されます。あるいは、証跡bbを指定するEXTTRAILパラメータの前にNOENCRYPTTRAILパラメータを使用し、次に、証跡aaを指定するEXTTRAILパラメータの前にENCRYPTTRAILパラメータを使用することもできます。

この例では、データ・ポンプ1pumpでデータを処理できるよう、暗号化データを復号化する必要があります。そのため、データ・ポンプのパラメータ・ファイルでDECRYPTTRAILパラメータが使用されています。データを再暗号化して出力するには、ENCRYPTTRAILパラメータをDECRYPTTRAILの後(ただし出力証跡の指定の前)に使用する必要があります。データ・ポンプでデータを処理する必要がない場合は、DECRYPTTRAILおよびENCRYPTTRAILパラメータを省略して、暗号化された状態のままReplicatに渡すことができます。

例11-1 Extractのパラメータ・ファイル

EXTRACT capt
USERIDALIAS ogg
DISCARDFILE /ogg/capt.dsc, PURGE
-- Do not encrypt this trail.
EXTTRAIL /ogg/dirdat/bb
TABLE SALES.*;
-- Encrypt this trail with AES-192.
ENCRYPTTRAIL AES192
EXTTRAIL /ogg/dirdat/aa
TABLE FIN.*;

例11-2 データ・ポンプ1のパラメータ・ファイル

EXTRACT 1pump
USERIDALIAS ogg
DISCARDFILE /ogg/1pmp.dsc, PURGE
-- Decrypt the trail this pump reads. Use encryption key mykey1.
DECRYPTTRAIL AES192
-- Encrypt the trail this pump writes to, using AES-192.
RMTHOSTOPTIONS myhost1, MGRPORT 7809
ENCRYPTTRAIL AES192
RMTTRAIL /ogg/dirdat/cc
TABLE FIN.*;

例11-3 データ・ポンプ2のパラメータ・ファイル

EXTRACT 2pump
USERIDALIAS ogg
DISCARDFILE /ogg/2pmp.dsc, PURGE
RMTHOST myhost2, MGRPORT 7809
RMTTRAIL /ogg/dirdat/dd
TABLE SALES.*;

例11-4 Replicat1(myhost1上)のパラメータ・ファイル

REPLICAT 1deliv
USERIDALIAS ogg
ASSUMETARGETDEFS
DISCARDFILE /ogg/1deliv.dsc, PURGE
-- Decrypt the trail this Replicat reads. Use encryption key mykey2.
DECRYPTTRAIL AES192
MAP FIN.*, TARGET FIN.*;

例11-5 Replicat 2(myhost2上)のパラメータ・ファイル

REPLICAT 2deliv
USERIDALIAS ogg
ASSUMETARGETDEFS
DISCARDFILE /ogg/2deliv.dsc, PURGE
MAP SALES.*, TARGET SALES.*;

11.4 資格証明ストアでのアイデンティティ管理

この項では、Oracle GoldenGateの資格証明ストアを使用して、暗号化されたデータベース・パスワードとユーザーIDを管理し、それらを別名と関連付ける方法について説明します。コマンドまたはパラメータ・ファイルでは、実際のユーザーIDやパスワードではなく別名を指定するため、暗号化鍵のユーザー入力は必要ありません。資格証明ストアはOracle Credential Store Framework (CSF)内の自動ログイン・ウォレットとして実装されます。

資格証明ストアを使用するもう1つのメリットは、複数のOracle GoldenGateインストール環境で同じ資格証明ストアを使用しながら、それぞれのローカル資格証明に対する管理を保持できることです。資格証明ストアは、ドメインと呼ばれる論理コンテナにパーティション化できます(Oracle GoldenGateのインストール環境ごとに1つのドメインを使用するなど)。ドメインを使用すると、別名をセットで1つ(Extractはext、Replicatはrepというように)作成し、各ドメインの同じ別名に異なるローカル資格証明を割り当てられます。たとえば、ユーザーogg1の資格証明をDOMAIN system1にALIAS extとして格納し、ユーザーogg2の資格証明をDOMAIN system2にALIAS extとして格納できます。

資格証明ストアのセキュリティ機能は、iSeries、z/OSおよびNonStopプラットフォームではサポートされていません。これらのプラットフォームと、サポートされている他のプラットフォームの詳細は、「コマンドまたはパラメータ・ファイルで使用するパスワードの暗号化」を参照してください

資格証明ストアを使用するには、次の手順を実行します。

- 資格証明ストアの作成とデータ移入

- パラメータまたはコマンドへの別名の指定

11.4.1 資格証明ストアの作成とデータ移入

1. (オプション)Oracle GoldenGateインストール・ディレクトリのdircrdサブディレクトリ以外の場所に資格証明ストアを格納するには、GLOBALSファイルでCREDENTIALSTORELOCATIONパラメータを使用して目的の場所を指定します。(GLOBALSファイルの詳細は、「GLOBALSファイルの操作」を参照してください。)

2. Oracle GoldenGateインストール・ディレクトリからGGSCIを実行します。

3. 次のコマンドを発行して、資格証明ストアを作成します。

ADD CREDENTIALSTORE

4. 次のコマンドを発行して、資格証明の各セットを資格証明ストアに追加します。

ALTER CREDENTIALSTORE ADD USER userid,
[PASSWORD password]
[ALIAS alias]
[DOMAIN domain]

説明:

- useridはユーザー名です。資格証明ストアに配置できるユーザー名のインスタンスは1つのみです(ALIASまたはDOMAINオプションが使用されていない場合)。

- passwordはパスワードです。このオプションを使用すると、パスワードはエコーされます(不明瞭化されません)。セキュリティ上の理由から、このオプションを省略し、コマンドでパスワードの入力を求めるプロンプトを表示できるようにして、入力時にパスワードを不明瞭化することをお薦めします。

- aliasはユーザー名の別名です。ログイン資格証明が必要なパラメータとコマンドでは、資格証明のかわりに別名を使用します。ALIASオプションを省略すると、別名はデフォルトでユーザー名に設定されます。パラメータまたはコマンド入力でユーザー名を使用したくない場合は、ALIASを使用して、ユーザー名とは別の名前を指定します。

- domainは、指定された別名を含むドメインです。デフォルトのドメインはOracle GoldenGateです。

この手順で使用されているコマンドとその他の資格証明ストア・コマンドの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

11.4.2 パラメータまたはコマンドへの別名の指定

次のコマンドおよびパラメータでは、ログイン資格証明のかわりに別名を使用できます。

表11-1 パラメータおよびコマンドへの資格証明の別名の指定

資格証明の対象

使用するパラメータまたはコマンド

Oracle GoldenGateデータベース・ログイン脚注 3

USERIDALIAS alias

Oracle ASMインスタンスのOracle GoldenGateデータベース・ログイン

TRANLOGOPTIONS ASMUSERALIAS alias

ダウンストリームOracleマイニング・データベースのOracle GoldenGateデータベース・ログイン

TRANLOGOPTIONS MININGUSERALIAS alias

{CREATE | ALTER} USER name IDENTIFIED BY passwordのパスワード置換

DDLOPTIONS DEFAULTUSERPASSWORDALIAS alias

GGSCIからのOracle GoldenGateデータベース・ログイン

DBLOGIN USERIDALIAS alias

GGSCIからダウンストリームOracleマイニング・データベースへのOracle GoldenGateデータベース・ログイン

MININGDBLOGIN USERIDALIAS alias

脚注3

USERIDALIASに必要な構文要素は、データベース・タイプによって異なります。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

11.5 コマンドまたはパラメータ・ファイルで使用するパスワードの暗号化

この項では、コマンドまたはパラメータ・ファイルで指定されるデータベース・パスワードの暗号化方法を説明します。この方法では、平文のパスワードを入力として使用し、不明瞭化されたパスワード文字列と参照キーを生成して、その両方をコマンドまたはパラメータ・ファイルで使用できます。この暗号化方法は、Oracle GoldenGateプロセスからデータベースにアクセスするにはログインが求められるすべてのデータベースに対応しています。

データベースによっては、この方法のかわりに資格証明ストアを使用できる場合があります。「資格証明ストアでのアイデンティティ管理」を参照してください

コマンドまたはパラメータ・ファイルで暗号化パスワードを使用するには、次の手順を実行します。

- パスワードの暗号化

- パラメータ・ファイルまたはコマンドへの暗号化パスワードの指定

11.5.1 パスワードの暗号化

1. GGSCIを実行します。

2. ENCRYPT PASSWORDコマンドを発行します。

ENCRYPT PASSWORD password algorithm ENCRYPTKEY {key_name | DEFAULT}

説明:

- passwordは平文のログイン・パスワードです。パスワードは引用符で囲まないでください。パスワードに大/小文字の区別がある場合は、そのように入力してください。

- algorithmでは、使用する暗号化アルゴリズムを指定します。

- AES128の場合、AES-128暗号が使用されます(鍵サイズは128ビットです)。

- AES192の場合、AES-192暗号が使用されます(鍵サイズは192ビットです)。

- AES256の場合、AES-256暗号が使用されます(鍵サイズは256ビットです)。

- BLOWFISHの場合、Blowfish暗号化が使用されます(ブロック・サイズは64ビット、鍵サイズは32から128ビットの可変長です)。プラットフォームでサポートされている場合には、AESを使用します。BLOWFISHは、以前のOracle GoldenGateバージョンとの下位互換性を維持するために使用する他、z/OS上のDB2、DB2 for iおよびNonStop上のSQL/MXで使用します。これらのプラットフォームでは、AESはサポートされていません。

- ENCRYPTKEY key_nameは、ENCKEYS参照ファイル内のユーザー作成の暗号化鍵の論理名を指定します。鍵の名前は、ENCKEYSファイルにある実際の鍵を参照するために使用されます。AES暗号化を行うには、ユーザー定義の鍵とENCKEYSファイルを使用する必要があります。鍵とENCKEYSファイルを作成するには、「ENCKEYSファイルへの暗号化鍵の移入」を参照してください。

- ENCRYPTKEY DEFAULTを指定すると、Oracle GoldenGateで事前定義済のBlowfish鍵が生成されます。このタイプの鍵は安全ではないため、プラットフォームでAESがサポートされている場合は、本番環境では使用しないでください。このオプションはz/OS上のDB2、DB2 for i、およびSQL/MXでのみ使用してください(BLOWFISHが指定されている場合)。AESをDEFAULTとともに使用すると、ENCRYPT PASSWORDはエラーを戻します。
アルゴリズムを指定しない場合、z/OS上のDB2およびNonStop SQL/MX以外のすべてのデータベース・タイプではAES128がデフォルトになり、z/OS上のDB2およびNonStop SQL/MXではBLOWFISHがデフォルトになります。

次に、様々なオプションを指定したENCRYPT PASSWORDの例を示します。

ENCRYPT PASSWORD mypassword AES256 ENCRYPTKEY mykey1
ENCRYPT PASSWORD mypassword BLOWFISH ENCRYPTKEY mykey1
ENCRYPT PASSWORD mypassword BLOWFISH ENCRYPTKEY DEFAULT

3. 暗号化パスワードは、ENCRYPT PASSWORDコマンドの実行時に画面に出力されます。暗号化パスワードをコピーして、コマンドまたはパラメータに貼り付けます(「パラメータ・ファイルまたはコマンドへの暗号化パスワードの指定」の手順を参照)。

11.5.2 パラメータ・ファイルまたはコマンドへの暗号化パスワードの指定

ENCRYPT PASSWORDコマンド(「コマンドまたはパラメータ・ファイルで使用するパスワードの暗号化」を参照)で生成した暗号化パスワードをコピーし、表11-2に示すようにOracle GoldenGateの適切なパラメータ文またはコマンドに貼り付けます。オプションについては表の後で説明します。

表11-2 パラメータおよびコマンドへの暗号化パスワードの指定

パスワードの対象

使用するパラメータまたはコマンド

Oracle GoldenGateデータベース・ログイン脚注 4

USERID user, PASSWORD password, &
algorithm ENCRYPTKEY {keyname | DEFAULT}

Oracle ASMインスタンスのOracle GoldenGateデータベース・ログイン

TRANLOGOPTIONS ASMUSER SYS@ASM_instance_name, &
ASMPASSWORD password, &
algorithm ENCRYPTKEY {keyname | DEFAULT}

ダウンストリームOracleマイニング・データベースのOracle GoldenGateデータベース・ログイン

[MININGUSER {/ | user}[, MININGPASSWORD password]&
[algorithm ENCRYPTKEY {key_name | DEFAULT}]&
[SYSDBA]]

{CREATE | ALTER} USER name IDENTIFIED BY passwordのパスワード置換

DDLOPTIONS DEFAULTUSERPASSWORD password &
algorithm ENCRYPTKEY {keyname | DEFAULT}

Oracle TDE共有秘密鍵のパスワード

DBOPTIONS DECRYPTPASSWORD passwordFoot 5 algorithm &
ENCRYPTKEY {keyname | DEFAULT}

GGSCIからのOracle GoldenGateデータベース・ログイン

DBLOGIN USERID user, PASSWORD password, &
algorithm ENCRYPTKEY {keyname | DEFAULT}

GGSCIからダウンストリームOracleマイニング・データベースへのOracle GoldenGateデータベース・ログイン

MININGDBLOGIN USERID user, PASSWORD password,&
algorithm ENCRYPTKEY {keyname | DEFAULT}

脚注4

USERIDに必要な構文要素は、データベース・タイプによって異なります。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

脚注5

これは共有秘密です。

説明:

- userは、Oracle GoldenGateプロセスまたは(Oracleのみ)ホスト文字列のデータベース・ユーザー名です。Oracle ASMの場合、ユーザー名はSYSである必要があります。

- passwordは、ENCRYPT PASSWORDコマンドの結果からコピーした暗号化パスワードです。

- algorithmは、パスワードの暗号化に使用した暗号化アルゴリズムを、AES128、AES192、AES256またはBLOWFISHの中から指定します。デフォルトの鍵を使用し、アルゴリズムを指定しない場合は、AES128がデフォルトになります。

- ENCRYPTKEY keynameでは、ENCKEYS参照ファイルにある、ユーザーが作成した暗号化鍵の論理参照名を指定します。ENCRYPT PASSWORDをKEYNAME keynameオプションとともに使用した場合に使用します。

- ENCRYPTKEY DEFAULTを指定すると、Oracle GoldenGateでランダムな鍵が使用されます。ENCRYPT PASSWORDがKEYNAME DEFAULTオプションとともに使用された場合に使用します。

次に、パラメータおよびコマンドで暗号化パスワードを使用する例を示します。

SOURCEDB db1 USERID ogg,&
PASSWORD AACAAAAAAAAAAAJAUEUGODSCVGJEEIUGKJDJTFNDKEJFFFTC, &
AES128, ENCRYPTKEY securekey1

USERID ogg, PASSWORD AACAAAAAAAAAAAJAUEUGODSCVGJEEIUGKJDJTFNDKEJFFFTC, &
BLOWFISH, ENCRYPTKEY securekey1

USERID ogg, PASSWORD AACAAAAAAAAAAAJAUEUGODSCVGJEEIUGKJDJTFNDKEJFFFTC, &
BLOWFISH, ENCRYPTKEY DEFAULT

TRANLOGOPTIONS ASMUSER SYS@asm1, &
ASMPASSWORD AACAAAAAAAAAAAJAUEUGODSCVGJEEIUGKJDJTFNDKEJFFFTC, &
AES128, ENCRYPTKEY securekey1

DBLOGIN USERID ogg, PASSWORD &
AACAAAAAAAAAAAJAUEUGODSCVGJEEIUGKJDJTFNDKEJFFFTC, &
AES128, ENCRYPTKEY securekey1

DDLOPTIONS DEFAULTUSERPASSWORD &
AACAAAAAAAAAAAJAUEUGODSCVGJEEIUGKJDJTFNDKEJFFFTC, &
AES 256 ENCRYPTKEY mykey

DBOPTIONS DECRYPTPASSWORD AACAAAAAAAAAAAJAUEUGODSCVGJEEIUGKJDJTFNDKEJFFFTC, &
AES 256 ENCRYPTKEY mykey

DDLOPTIONS PASSWORD AACAAAAAAAAAAAJAUEUGODSCVGJEEIUGKJDJTFNDKEJFFFTC, &
AES 256 ENCRYPTKEY mykey

11.6 ENCKEYSファイルへの暗号化鍵の移入

次のセキュリティ機能を使用する場合、暗号化鍵を生成して格納する必要があります。

- ENCRYPTTRAIL (詳細は、ENCKEYS方式を使用したデータ暗号化を参照してください)

- ENCRYPT PASSWORDとENCRYPTKEY keyname (「コマンドまたはパラメータ・ファイルで使用するパスワードの暗号化」を参照)

- RMTHOSTまたはRMTHOSTOPTIONSとENCRYPT (「ENCKEYS方式を使用したデータ暗号化」を参照)

この手順では、次の操作を実行します。

- 1つ以上の暗号化鍵を作成します。

- ソース・システムのENCKEYS参照ファイルに鍵を格納します。

- 各ターゲット・システムにENCKEYSファイルをコピーします。

独自の鍵を定義するか、Oracle GoldenGateのKEYGENユーティリティを実行してランダムな鍵を作成できます。

11.6.1 独自の鍵の定義

任意のツールを使用します。鍵の値は、次のいずれかの形式で最大256ビット(32バイト)です。

- 引用符で囲んだ英数字の文字列("Dailykey"など)

- 接頭辞0xを付けた16進文字列(0x420E61BE7002D63560929CCA17A4E1FBなど)

11.6.2 KEYGENを使用した鍵の生成

ソース・システムでディレクトリをOracle GoldenGateのホーム・ディレクトリに変更し、次のシェル・コマンドを発行します。必要に応じて、複数の鍵を作成できます。鍵の値は画面に戻されます。これらをコピーしてENCKEYSファイルに貼り付けることができます。

KEYGEN key_length n

説明:

- key lengthは、最大256ビット(32バイト)の暗号化鍵の長さです。

- nは、生成する鍵の数を示します。

例:

KEYGEN 128 4

11.6.3 ENCKEYS参照ファイルの作成とデータ移入

1. ソース・システムで、新しいASCIIテキスト・ファイルを開きます。

2. 生成した鍵の値ごとに、任意の論理名に続けて鍵の値を入力します。

- 鍵の名前には、空白または引用符のない1から24個の英数字文字列を指定できます。

- 行を分けて複数の鍵の定義を配置します。

- 鍵の名前または値は、引用符で囲まないでください。囲むとテキストとして解釈されます。
次のサンプルのENCKEYSファイルを参考用として使用してください。

暗号化鍵名

暗号化鍵値

## Key name
superkey
secretkey
superkey1
superkey2
superkey3

Key value
0x420E61BE7002D63560929CCA17A4E1FB
0x027742185BBF232D7C664A5E1A76B040
0x42DACD1B0E94539763C6699D3AE8E200
0x0343AD757A50A08E7F9A17313DBAB045
0x43AC8DCE660CED861B6DC4C6408C7E8A

3. Oracle GoldenGateのインストール・ディレクトリに、このファイルを拡張子なしで、すべて大文字のENCKEYSという名前で保存します。

4. ENCKEYSファイルを、すべてのシステムのOracle GoldenGateインストール・ディレクトリにコピーします。すべてのENCKEYSファイルに含まれる鍵の名前および値は同一である必要があり、同一でないとデータ交換に失敗し、ExtractおよびCollectorは次のメッセージとともに中断します。

GGS error 118 – TCP/IP Server with invalid data.

11.7 GGSCIコマンド・セキュリティの構成

Oracle GoldenGateでコマンド・セキュリティを確立して、Oracle GoldenGate機能へのアクセスを許可するユーザーを制御できます。たとえば、特定のユーザーにINFOコマンドおよびSTATUSコマンドの発行を許可する一方で、STARTコマンドおよびSTOPコマンドの使用を拒否できます。セキュリティ・レベルは、オペレーティング・システムのユーザー・グループによって定義されます。

Oracle GoldenGateコマンドに対するセキュリティを実装するには、Oracle GoldenGateディレクトリにCMDSECファイルを作成します。このファイルがない場合、すべてのユーザーにすべてのOracle GoldenGateコマンドに対するアクセス権が付与されます。

注意:

ggsciプログラム自体のセキュリティは、オペレーティング・システムのセキュリティ制御機能によって制御されます。

11.7.1 コマンド・セキュリティの設定

1. 新しいASCIIテキスト・ファイルを開きます。

2. 次の構文および例を参照して、制限するコマンドごとに1つ以上のセキュリティ・ルールを作成します(1行に1つのルール)。ルールは、個別性の最も高いもの(ワイルドカードのないもの)から最も低いものへと指定します。セキュリティ・ルールは、CMDSECファイルの一番上から下に向かって処理されます。条件が満たされる最初のルールは、アクセスを許可するかどうかを決定するルールです。

次の各構成要素を空白またはタブ文字で区切ります。

command_name command_object OS_group OS_user {YES | NO}

説明:

- command_nameは、GGSCIコマンド名またはワイルドカードです(START、STOP、*など)。

- command_objectは、任意のGGSCIコマンド・オブジェクトまたはワイルドカードです(EXTRACT、REPLICAT、MANAGERなど)。

- OS_groupは、WindowsまたはUNIXのユーザー・グループ名です。UNIXシステムでは、グループ名のかわりに数値のグループIDを指定できます。ワイルドカードを使用すると、すべてのグループを指定できます。

- OS_userは、WindowsまたはUNIXのユーザー名です。UNIXシステムでは、ユーザー名のかわりに数値のユーザーIDを指定できます。ワイルドカードを使用すると、すべてのユーザーを指定できます。

- YES | NOでは、コマンドに対するアクセス権を付与するか、または禁止するかを指定します。

3. このファイルをOracle GoldenGateのホーム・ディレクトリにCMDSECという名前(UNIXシステムでは大文字を使用)で保存します。

次の例は、UNIXシステムでのCMDSECファイルの適切な実装を示しています。

表11-3 サンプルのCMDSECファイルとその説明

ファイルの内容

説明

#GG command security

コメント行

STATUS REPLICAT * Smith NO

STATUS REPLICATがユーザーSmithに対して拒否されます。

STATUS * dpt1 * YES

先行するルールを除き、すべてのSTATUSコマンドがdpt1のすべてのユーザーに対して許可されます。

START REPLICAT root * YES

START REPLICATが、rootグループのすべてのメンバーに対して許可されます。

START REPLICAT * * NO

先行するルールを除き、START REPLICATがすべてのユーザーに対して拒否されます。

* EXTRACT 200 * NO

すべてのEXTRACTコマンドが、IDが200のすべてのグループに対して拒否されます。

* * root root YES

rootユーザーに対して任意のコマンドが許可されます。

* * * * NO

すべてのユーザーに対してすべてのコマンドが拒否されます。この行によって、先行するルールで明示的にアクセスを許可または拒否していない他のすべてのユーザーのセキュリティに対応します。そうしないと、先行する明示的な許可または拒否を除き、すべてのユーザーに対してすべてのコマンドが許可されます。

次の不適切な例は、CMDSECファイルの作成時に避ける必要のある設定を示しています。

表11-4 不適切なCMDSECのエントリ

ファイルの内容

説明

STOP * dpt2 * NO

すべてのSTOPコマンドが、グループdpt2のすべてのユーザーに対して拒否されます。

STOP * * Chen YES

すべてのSTOPコマンドがChenに対して許可されます。

表11-4のエントリ順序では、論理エラーが発生します。1番目のルール(1行目)によって、すべてのSTOPコマンドがグループdpt2のすべてのメンバーに対して拒否されます。2番目のルール(2行目)によって、すべてのSTOPコマンドがユーザーChenに対して許可されます。このとき、Chenは、dpt2グループのメンバーであるため、このコマンドを発行する権限を付与される必要があっても、2番目のルールによってすべてのSTOPコマンドに対するアクセスを拒否されます。

このセキュリティ・ルールを適切に構成する方法は、ユーザー固有のルールを、それよりも一般的な1つ以上のルールの前に設定することです。したがって、エラーを修正するには、2つのSTOPルールの順序を逆にします。

11.7.2 CMDSECファイルの保護

GGSCIプログラムとCMDSECファイルのセキュリティは、オペレーティング・システムのセキュリティ制御機能によって制御されます。CMDSECファイルは、セキュリティの根源であるため、保護する必要があります。読取りアクセスは必要に応じて付与してかまいませんが、書込みアクセスと削除アクセスは、Oracle GoldenGate Administratorsにのみ許可することをお薦めします。

11.8 ターゲット・システムからの接続開始の使用

信頼できるイントラネット・ゾーン内にターゲット・システムが存在し、信頼度がより低いゾーンにソース・システムが存在する場合、ソース・システムから接続を開始すると(Oracle GoldenGateの標準的な方法)、セキュリティ・ポリシーに違反する可能性があります。また、信頼度が低いゾーンに存在するシステムに、信頼できるゾーンのシステムのポートまたはIPアドレスに関する情報(Oracle GoldenGateのExtractパラメータ・ファイルに通常含まれている情報など)が含まれる場合も、セキュリティ・ポリシーに違反する可能性があります。

この種のイントラネット構成では、パッシブ/エイリアスExtract構成を使用できます。接続は、エイリアスExtractグループによって、信頼できるゾーン内部のターゲット・システムから開始されます。このグループは、ソース・システムの標準Extractグループに対するエイリアスとして機能し、この場合はパッシブExtractと呼ばれます。2つのシステム間で接続が確立されると、データはパッシブExtractグループによって通常どおり処理され、ネットワークを通じて転送されます。

図11-1 信頼できるネットワーク・ゾーンからの接続の開始

1. Oracle GoldenGateユーザーが信頼できるシステムで別名Extractを起動するか、AUTOSTARTまたはAUTORESTARTパラメータによって別名Extractが自動的に起動されます。

2. 信頼できるシステムのGGSCIは、信頼度の低いシステムのManagerにメッセージを送信して、関連付けられたパッシブExtractを起動します。信頼できるシステムのManagerのホスト名(またはIPアドレス)とポート番号が、信頼度の低いシステムに送信されます。

3. 信頼度の低いシステムで、ManagerがパッシブExtractを起動すると、パッシブExtractは開いているポート(ManagerのDYNAMICPORTLISTパラメータのルールに準拠)を検出し、そのポートでリスニングを行います。

4. 信頼度の低いシステムのManagerは、そのポートを信頼できるシステムのGGSCIに戻します。

5. 信頼できるシステムのGGSCIは、同じシステムのManagerにリクエストを送信し、同じシステムのCollectorプロセスを起動します。

6. ターゲットのManagerは、Collectorプロセスを起動して、そのプロセスに信頼度の低いシステムでExtractがリスニングしているポート番号を渡します。

7. 信頼できるシステムのCollectorは、信頼度の低いシステムのパッシブExtractに対する接続をオープンします。

8. データは、ネットワークを通じてパッシブExtractからターゲットのCollectorに送信され、Replicatで処理するために通常どおり証跡に書き込まれます。

11.8.1 パッシブExtractグループの構成

信頼度の低いソース・システムのパッシブExtractグループは、ネットワークを通じたデータの送信を担当するExtractグループの種類に応じて、次のいずれかになります。

- トランザクション・ログを読み取ってそのデータをターゲットに送信する単独Extractグループ。

- プライマリExtractから提供されるローカル証跡を読み取ってそのデータをターゲットに送信するデータ・ポンプExtractグループ。この場合、プライマリExtract(単なるデータ・ポンプ)に対する特別な構成要件はありません。

Extractグループをパッシブ・モードで作成するには、標準のADD EXTRACTコマンドおよびオプションを使用しますが、他のコマンド・オプションに対して任意の位置にPASSIVEキーワードを追加します。例:

ADD EXTRACT fin, TRANLOG, BEGIN NOW, PASSIVE, DESC 'passive Extract'
ADD EXTRACT fin, PASSIVE, TRANLOG, BEGIN NOW, DESC 'passive Extract'

パッシブExtractグループのパラメータを構成するには、通常の方法でパラメータ・ファイルを作成します。ただし、次の点が異なります。

- RMTHOSTパラメータは除外します(通常は、このパラメータでターゲットのManagerのホストおよびポート情報を指定します)。

- オプションのRMTHOSTOPTIONSパラメータを使用して、圧縮および暗号化のルールを指定します。RMTHOSTOPTIONSオプションの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

Extractグループの構成の詳細は、「オンライン変更同期の構成」を参照してください

11.8.2 別名Extractグループの構成

信頼できるターゲットの別名Extractグループは、データ処理アクティビティを実行しません。その唯一の目的は、信頼度の低いソースに対する接続の開始および終了です。この役割において、別名Extractグループは、パラメータ・ファイルを使用せず、処理チェックポイントも書き込みません。チェックポイント・ファイルの用途は、パッシブExtractグループが実行されているかどうかを判別することと、リモート接続に必要な情報を記録することに限定されます。

別名モードでExtractグループを作成するには、次のオプションのみを指定してADD EXTRACTコマンドを使用します。

ADD EXTRACT group
, RMTHOST {host_name | IP_address}
, MGRPORT port
[, RMTNAME name]
[, DESC 'description']

RMTHOSTの指定によって、このグループが別名Extractとして識別され、情報がチェックポイント・ファイルに書き込まれます。host_nameとIP_addressオプションでは、ソース・システムの名前またはIPアドレスを指定します。MGRPORTでは、Managerが稼働しているソース・システムのポートを指定します。

別名Extractの名前は、パッシブExtractと同じ名前にすることも、異なる名前にすることもできます。名前が異なる場合、オプションのRMTNAMEを使用して、パッシブExtractの名前を指定します。RMTNAMEが使用されない場合、Oracle GoldenGateでは、名前が同一であると仮定され、接続の確立時に使用される別名Extractのチェックポイント・ファイルにその名前が書き込まれます。

TCP/IP接続のエラー処理は、ターゲット・システムのTCPERRSファイルによって指示されます。このファイルのエラーに対するレスポンス値は、RETRYに設定することをお薦めします。デフォルトはABENDです。このファイルには、再試行の回数および各試行間の遅延を設定するオプションも含まれます。TCP/IPのエラー処理とTCPERRSファイルの詳細は、処理エラーへの対処を参照してください。

11.8.3 パッシブ・プロセスと別名プロセスの起動および停止

パッシブ/別名Extract構成でOracle GoldenGateの抽出を開始または停止するには、ターゲットのGGSCIで別名Extractグループを起動または停止する必要があります。

START EXTRACT alias_group_name

または

STOP EXTRACT alias_group_name

コマンドは、ソース・システムに送信され、パッシブExtractグループが起動または停止します。これらのコマンドをパッシブExtractグループに対して直接発行しないでください。KILL EXTRACTコマンドは、パッシブExtractグループに対して直接発行できます。

ManagerパラメータのAUTOSTARTおよびAUTORESTARTを使用して自動的にプロセスを起動または再起動する場合、ソース・システムではなくターゲット・システムで使用してください。最初に別名Extractが起動され、次にパッシブExtractに起動コマンドが送信されます。

11.8.4 抽出アクティビティの管理

抽出処理が開始されたら、ソース・システムでGGSCIからパッシブExtractグループに対してコマンドを発行することで、通常どおりその処理を管理および監視できます。INFOやVIEW REPORTなどのGGSCIの標準監視コマンドを、ソース・システムまたはターゲット・システムから発行できます。別名Extractグループに対して発行された監視コマンドは、パッシブExtractグループに転送されます。コマンドでは、別名Extractグループの名前がパッシブExtractグループの名前で置き換えられます。たとえば、INFO EXTRACTaliasは、INFO EXTRACT passiveになります。コマンドの結果は、コマンドが発行されたシステムに表示されます。

11.8.5 パッシブ/別名Extract使用時のその他の考慮事項

パッシブ/別名Extract構成を使用する場合、次のルールが適用されます。

- この構成では、Extractは1つのターゲット・システムにのみ書込みを行うことができます。

- この構成は、通常の方法で(THREADSオプションを使用してREDOスレッドの数を指定して)Extractグループを作成することで、Oracle RACインストール環境で使用できます。

- ALTER EXTRACTコマンドは、別名Extractに対して使用できません(このグループはデータ処理を実行しないため)。

- パッシブまたは別名Extractグループに対してDELETE EXTRACTコマンドを使用するには、ローカルGGSCIからコマンドを発行します。

- Extractのパラメータ・ファイルのRMTTASKで指定され、一部の初期ロード方式で使用されるリモート・タスクは、この構成ではサポートされません。リモート・タスクでは、ソース・システムから接続を開始する必要があり、ExtractとReplicat間の直接接続が使用されます。

11.9 Managerの保護

ManagerパラメータのACCESSRULEを使用して、Managerにセキュリティ・アクセス・ルールを設定できます。パッシブExtractまたはディレクタを使用している場合、リモート・ホストからのGGSCIアクセスを許可します。ACCESSRULEは、Managerプロセスおよびその制御下のプロセスへの接続アクセスを制御します。パラメータ・ファイルで複数のACCESSRULE文を指定して複数のルールを設定し、優先度を制御できます。優先度を設定するには、重要度が最も高いものから低いものへの順序でルールのリストを作成するか、PRIオプションを使用して、各ルールの優先度を明示的に設定するかのいずれかを行えます。

次のオプションの1つを指定する必要があります。

IPADDR、login_IDまたはPROGRAM

たとえば、次のアクセス・ルールにはPRIオプションを使用して明示的に優先度レベルが割り当てられています。これらのルールでは、任意のユーザーにCollectorプロセス(SERVERプログラム)へのアクセスを許可し、さらにIPアドレス122.11.12.13にGGSCIコマンドへのアクセスを許可します。他のすべてのOracle GoldenGateプログラムへのアクセスは拒否されます。

ACCESSRULE, PROG *, DENY, PRI 99
ACCESSRULE, PROG SERVER, ALLOW, PRI 1
ACCESSRULE, PROG GGSCI, IPADDR 122.11.12.13, PRI 1

もう1つの例として、次のアクセス・ルールではすべてのプログラムへのアクセス権をユーザーJOHNに付与し、パスワードを復号化するための暗号化鍵を指定します。PASSWORDで指定されたパスワードがENCKEYSルックアップ・ファイル内のいずれかに一致する場合、接続が許可されます。

ACCESSRULE, PROG *, USER JOHN, PASSWORD OCEAN1, ENCRYPTKEY lookup1

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

12 データのマッピングおよび操作

この章では、ソース表とターゲット表のデータを統合する方法について説明します。

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

- サポートの制限事項

- マッピングおよびデータ統合を制御するパラメータ

- 異なるデータベース間のマッピング

- データのマッピングおよび変換の実行場所の決定

- データ・マッピング時のグローバリゼーションに関する考慮事項

- 列のマッピング

- 行の選択とフィルタリング

- 変更前の値と変更後の値の取得

- 列の選択

- SQL操作の選択および変換

- トランザクション履歴の使用

- データのテストおよび変換

- トークンの使用

12.1 サポートの制限事項

データのマッピングおよび操作のサポートには次のような制限があります。

- Oracle GoldenGateは、ラージ・オブジェクトのフィルタリング、列マッピングまたは操作をサポートしていません。

- Oracle GoldenGateの一部の機能および動作では、データのフィルタリングおよび操作がサポートされません。該当する場合、この制限についての記載があります。

12.2 マッピングおよびデータ統合を制御するパラメータ

Oracle GoldenGateで実行されるデータの選択、マッピングおよび操作は、すべてTABLEパラメータおよびMAPパラメータのオプションを1つ以上使用して行われます。

- Extractパラメータ・ファイルでTABLEを使用します。

- Replicatパラメータ・ファイルでMAPを使用します。

TABLEとMAPは、パラメータ・ファイル内の他のパラメータに影響を受けるデータベース・オブジェクトを指定します。これらのパラメータによるオブジェクト名指定の詳細は、「Oracle GoldenGateの入力におけるオブジェクト名の指定」を参照してください。

12.3 異なるデータベース間のマッピング

異なるデータ構造を持つ表どうしのマッピングおよび変換には、ソース定義ファイルまたはターゲット定義ファイル、あるいは(一定の場合)その両方が必要です。このファイルを使用する場合は、SOURCEDEFSパラメータまたはTARGETDEFSパラメータで指定する必要があります。

自己記述型の証跡ファイルを使用している場合、これは該当しません。

ソース定義ファイルまたはターゲット定義ファイルの作成方法の詳細は、メタデータへのレプリケートされたデータの関連付けを参照してください。

12.4 データのマッピングおよび変換の実行場所の決定

計画中の構成が大量の列マッピングまたはデータ変換を伴う場合は、次のガイドラインに従って、それらの機能をどのプロセスで実行するかを判断してください。

12.4.1 WindowsシステムとUNIXシステムでのマッピングおよび変換

Oracle GoldenGateがWindowsベースのシステムとUNIXベースのシステムでのみ稼働している場合、列のマッピングおよび変換は、ソース・システム、ターゲット・システムまたは中間システムで実行できます。ソース・システムでこの処理に追加のオーバーヘッドが発生するのを防止するため、ターゲット・システムまたは中間システムで実行されるマッピングおよび変換を構成できます。

複数のソースに対して1つのターゲットがある場合、状況によってはソースでマッピングと変換を実行すると効率が向上することがあります。アプリケーションでレイアウト変更が発生するたびにターゲットにコピーする必要のある個別のソース定義ファイルをソース・データベースごとに管理するのではなく、ターゲット表から生成された1つのターゲット定義ファイルを使用できます。

使用する定義ファイルのタイプと場所の詳細は、メタデータへのレプリケートされたデータの関連付けを参照してください。

12.4.2 NonStopシステムでのマッピングおよび変換

WindowsシステムまたはUNIXシステムからNonStop Enscribeターゲットへのデータのマッピングまたは変換を行う場合、マッピングまたは変換はソースのWindowsシステムまたはUNIXシステムで実行する必要があります。NonStop用のReplicatは、3つまたは2つの部分からなるSQL表名およびデータ型を、Enscribeプラットフォームで使用される3つの部分からなるファイル名に変換できません。Extractは、証跡データをEnscribeの名前およびターゲット・データ型でフォーマットできます。

12.5 データ・マッピング時のグローバリゼーションに関する考慮事項

データベースとプラットフォームの間のデータのマッピングおよび変換を計画する際には、グローバリゼーションに関してOracle GoldenGateでサポートされている処理とサポートされていない処理を考慮してください。これらの考慮事項には、次のトピックが含まれます。

キャラクタ・セット間の変換

ロケールの維持

エスケープ・シーケンスのサポート

12.5.1 キャラクタ・セット間の変換

Oracle GoldenGateでは、ソースとターゲットのキャラクタ・セットが異なると、オブジェクト名および列データがデータベース間で正しく比較、マップ、操作されるようにするため、キャラクタ・セットの変換が行われます。サポートされるキャラクタ・セットのリストは、サポートされるキャラクタ・セットを参照してください。

異なるデータベースの間で文字が正確に表現されるためには、次の条件を満たす必要があります。

- ターゲット・データベースのキャラクタ・セットは、ソース・データベースのキャラクタ・セットのスーパーセットであるか、ソース・データベースのキャラクタ・セットと同等である必要があります。同等とは、同一であることではなく、同じ文字のセットが存在することを意味します。たとえば、Shift-JISとEUC-JPは、厳密に言うと完全に同一ではありませんが、ほとんどの場合に同じ文字が存在します。

- クライアント・アプリケーションで異なるキャラクタ・セットが使用されている場合、データベースのキャラクタ・セットがクライアント・アプリケーションのキャラクタ・セットのスーパーセットであるか、クライアント・アプリケーションのキャラクタ・セットと同等であることも必要です。

この構成では、クライアントまたはソースのキャラクタ・セットからローカル・データベースのキャラクタ・セットへの変換時に、すべての文字が表現されます。

Replicatプロセスは、1つのソース・キャラクタ・セットから1つのターゲット・キャラクタ・セットへの変換をサポートできます。

12.5.1.1 データベース・オブジェクト名

Oracle GoldenGateでは、カタログ、スキーマ、表および列の名前は、ソース・データベースおよびターゲット・データベースのキャラクタ・セット・エンコーディングに従って、ネイティブ言語で処理されます。このサポートにより、データベース階層のあらゆるレベルで、シングルバイトおよびマルチバイトの名前、記号、アクセント文字、大/小文字の区別が維持され、ロケールがあればそれも考慮されます。

12.5.1.2 列データ

Oracle GoldenGateでは、データが次のタイプの列に格納されている場合、キャラクタ・セット間での列データの変換がサポートされます。

- 文字型の列: CHAR/VARCHAR/CLOBから別のキャラクタ・セットのCHAR/VARCHAR/CLOBへの変換、およびCHAR/VARCHAR/CLOBとNCHAR/NVARCHAR/NCLOBとの間の変換。

- 文字列ベースの数値および日時データを含む列。z/OSのEBCDICデータとz/OS以外のASCIIデータの間では、これらの列の変換が実行されます。このデータのASCII版とASCII版の間、およびEBCDIC版とEBCDIC版の間では、データに互換性があるため、変換は実行されません。

注意:

Oracle GoldenGateでは、0001-01-03 00:00:00から9999-12-31 23:59:59までのタイムスタンプ・データがサポートされます。タイムスタンプがGMTからローカル時間に変換されると、これらの制限も変換後のタイムスタンプに適用されます。タイムゾーンに応じて、変換により時間が追加または引かれる場合があり、これにより、タイムスタンプがサポートされている上限を超えたり、下回ったりすることがあります。

列データのキャラクタ・セット変換は、ReplicatのMAPパラメータのCOLMAP句またはUSEDEFAULTS句のソース列とターゲット列との直接マッピングに限定されています。直接マッピングは、ストアド・プロシージャや列変換関数を使用しない、名前から名前へのマッピングです。Replicatは、キャラクタ・セット変換を実行します。Extractやデータ・ポンプでは変換は実行されません。

Extract 11.2.1より前のリリースで証跡が書き込まれた場合、文字型の列のキャラクタ・セットをReplicatのSOURCECHARSETパラメータに入力する必要があります。詳細は、『Oracle GoldenGate for Windows and UNIXリファレンス』を参照してください。

12.5.2 ロケールの維持

Oracle GoldenGateでは、大/小文字が区別されないオブジェクト名の比較時に、データベースのロケールが考慮されます。サポートされるロケールのリストは、サポートされるロケールを参照してください。

12.5.3 エスケープ・シーケンスのサポート

Oracle GoldenGateでは、パラメータ・ファイルで文字の列、リテラル・テキストまたはオブジェクト名を表すためのエスケープ・シーケンスの使用がサポートされています。エスケープ・シーケンスは、オペレーティング・システムで必要な文字(制御文字など)がサポートされていない場合に、またはパラメータ・ファイルで使用できない文字が必要になるその他の目的のために使用できます。

エスケープ・シーケンスは、パラメータ・ファイルの任意の場所で使用できますが、TABLE文またはMAP文の次の要素で特に便利です。

- オブジェクト名

- WHERE句

- Unicode列にUnicode文字を割り当てるか、列にネイティブ・エンコーディングされた文字を割り当てるCOLMAP句

- COLMAP句内のOracle GoldenGateの列変換関数

Oracle GoldenGateでは、次のタイプのエスケープ・シーケンスがサポートされます。

- \uFFFF: Unicodeエスケープ・シーケンス。サロゲート・ペアを除き、任意のUNICODEコード・ポイントを使用できます。

- \377: 8進エスケープ・シーケンス

- \xFF: 16進エスケープ・シーケンス

次のルールが適用されます。

- TABLEまたはMAPでオブジェクト名のマッピングに使用する場合、制限は何もありません。たとえば、次のTABLE指定は有効です。

TABLE schema."\u3000ABC";

- 列マッピング関数とともに使用する場合、任意のコード・ポイントを使用できますが、対象となるのはNCHAR/NVARCHAR列のみです。CHAR/VARCHAR列の場合、コード・ポイントは7ビットASCIIと同等のものに限定されます。

- ソースとターゲットのデータ型は、同一である必要があります(NCHARとNCHARなど)。

- 各エスケープ・シーケンスは、逆斜線(コード・ポイントU+005C)で始め、次に文字コード・ポイントを続けます。(逆斜線は、一般的にはバックスラッシュ記号と呼ばれます。)パラメータ文または列変換関数の入力文字列内で、実際の文字のかわりにエスケープ・シーケンスを使用します。

注意:

パラメータ・ファイルで実際のバックスラッシュを指定するには、二重のバックスラッシュを指定します。たとえば、COL1: @STRFIND (COL1, '\\' )と指定すると、バックスラッシュが検索されます。

\uFFFF Unicodeエスケープ・シーケンスを使用する手順

- \uFFFF Unicodeエスケープ・シーケンスは小文字のuで始め、次に正確に4桁の16進数を続ける必要があります。

- サポートされる範囲は次のとおりです。

- 0から9 (U+0030からU+0039)

- AからF (U+0041からU+0046)

- aからf (U+0061からU+0066)

\u20acは、ユーロ通貨記号のUnicodeエスケープ・シーケンスです。

注意:

信頼できるクロス・プラットフォーム・サポートのために、Unicodeエスケープ・シーケンスを使用してください。8進および16進のエスケープ・シーケンスは、異なるオペレーティング・システムでは標準化されていません。

\377 8進エスケープ・シーケンスを使用する手順

- 正確に3桁の8進数が含まれる必要があります。

- サポートされる範囲:

- 1桁目の範囲は0から3 (U+0030からU+0033)

- 2桁目と3桁目の範囲は0から7 (U+0030からU+0037)
\200は、Microsoft Windowsでのユーロ通貨記号の8進エスケープ・シーケンスです。

\xFF 16進エスケープ・シーケンスを使用する手順

- 小文字のxで始め、次に正確に2桁の16進数を続ける必要があります。

- サポートされる範囲:

- 0から9 (U+0030からU+0039)

- AからF (U+0041からU+0046)

- aからf (U+0061からU+0066)

\x80は、Microsoft Windows 1252 Latin1コード・ページのユーロ通貨記号を表す16進エスケープ・シーケンスです。

12.6 列のマッピング

Oracle GoldenGateでは、表レベルおよびグローバル・レベルの列マッピングが提供されます。明示的な列マッピング・ルールがない場合は、デフォルトの列マッピングも提供されます。

この項には、次のような列マッピング・ガイドラインがあります。

COLMAPによる表レベルの列マッピングの構成

COLMATCHによるグローバル列マッピングの構成

デフォルトの列マッピングの理解

列間でのデータ型のマッピング

列名での大/小文字の区別および特殊文字のサポート

12.6.1 列名での大/小文字の区別および特殊文字のサポート

Oracle GoldenGateでの列名とリテラルの指定は、デフォルトで、SQL-92ルールに従います。大/小文字を区別するために二重引用符が必要になるデータベースの場合は、Oracle GoldenGateパラメータ・ファイル、変換関数、ユーザー・イグジットおよびコマンドにおいて、大/小文字を区別する列名を二重引用符で囲む必要があります。大/小文字を区別するために引用符が必要ないその他のデータベースの場合は、大/小文字が区別される列名を、データベースに格納されているとおりに指定する必要があります。リテラルは一重引用符で囲む必要があります。詳細は、大/小文字が区別される列名とリテラルの区別を参照してください。

12.6.2 COLMAPによる表レベルの列マッピングの構成

MAPおよびTABLEパラメータのCOLMAPオプションを使用して、次の処理を実行します。

- 異なる名前を持つターゲット列に個別のソース列をマップします。

- 明示的な列マッピングが不要な場合、デフォルトの列マッピングを指定します。

- ソース列からターゲット列に対してデータを選択、マップ、変換および移動するための指示を提供します。

12.6.2.1 COLMAP句でマップされる列の指定

COLMAPの構文は次のとおりです。

COLMAP ([USEDEFAULTS, ] target_column = source_expression)

この構文でtarget_columnはターゲット列の名前、source_expressionは次のいずれかであって、これにより、ソース列を名前でマップすることで、ソース値を証跡に記録されたとおりに正確に渡したり、ターゲット列に渡す前にデータを変換したりすることが可能になります。

- ソース列の名前(ORD_DATEなど)。

- 数値定数(123など)。

- 一重引用符で囲まれた文字列定数('ABCD'など)。

- Oracle GoldenGate列変換関数を使用する式。COLMAP文内で、Oracle GoldenGate列変換関数のいずれかを使用して、マップされた列のデータを変換できます。次に例を示します。

@STREXT (COL1, 1, 3)

列マッピングに、異なるデータベース・タイプに由来する、大/小文字が区別される複数の列が関係する場合、各列を、データベースに格納されているとおりに指定してください。

- 大/小文字を区別するために二重引用符が必要になるデータベースの場合は、大/小文字が区別される列名を二重引用符で囲んで指定してください。

- 大/小文字は区別されるが二重引用符が必要ないデータベースの場合は、列名を、データベースに格納されているとおりに指定してください。

次は、Oracleデータベースのターゲット列と、大/小文字が区別されるSQLサーバー・データベースのソース列との間でのマッピングを示しています。

COLMAP ("ColA" = ColA)

Oracle GoldenGateへの名前の指定の詳細は、「Oracle GoldenGateの入力におけるオブジェクト名の指定」を参照してください。

キャラクタ・セットとロケールが異なるデータベース間でソース列とターゲット列をマップする場合のグローバリゼーションに関する考慮事項については、「データ・マッピング時のグローバリゼーションに関する考慮事項」を参照してください。

COLMAPを使用してキー列に値をマップ(主キーの更新操作が発生)しないでください。Oracle GoldenGateがターゲット行の特定に使用するWHERE句では、キー列の正しい変更前イメージが使用されません。かわりに、変更後イメージが使用されます。このため、SQLEXEC文などのキー列に基づく関数を使用している場合、エラーになります。次の例に示します。

- ソース表TCUSTMER1

- ターゲット表TCUSTMER2

- 2つの表の列レイアウト

- 列1 = Cust

- 列2 = Name

- 列3 = City

- 列4 = State

- 主キーは、Cust、Name、およびCity列で構成されています。

- MAP文のSQLEXEC問合せ:

SQLEXEC (id mytest, query 'select city from TCUSTMER1 WHERE state = 'CA'', noparams, ERROR RAISE)

- MAP文内のCOLMAP文:

COLMAP ( usedefaults, city = mytest.city )

エラーの原因になるイベントの順序を次に示します。

1. INSERT文で次のように挿入します。

INSERT into TCUSTMER1 values (Cust = '1234', Name = 'Ace', City = 'SF', State = 'CA');
Commit;

SQLEXEC問合せは正しい値を返し、ターゲット表のCityは値がSF、Stateは値がCAです。

mytest.city = 'SF'

2. UPDATE文がソースのCityをSFからLAに変更します。これはターゲットで成功しません。SQLEXEC問合せはTCUSTMER1のCity列を参照し、LAという値を返します。COLMAP句に基づき、Cityのビフォアとアフターの両バージョンともLAになります。ターゲット表のCity列にLAという値がないため、ターゲットのWHERE句を実行すると、SQLエラー1403になります。

12.6.2.2 USEDEFAULTSを使用したデフォルトの列マッピングの有効化

COLMAPのUSEDEFAULTSオプションを使用すると、ソース列と対応するターゲット列の名前が同一の場合に、自動デフォルト列マッピングを指定できます。USEDEFAULTSを使用すると、すべてのターゲット列を明示的にマップする必要がないので、時間を節約できます。

デフォルト・マッピングの場合、Oracle GoldenGateはそれらの列と、必要な場合は、データ型を、データ定義ファイルに基づいて変換します(「COLMAPでのデータ定義ファイル必要性の判定」を参照)。明示的なマッピング文でマップされている列にはデフォルト・マッピングを指定しないでください。

次の列マッピングの例では、 ソース表ACCTBLとターゲット表ACCTTABのデフォルト列マッピングと明示的な列マッピングの使用について示します。両方の表の大半の列は同じで、次の点が異なります。

- ソース表にはCUST_NAME列がありますが、ターゲット表にはNAME列があります。

- ソース表の10桁のPHONE_NO列は、ターゲット表の個別のAREA_CODE列、PHONE_PREFIX列およびPHONE_NUMBER列に対応します。

- ソース表の個別のYY列、MM列およびDD列は、ターゲット表の単一のTRANSACTION_DATE列に対応します。

これらの相違点に対処するため、USEDEFAULTSを使用して同じ列を自動的にマップし、異なる列には明示マッピングおよび変換関数を使用します。

表12-1 サンプルの列マッピング

パラメータ文

説明

MAP SALES.ACCTBL,
TARGET SALES.ACCTTAB,

ソース表ACCTBLをターゲット表ACCTTABにマップします。

COLMAP(

COLMAP文を開始します。

USEDEFAULTS,

ターゲット列の名前が同一の場合、ソース列をそのままマップします。

NAME = CUST_NAME,

ソース列CUST_NAMEをターゲット列NAMEにマップします。

TRANSACTION_DATE =
@DATE ('YYYY-MM-DD', 'YY',
YEAR, 'MM', MONTH, 'DD', DAY),

@DATE列変換関数を使用して、ソースの日付列からターゲット列TRANSACTION_DATEにトランザクション日付を変換します。

AREA_CODE =
@STREXT (PHONE_NO, 1, 3),
PHONE_PREFIX =
@STREXT (PHONE_NO, 4, 6),
PHONE_NUMBER =
@STREXT (PHONE_NO, 7, 10))
;

@STREXT列変換関数を使用して、ソース列PHONE_NOを別々のターゲット列AREA_CODE、PHONE_PREFIXおよびPHONE_NUMBERに変換します。

デフォルトの列マッピングでOracle GoldenGateが従うルールの詳細は、「デフォルトの列マッピングの理解」を参照してください。

12.6.2.3 COLMAPでのデータ定義ファイル必要性の判定

COLMAPを使用する場合、状況によってはデータ定義ファイルを作成する必要があります。この必要性を判断するには、ソースおよびターゲットの列構造がOracle GoldenGateの定義に従って同一であるかどうかを検討する必要があります。

ソースとターゲットの構造が同一であるためには、次の要件を満たす必要があります。

- データベース・タイプが同じであること(すべてOracleであるなど)。

- キャラクタ・セットおよびロケールが同じであること。

- 同じ数の列が含まれていること。

- 列名が同一であること(該当する場合は大/小文字、空白、引用符も含む)。

- データ型が同一であること。

- 列の長さが同一であること。

- 文字の列の列長さセマンティクス(バイトか文字か)が同じであること。

- すべての列が同じ順序で定義されていること。

構造的に同一ではないソース表およびターゲット表でCOLMAPを使用する場合、次の要件を満たす必要があります。

- Oracle GoldenGate構成および使用中のデータベースに応じて、ソース表またはターゲット表、あるいはその両方のデータ定義を生成します。

- 使用する予定のシステムに定義ファイルを転送します。

- SOURCEDEFSパラメータを使用してターゲット・システム上のReplicatの定義ファイルを指定するか、TARGETDEFSパラメータを使用してソース・システムまたは中間システム上のExtractまたはデータ・ポンプの定義ファイルを指定します。

構造的に同一のソース表およびターゲット表でCOLMAPを使用し、変換などの他の関数でのみCOLMAPを使用する場合、ソース定義ファイルは必要ありません。定義ファイルを使用しない場合、かわりにASSUMETARGETDEFSパラメータを使用する必要があります(ただし、自己記述型の証跡ファイルを使用している場合は除きます)。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

定義ファイルの詳細は、メタデータへのレプリケートされたデータの関連付けを参照してください。

12.6.3 COLMATCHによるグローバル列マッピングの構成

COLMATCHパラメータでは、列マッピングのグローバル・ルールを作成します。COLMATCHでは、同じデータセットに対して異なる列名を持つ類似した構造の表どうしをマップできます。このタイプの列をマップする場合、個別のTABLE文またはMAP文のCOLMAP句で表レベルのマッピングを使用するより、COLMATCHの方が簡単です。

大/小文字の区別は次のようにサポートされます。

- Sybase、MySQL、SQL Server、PostgreSQLおよびTeradataの場合、データベースの大/小文字が区別されるときは、COLMATCHでは、名前が引用符で囲まれて指定されているかどうかにかかわらず、大/小文字と名前が完全に一致するものが検索されます。

- 同じデータベース内で名前の大/小文字を区別することも区別しないことも可能なOracle、DB2およびSQL/MXで、大/小文字を区別するために二重引用符が必要になる場合、COLMATCHでは、名前が引用符で囲まれているとき、大/小文字と名前がデータベースと完全に一致することが求められます。

大/小文字の区別のサポートの詳細は、「Oracle GoldenGateの入力におけるオブジェクト名の指定」を参照してください。

構文

COLMATCH
{NAMES target_column = source_column |
PREFIX prefix |
SUFFIX suffix |
RESET}

表12-2 COLMATCHのオプション

引数

説明

NAMES target_column = source_column

列名に基づいてマップします。

列名で大/小文字が区別され、データベースで大/小文字が区別されるために引用符が必要な場合、列名を二重引用符で囲みます。これらのデータベース・タイプでは、Oracle GoldenGateは、引用符で囲まれていない列名を大/小文字の区別がされないものとして扱います。

大/小文字の区別はサポートしているが引用符が必要ないデータベースの場合は、列名を、データベースに格納されているとおりに指定してください。

COLMATCHがデータベース・タイプが異なる列に適用される場合、それぞれの名前で大/小文字の区別が適切に表現されていることを確認してください。たとえば、次の例では、Oracleデータベース内の大/小文字が区別されるターゲット列名"aBc"と、大/小文字が区別されるSQL Serverデータベース内の、大/小文字が区別されるソース列名aBcを指定しています。

COLMATCH NAMES "aBc" = aBc

PREFIX prefix | SUFFIX suffix

指定した名前接頭辞または名前接尾辞を無視します。

データベースで大/小文字が区別されるために引用符が必要な場合、接頭辞または接尾辞を二重引用符で囲みます。たとえば、"P_"です。それらのデータベース・タイプでは、引用符で囲まれていない接頭辞または接尾辞を大/小文字の区別がされないものとして扱います。

大/小文字の区別はサポートしているが引用符が必要ないデータベースの場合は、接頭辞または接尾辞を、データベースに格納されているとおりに指定してください。たとえば、P_は、大文字の接頭辞Pを指定しています。

次の例では、大/小文字が区別されない接頭辞を無視するよう指定しています。ターゲット列名P_ABCはソース列名ABCにマップされ、ターゲット列名P_abcはソース列名abcにマップされます。

COLMATCH PREFIX p_

次の例では、大/小文字が区別されるsuffixを無視するよう指定しています。ターゲット列名ABC_kはソース列名ABCにマップされ、ターゲット列名"abc_k"はソース列名"abc"にマップされます。

SUFFIX "_k"

RESET

前に定義したCOLMATCHルールを、後続のTABLE文またはMAP文で無効化します。

次に、COLMATCHを使用する場合の例を示します。ソース表とターゲット表は、表名と列名が多少異なる以外は同一です。データベースが大/小文字を区別しません。

表12-3 COLMATCHのサンプル表: ソース・データベース

ACCT表

ORD表

CUST_CODE
CUST_NAME
CUST_ADDR
PHONE
S_REP
S_REPCODE

CUST_CODE
CUST_NAME
ORDER_ID
ORDER_AMT
S_REP
S_REPCODE

表12-4COLMATCHのサンプル表: ターゲット・データベース

ACCOUNT表

ORDER表

CUSTOMER_CODE
CUSTOMER_NAME
CUSTOMER_ADDRESS
PHONE
REP
REPCODE

CUSTOMER_CODE
CUSTOMER_NAME
ORDER_ID
ORDER_AMT
REP
REPCODE

この例でソース列をターゲット列にマップし、同時に他の表で後続のマップを処理するには、次の構文を使用します。

COLMATCH NAMES CUSTOMER_CODE = CUST_CODE
COLMATCH NAMES CUSTOMER_NAME = CUST_NAME
COLMATCH NAMES CUSTOMER_ADDRESS = CUST_ADDR
COLMATCH PREFIX S_
MAP SALES.ACCT, TARGET SALES.ACCOUNT, COLMAP (USEDEFAULTS);
MAP SALE.ORD, TARGET SALES.ORDER, COLMAP (USEDEFAULTS);
COLMATCH RESET
MAP SALES.REG, TARGET SALE.REG;
MAP SALES.PRICE, TARGET SALES.PRICE;

この例のルールに基づいて、次の処理が発生します。

- データは、ソースのACCT表およびORD表のCUST_CODE列から、ターゲットのACCOUNT表およびORDER表のCUSTOMER_CODE列にマップされます。

- S_接頭辞は無視されます。

- PHONE列やORDER_AMT列などの同じ名前を持つ列は、明示的なルールを必要とすることなく、USEDEFAULTSによって自動的にマップされます。詳細は、「デフォルトの列マッピングの理解」を参照してください。

- 前述のグローバル列マッピングは、REG表およびPRICE表では無効化されます。これらの表のソース列とターゲット列は、名前がすべて同一であるため、自動的にマップされます。

12.6.4 デフォルトの列マッピングの理解

COLMATCHまたはCOLMAPを使用した明示的な列マッピングが存在しない場合、Oracle GoldenGateでは、デフォルトで次のルールに従ってソース列とターゲット列がマップされます。

- ソース列の名前および大/小文字がターゲット列のものと正確に一致することが検出された場合、2つの列はマップされます。

- 大/小文字が一致しないことが検出された場合、名前のフォールバック・マッピングが使用されます。フォールバック・マッピングでは、大/小文字を区別せずにターゲット表のマッピングを実行して、一致する名前を探します。大文字の名前を使用して、厳密でない列名マッピングが適用されます。この動作は、GLOBALSのパラメータNAMEMATCHIGNORECASEによって制御します。名前のフォールバック照合は、NAMEMATCHEXACTパラメータを使用して無効にすることも、NAMEMATCHNOWARNINGパラメータを使用して、有効にしたまま警告メッセージを表示することもできます。

- どのソース列にも対応していないターゲット列には、データベースによって指定されたデフォルト値が割り当てられます。

デフォルトのマッピングを実行できない場合、ターゲット列は、デフォルトで表12-5に示されているいずれかの値になります。

表12-5 ターゲット列のデフォルト値

列型

値

数値

0(ゼロ)

文字またはVARCHAR

空白

日付または日時

現在の日時

NULL値を使用できる列

NULL

12.6.5 列間でのデータ型のマッピング

次の例では、Oracle GoldenGateによるデータ型のマップ方法について説明します。

12.6.5.1 数値の列

数値の列は、ターゲット列の型およびスケールと一致するように変換されます。ターゲット列のスケールがソースのスケールより小さい場合、数値の右側が切り捨てられます。ターゲット列のスケールがソースのスケールより大きい場合、数値の右側に0(ゼロ)が埋め込まれます。

REPLACEBADNUMパラメータを使用することで、数字列をマップするときに検出される無効な数字データの代替値を指定できます。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

12.6.5.2 文字型の列

文字型の列では、VARCHARなどの文字ベースのデータ型、文字列形式の数値、文字列形式の日時、および文字列リテラルを使用できます。ターゲット列のスケールがソースのスケールより小さい場合、列の右側が切り捨てられます。ターゲット列のスケールがソースのスケールより大きい場合、列の右側に空白が埋め込まれます。

リテラルは一重引用符で囲む必要があります。

REPLACEBADCHARパラメータを使用すると、文字の列をマッピングするときにソースまたはターゲットのキャラクタ・セットに対して有効なコードポイントが存在しない場合、Oracle GoldenGateプロセスのレスポンスを制御できます。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

12.6.5.3 日時の列

日時(DATE、TIMEおよびTIMESTAMP)の列では、日時および文字の列に加え、文字列リテラルを使用できます。リテラルは一重引用符で囲む必要があります。文字の列を日時の列にマップする場合、その列がOracle GoldenGateの外部SQL書式であるYYYY-MM-DD HH:MI:SS.FFFFFFに準拠していることを確認します。

Oracle GoldenGateでは、0001-01-03 00:00:00から9999-12-31 23:59:59までのタイムスタンプ・データがサポートされます。タイムスタンプがGMTからローカル時間に変換されると、これらの制限も変換後のタイムスタンプに適用されます。タイムゾーンに応じて、変換により時間が追加または引かれる場合があり、これにより、タイムスタンプがサポートされている上限を超えたり、下回ったりすることがあります。

必要な精度は、データ型およびターゲット・プラットフォームに応じて異なります。ターゲット列のスケールがソースのスケールより小さい場合、データの右側が切り捨てられます。ターゲット列のスケールがソースのスケールより大きい場合、列の右側が現在の日時の値で拡張されます。

12.7 行の選択とフィルタリング

抽出またはレプリケートする行をフィルタで除外または選択するには、TABLEおよびMAPパラメータのFILTER句およびWHERE句を使用します。

WHERE句では基本的なWHERE演算子を使用できますが、FILTER句では、Oracle GoldenGate列変換関数をすべて使用できるため、WHERE句より多くの機能が提供されます。

12.7.1 FILTER句を使用した行の選択

FILTER句を使用して、基本演算子または1つ以上のOracle GoldenGate列変換関数により、数値に基づいて行を選択します。

注意:

文字列に基づいて列をフィルタするには、Oracle GoldenGate文字列関数のいずれかを使用するか、WHERE句を使用します。

TABLE文でのFILTERの構文は次のとおりです。

TABLE source_table,
, FILTER (
[, ON INSERT | ON UPDATE| ON DELETE]
[, IGNORE INSERT | IGNORE UPDATE | IGNORE DELETE]
, filter_clause);

MAP文でのFILTERの構文は次のとおりで、エラー処理オプションがあります。

MAP source_table, TARGET target_table,
, FILTER (
[, ON INSERT | ON UPDATE| ON DELETE]
[, IGNORE INSERT | IGNORE UPDATE | IGNORE DELETE]
[, RAISEERROR error_number]
, filter_clause);

FILTER句の有効な要素は、次のとおりです。

- Oracle GoldenGate列変換関数。これらの関数は、Oracle GoldenGateに組み込まれており、テストの実行、データの操作、値の取得などを行うことができます。Oracle GoldenGate変換関数の詳細は、「データのテストおよび変換」を参照してください。

- 数字

- 数字を含む列

- 数字を返すファンクション

- 算術演算子:

- + (加算)

- - (減算)

- * (乗算)

- / (除算)

- \ (余り)

- 比較演算子:

- > (より大きい)

- >= (以上)

- < (より少ない)

- <= (以下)

- = (等しい)

- <> (等しくない)

- 比較から導出した結果はゼロ(FALSEを示す)またはゼロ以外(TRUEを示す)になります。

- カッコ(式の結果をグループ化)

- 結合演算子: AND、OR

次のFILTERオプションを使用して、フィルタ句の影響を受けるSQL操作を指定します。これらのオプションは、任意に結合できます。

ON INSERT | ON UPDATE | ON DELETE  IGNORE INSERT | IGNORE UPDATE | IGNORE DELETE

MAPパラメータのFILTERのRAISEERRORオプションを使用して、フィルタに失敗したときのユーザー定義のエラーを生成します。このオプションは、失敗に応じてイベントを起動する必要がある場合に役立ちます。

@RANGE関数を使用して、個別のTABLE文またはMAP文の複数のFILTER句間で処理ワークロードを分割できます。たとえば、次の例では、acctソース表のID列に基づいて、2つの範囲(2つのReplicatプロセス間または調整Replicatの2つのスレッド)にレプリケーション・ワークロードを分割します。

表12-6 複数のFILTER文の使用

パラメータ・ファイル

説明

REPERROR (9999, EXCEPTION)

指定したエラーに対して例外を起動します。

MAP OWNER.SRCTAB,
TARGET OWNER.TARGTAB,

MAP文を開始します。

SQLEXEC (ID CHECK, ON UPDATE,
QUERY ' SELECT COUNT FROM TARGTAB '
'WHERE PKCOL = :P1 ',
PARAMS (P1 = PKCOL)),

問合せを実行し、更新が発生するたびにCOUNT列の現在の値を取得します。

FILTER (BALANCE > 15000),

FILTER句を使用して、残高が15000を超える行を選択します。

FILTER (ON UPDATE, @BEFORE (COUNT) = CHECK.COUNT)

別のFILTER句を使用して、更新前のCOUNTソース列の値がターゲットの更新適用前のターゲット列の値と一致することを保証します。

;

セミコロンでMAP文を終了します。

MAP OWNER.SRCTAB,
TARGET OWNER.TARGEXC,
EXCEPTIONSONLY,
COLMAP (USEDEFAULTS,
ERRTYPE = 'UPDATE FILTER FAILED');

例外MAP文を指定します。エラー9999のREPERROR句によって、TARGEXCに対する例外マップが実行されます。

例12-1 @COMPUTE関数のコール

次の例では、@COMPUTE関数をコールして、価格と数量の積が10,000を超えるレコードを抽出します。

MAP SALES.TCUSTORD, TARGET SALES.TORD,
FILTER (@COMPUTE (PRODUCT_PRICE * PRODUCT_AMOUNT) > 10000);

例12-2 @STREQ関数のコール

次の例では、@STREQ関数を使用して、文字列の値が'JOE'であるレコードを抽出します。

TABLE ACCT.TCUSTORD, FILTER (@STREQ ("Name", 'joe') > 0);

例12-3 レコードの選択

次の例では、AMOUNT列が50を超えているレコードを選択し、UPDATEおよびDELETE操作時にフィルタを実行します。

TABLE ACT.TCUSTORD, FILTER (ON UPDATE, ON DELETE, AMOUNT > 50);

例12-4 @RANGE関数の使用

(Replicatグループ1のパラメータ・ファイル)

MAP sales.acct, TARGET sales.acct, FILTER (@RANGE (1, 2, ID));

(Replicatグループ2のパラメータ・ファイル)

MAP sales.acct, TARGET sales.acct, FILTER (@RANGE (2, 2, ID));

Replicatのパラメータ・ファイルの一部を示した表12-6に示すように、1つのMAP文またはTABLE文内に複数のFILTER句を結合できます。Oracle GoldenGateでは、フィルタはいずれか1つが失敗するか、すべてが成功するまでリスト順に実行されます。1つのフィルタが失敗すると、フィルタ全体が失敗します。

12.7.2 WHERE句を使用した行の選択

WHERE句で表12-7の任意の要素を使用し、条件文に基づいて行の選択または除外(あるいはその両方)を行います。各WHERE句は、カッコで囲む必要があります。リテラルは一重引用符で囲む必要があります。

表12-7 許可されているWHERE演算子

要素

例

列名

PRODUCT_AMT

数値

-123, 5500.123

リテラル文字列

'AUTO', 'Ca'

組込みの列テスト

@NULL、@PRESENT、@ABSENT (行の列がNULL、存在または欠落)。これらのテストは、Oracle GoldenGateに組み込まれています。「FILTERおよびWHEREを使用して行を選択する場合の考慮事項」を参照してください。

比較演算子

=, <>, >, <, >=, <=

結合演算子

AND, OR

グループ化用カッコ

複数の要素の論理グループ化用に開きカッコと閉じカッコ( )を使用します。

Oracle GoldenGateでは、マルチバイト・キャラクタ・セットまたはローカル・オペレーティング・システムのキャラクタ・セットと互換性のないキャラクタ・セットを含む列に対して、FILTERをサポートしていません。

算術演算子および浮動小数点データ型は、WHEREではサポートされません。より複雑な選択条件を使用するには、FILTER句を使用するか、ユーザー・イグジット・ルーチンを使用します。詳細は、「ユーザー・イグジットを使用したOracle GoldenGate機能の拡張」を参照してください。

WHEREの構文は、TABLE文でもMAP文でも同じです。

TABLE table, WHERE (clause);

MAP source_table, TARGET target_table, WHERE (clause);

12.7.3 FILTERおよびWHEREを使用して行を選択する場合の考慮事項

適切な選択句を作成するために、次の推奨事項が役立ちます。

注意:

この項の例は、大/小文字が区別されないデータベースを想定しています。

12.7.3.1 フィルタでのデータ使用可能性の確保

データベースで、変更された列の値のみをトランザクション・ログに記録している場合、変更されていない列のいずれかが選択基準によって参照されると、エラーが発生する可能性があります。Oracle GoldenGateは、このような行操作を無視し、それらを破棄ファイルに出力して警告を発行します。

欠落列エラーを回避するには、次のように選択条件を作成します。

- 可能であれば、選択基準として主キー列のみを使用します。

- それらの列に対するサプリメンタル・ロギングを有効にして、必要な列値を使用できるようにします。あるいは、TABLEパラメータのFETCHCOLSオプションまたはFETCHCOLSEXCEPTオプションを使用することもできます。これらのオプションは、SQL/MX以外のすべてのサポートされているデータベースに対して有効です。値がログに存在しない場合に、データベースに問い合せて値をフェッチします。FILTER句またはWHERE句が実行される前に値を取得するため、TABLE文のFETCHBEFOREFILTERオプションをFILTER句またはWHERE句の前に指定します。次に例を示します。

TABLE DEMO.PEOPLE, FETCHBEFOREFILTER, FETCHCOLS (age), FILTER (age > 50);

- 最初に列が存在するかどうかをテストし、次に列の値をテストします。列が存在するかどうかをテストするには、次の構文を使用します。

column_name {= | <>} {@PRESENT | @ABSENT}

次の例では、amount列が10,000を超えている場合にすべてのレコードが戻されます。amountが存在しない場合、レコードは破棄されません。

WHERE (amount = @PRESENT AND amount > 10000)

12.7.3.2 列値の比較

比較で使用される要素が確実に一致するように、該当する列タイプを比較します。

- 文字の列とリテラル文字列。

- 数値の列と数値(符号と小数点を含む)。

- 日時の列とリテラル文字列(アプリケーションによって取得される列の書式を使用)。

12.7.3.3 NULL値のテスト

列がNULL値であるかどうかを評価するには、次の構文を使用します。

column {= | <>} @NULL

次の例では、列がNULLの場合にTRUEが戻され、他のすべての場合(列がレコードから欠落している場合を含む)にFALSEが戻されます。

WHERE (amount = @NULL)

次の例では、列がレコードに存在し、NULLではない場合にのみTRUEが戻されます。

WHERE (amount = @PRESENT AND amount <> @NULL)

12.8 変更前の値と変更後の値の取得

更新操作では、ソース列の変更前の値(更新発生前の値)を取得すると役立つことがあります。これらの値は証跡に格納されており、フィルタおよび列マッピングで使用できます。たとえば、次のことが可能です。

- 例外MAP文における列マッピング指定の一部として、行の変更前イメージを取得し、競合解決ルーチンのテストまたはトラブルシューティング用に、それらの値を例外表にマップします。

- デルタ計算を実行します。たとえば、表にBalance列が含まれる場合、新しい残高から元の残高を差し引いて特定のトランザクションの正味の結果を計算できます。次に例を示します。

MAP "owner"."src", TARGET "owner"."targ",
COLMAP (PK1 = PK1, delta = balance – @BEFORE (balance));

注意:

前の例は、Oracleなどの大/小文字が区別されるデータベースを示しています。表名は、大/小文字の区別を表すために引用符で囲まれています。

変更前の値を参照する手順

1. 次のように、@BEFORE列変換関数と、変更前の値を必要とする列の名前を使用します。

@BEFORE (column_name)

2. GETUPDATEBEFORESパラメータをExtractのパラメータ・ファイルで使用して、トランザクション・レコードから変更前イメージを取得するか、Replicatのパラメータ・ファイルで使用して、列マッピングまたはフィルタで変更前イメージを使用します。競合の検出および解決(CDR)機能を使用する場合は、TABLEのGETBEFORECOLSオプションを使用できます。これらのパラメータを使用するには、すべての列がトランザクション・ログに存在している必要があります。データベースで、変更された列の値のみを記録している場合、@BEFORE関数を使用すると、列の欠落状態が発生し、列がレコードに存在しない場合と同じように列マップが実行されます。列値の使用可能性を確保するには、「フィルタでのデータ使用可能性の確保」を参照してください。
Oracle GoldenGateには、フィルタリング、変換関数または他の目的で必要な場合に変換後の値を取得する@AFTER関数も用意されています。@BEFOREと@AFTERの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

12.9 列の選択

Oracle GoldenGateによって抽出するソース表の列を制御するには、TABLEパラメータのCOLSオプションおよびCOLSEXCEPTオプションを使用します。COLSでは抽出する列を選択し、COLSEXCEPTでは、COLSEXCEPTで指定した列以外のすべての列を選択します。

抽出する列を制限すると、ターゲット表にソース表と同じ列が含まれない場合や、列に機密情報(個人識別番号その他の固有のビジネス情報など)が含まれる場合に役立ちます。

12.10 SQL操作の選択および変換

デフォルトでは、Oracle GoldenGateによってINSERT、UPDATEおよびDELETE操作が取得および適用されます。ExtractまたはReplicatのパラメータ・ファイルで次のパラメータを使用して、処理する操作の種類(挿入のみ、または挿入と更新のみなど)を制御できます。

GETINSERTS | IGNOREINSERTS

GETUPDATES | IGNOREUPDATES

GETDELETES | IGNOREDELETES

Replicatパラメータ・ファイルで次のパラメータを使用すると、あるタイプのSQL操作を別のタイプに変換できます。

- INSERTUPDATESを使用して、ソースの更新操作をターゲット表への挿入操作に変換します。これは、ターゲット表にトランザクション履歴を保持する場合に便利です。トランザクション・ログ・レコードには、変更された値だけでなく、表の列値もすべて含まれている必要があります。一部のデータベースでは、トランザクション・ログに行の値がすべて記録されず、変更された値のみが記録されます。

- INSERTDELETESを使用して、ソースのすべての削除操作をターゲット表への挿入操作に変換します。これは、ソース・データベースに存在していたすべてのレコードの履歴を保持する場合に便利です。

- UPDATEDELETESを使用して、ソースの削除操作をターゲットの更新操作に変換します。

12.11 トランザクション履歴の使用

Oracle GoldenGateでは、ターゲット・レコードに対する変更の履歴を保持して、各変更の原因となった操作に関する情報をマップできます。この履歴は、各レコードの最新バージョンのみを含むのではなく、表に対して実行されたすべての操作の個別レコードを含むトランザクションベースのレポート・システムを作成する場合に役立ちます。

たとえば、CUSTOMERという名前のターゲット表に対して行われた次の一連の操作では、ID Daveの履歴は残りません。最後の操作でレコードを削除するため、Daveの口座の履歴や最後の残高を知ることはできません。

表12-8 CUSTOMER表の操作履歴

順序

操作

ID

残高

1

Insert

Dave

1000

2

Update

Dave

900

3

Update

Dave

1250

4

Delete

Dave

1250

一連のレコードとしてこの履歴を保持すると、多くの場面で役立ちます。たとえば、トランザクションの正味の効果を生成できます。

トランザクション・レポートを実装する手順

1. 変更前の値を取得するようにExtractを準備するため、Extractのパラメータ・ファイルでGETUPDATEBEFORESパラメータを使用します。変更前の値(または変更前イメージ)は、更新が実行される前に列に存在する値です。変更前イメージによって、Oracle GoldenGateでトランザクション・レコードを作成できます。

2. 挿入としてすべての操作を適用するようにReplicatを準備するため、Replicatのパラメータ・ファイルでINSERTALLRECORDSパラメータを使用します。表に対する各操作は、その表内の新規レコードになります。

3. トランザクション履歴をマップするため、@GETENV列変換関数のGGHEADERオプションの戻り値を使用します。TABLEパラメータまたはMAPパラメータのCOLMAP文に、ソース式として変換関数を含めます。

表12-8に示されている一連のサンプル・トランザクションを使用して、データベースの最新状態ではなく、よりトランザクション指向の強い顧客ビューを生成するために、次のパラメータ構成を作成できます。

プロセス

パラメータ文

Extract

GETUPDATEBEFORES
TABLE ACCOUNT.CUSTOMER;

Replicat

INSERTALLRECORDS
MAP SALES.CUSTOMER, TARGET SALES.CUSTHIST,
COLMAP (TS = @GETENV ('GGHEADER', 'COMMITTIMESTAMP'),
BEFORE_AFTER = @GETENV ('GGHEADER', 'BEFOREAFTERINDICATOR'),
OP_TYPE = @GETENV ('GGHEADER', 'OPTYPE'),
ID = ID,
BALANCE = BALANCE);

注意:

この例は、Oracle GoldenGateプロセスの完全なパラメータ・ファイルを表していません。これらの例が、大/小文字が区別されないデータベースを表していることにも注意してください。

この構成によって、各トランザクションの正味合計と、トランザクションの時刻および顧客IDを戻す次のような問合せが可能になります。

SELECT AFTER.ID, AFTER.TS, AFTER.BALANCE - BEFORE.BALANCE
FROM CUSTHIST AFTER, CUSTHIST BEFORE
WHERE AFTER.ID = BEFORE.ID AND AFTER.TS = BEFORE.TS AND
AFTER.BEFORE_AFTER = 'A' AND BEFORE.BEFORE_AFTER = 'B';

12.12 データのテストおよび変換

データのテストおよび変換は、ExtractまたはReplicatによって実行できます。これらの機能は、Oracle GoldenGateの組込みの列変換関数をTABLE文またはMAP文のCOLMAP句内で使用することで実装します。これらの変換関数では、次の処理を実行できます。

- 日付の変換。

- 列値の存在確認のテスト。

- 算術演算の実行。

- 数値および文字列の操作。

- NULL値、無効なデータおよび欠落データの処理。

- テストの実行。

この章では、データ操作に関連するいくつかのOracle GoldenGate関数の概要について説明します。詳細なリファレンスは、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

Oracle GoldenGate関数で提供される機能の範囲外のロジックを使用する必要がある場合は、Oracle GoldenGateユーザー・イグジットを実装して独自の関数をコールできます。ユーザー・イグジットの詳細は、「ユーザー・イグジットを使用したOracle GoldenGate機能の拡張」を参照してください。

Oracle GoldenGate変換関数の一般的な構文は次のとおりです。

構文

@function (argument)

表12-9 変換関数の構文

構文の要素

説明

@function

Oracle GoldenGate関数の名前。関数名には、接頭辞@が付きます(@COMPUTEや@DATEなど)。関数名と入力引数の前にある開き丸カッコの間の空白は、オプションです。

argument

関数の引数。

表12-10 関数の引数

引数の要素

例

数値定数

123

一重引用符で囲まれた文字列リテラル

'ABCD'

ソース列の名前

PHONE_NO or phone_no, or "Phone_No" or Phone_no

データベースが大/小文字の区別をしないか、大/小文字の区別をするか、大/小文字の区別をする場合に引用符が必要か、大/小文字の区別をする場合に引用符を必要としないかにより異なります。

算術式

COL2 * 100

比較式

((COL3 > 100) AND (COL4 > 0))

他のOracle GoldenGate関数

AMOUNT = @IF (@COLTEST (AMT, MISSING, INVALID), 0, AMT)

12.12.1 関数での列名およびリテラルの処理

デフォルトでは、列変換関数内のリテラル文字列は一重引用符で囲む必要があります。データベースによっては大/小文字を区別する列名を二重引用符で囲む必要があります。それ以外の場合は、データベースに格納されているとおりの大/小文字で入力します。

12.12.2 適切な関数の使用

操作対象または評価対象の列のタイプに適した関数を使用してください。たとえば、数値関数は数値を比較する場合にのみ使用できます。文字列値を比較するには、Oracle GoldenGate文字比較関数のいずれかを使用します。LOB列は、変換関数では使用できません。

次の文は、数値関数の@IFを使用して文字列値を比較しているため、失敗します。

@IF (SR_AREA = 'Help Desk', 'TRUE', 'FALSE')

次の文は、数値を比較しているため、成功します。

@IF (SR_AREA = 20, 'TRUE', 'FALSE')

詳細は、「数値および文字列の操作」を参照してください。

注意:

引数解析のエラーは、レコードが処理されるまで検出されないことがあります。プロセスを起動する前に構文を確認してください。

12.12.3 日付の変換

@DATE、@DATEDIFおよび@DATENOWの各関数を使用して、日時の取得、日時の計算および日時の変換を行います。

次の例では、注文が処理された時間を計算します。

例12-5 時間の計算

ORDER_FILLED = @DATE (
'YYYY-MM-DD HH:MI:SS',
'JTS',
@DATE ('JTS',
'YYMMDDHHMISS',
ORDER_TAKEN_TIME) +
ORDER_MINUTES * 60 * 1000000)

12.12.4 算術演算の実行

算術式の結果を戻すには、@COMPUTE関数を使用します。関数から返される値は、文字列形式です。算術式では、次の要素を組み合せることができます。

- 数字

- 数字を含む列名

- 数字を返すファンクション

- 算術演算子:

- + (加算)

- - (減算)

- * (乗算)

- / (除算)

- \ (余り)

- 比較演算子:

- > (より大きい)

- >= (以上)

- < (より少ない)

- <= (以下)

- = (等しい)

- <> (等しくない)

比較から導出した結果はゼロ(FALSEを示す)またはゼロ以外(TRUEを示す)になります。

- カッコ(式の結果をグループ化)

- 結合演算子AND、OR。Oracle GoldenGateは、結合式の必要部分のみを評価します。文がFALSEになると、式の残りの部分は無視されます。この動作は、紛失またはNULLの可能性があるフィールドを評価するときに役立ちます。たとえば、COL1の値が25で、COL2の値が10の場合は、次のようになります。

@COMPUTE ( (COL1 > 0) AND (COL2 < 3) ) returns 0.
@COMPUTE ( (COL1 < 0) AND (COL2 < 3) ) returns 0. COL2 < 3 is never evaluated.
@COMPUTE ((COL1 + COL2)/5) returns 7.

12.12.4.1 @COMPUTEの省略

@COMPUTEキーワードは、式を関数の引数として渡す場合には必要ありません。

@STRNUM ((AMOUNT1 + AMOUNT2), LEFT)

次の式は、前述の式と同じ結果を戻します。

@STRNUM ((@COMPUTE (AMOUNT1 + AMOUNT2), LEFT)

12.12.5 数値および文字列の操作

数値および文字列を変換するため、Oracle GoldenGateでは次の関数が提供されています。

表12-11 数値および文字のための変換関数

目的

変換関数

バイナリ文字列または文字列の数値への変換

@NUMBIN

@NUMSTR

数値の文字列への変換

@STRNUM

文字列の比較

@STRCMP

@STRNCMP

文字列の連結

@STRCAT

@STRNCAT

文字列からの抽出

@STREXT

@STRFIND

文字列の長さの返却

@STRLEN

ある文字列と別の文字列の置換

@STRSUB

文字列の大文字への変換

@STRUP

先頭または末尾(あるいはその両方)の空白の切捨て

@STRLTRIM

@STRRTRIM

@STRTRIM

12.12.6 NULL値、無効なデータおよび欠落データの処理

列データが欠落しているか、無効であるか、またはNULLである場合、Oracle GoldenGate変換関数では、それぞれに対応する値が戻されます。

BALANCEは1000でも、AMOUNTがNULLの場合、次の式ではNULLが戻されます。

NEW_BALANCE = @COMPUTE (BALANCE + AMOUNT)

これらの例外条件によって、計算全体が無効になります。変換を確実に成功させるには、@COLSTAT、@COLTESTおよび@IFの各関数を使用して、例外条件をテスト(および上書き)してください。

12.12.6.1 @COLSTATの使用

@COLSTATファンクションでは、列が紛失、NULL、または無効であることのインジケータをExtractまたはReplicatに返します。このインジケータは、別の変換関数を使用する大規模な操作式の一部として使用できます。

次の例では、ターゲット列のITEMにNULLを戻します。

ITEM = @COLSTAT (NULL)

次の@IF演算は、@COLSTATを使用して、PRICEおよびQUANTITYがゼロより小さい場合にターゲット列にNULLを返します。

ORDER_TOTAL = PRICE * QUANTITY, @IF ((PRICE < 0) AND (QUANTITY < 0), @COLSTAT (NULL))

12.12.6.2 @COLTESTの使用

@COLTEST関数を使用して、次の条件をチェックします。

- PRESENTは、列が存在してNULLではないかどうかをテストします。

- NULLは、列が存在してNULLであるかどうかをテストします。

- MISSINGは、列が存在していないかどうかをテストします。

- INVALIDは、列が存在して無効なデータを含んでいるかどうかをテストします。

次の例は、AMOUNT列が存在してNULLであるか、およびそれが存在するが無効であるかをチェックします。

@COLTEST (AMOUNT, NULL, INVALID)

12.12.6.3 @IFの使用

@IF関数では、条件に基づいて2つの値のうち1つを返します。この関数を@COLSTAT関数および@COLTEST関数とともに使用して、1つ以上の例外条件をテストする条件付き引数を開始し、そのテストの結果に基づいて処理を実行します。

NEW_BALANCE = @IF (@COLTEST (BALANCE, NULL, INVALID) OR
@COLTEST (AMOUNT, NULL, INVALID), @COLSTAT (NULL), BALANCE + AMOUNT)

この変換では次のいずれかの値が戻されます。

- NULL (BALANCEまたはAMOUNTがNULLまたはINVALIDの場合)

- MISSING (いずれかの列が欠落している場合)

- 列の合計

12.12.7 テストの実行

@CASE、@VALONEOFおよび@EVALの各関数によって、データを操作またはマップする前にテストを実行するための追加の方法が提供されます。

12.12.7.1 @CASEの使用

@CASEを使用して、一連の値テストに応じて値を選択します。

@CASE (PRODUCT_CODE, 'CAR', 'A car', 'TRUCK', 'A truck')

この例では、次の要素が戻されます。

- A car (PRODUCT_CODEがCARの場合)

- A truck (PRODUCT_CODEがTRUCKの場合)

- FIELD_MISSINGインジケータ(PRODUCT_CODEが他のどちらの条件も満たさない場合)

12.12.7.2 @VALONEOFの使用

@VALONEOFを使用して、列または文字列と値リストを比較します。

@IF (@VALONEOF (STATE, 'CA', 'NY'), 'COAST', 'MIDDLE')

この例では、STATEがCAまたはNYの場合、値が非ゼロ(つまりTRUE)のときに@IFによって返されるレスポンスである"COAST"が返されます。

12.12.7.3 @EVALの使用

@EVALを使用して、独立した一連の条件テストに基づいて値を選択します。

@EVAL (AMOUNT > 10000, 'high amount', AMOUNT > 5000, 'somewhat high')

この例では、次の要素が戻されます。

- high amount (AMOUNTが10000を超える場合)

- somewhat high (前述の条件が満たされなかった場合で、AMOUNTが5000を超え、10000以下の場合)

- FIELD_MISSINGインジケータ(どちらの条件も満たされない場合)

12.13 トークンの使用

データを取得して、証跡レコード・ヘッダーのユーザー・トークン領域内に格納できます。トークン・データを取得して、Oracle GoldenGateによる情報の配信方法をカスタマイズするために様々な用途で使用できます。たとえば、トークン・データを次の用途で使用できます。

- 列マップ

- SQLEXEC文によってコールされるストアド・プロシージャ

- ユーザー・イグジット

- マクロ

12.13.1 トークンの定義

トークンを使用するには、トークン名を定義してデータに関連付けます。データとして使用できるのは、Oracle GoldenGate列変換関数から取得された任意の有効な文字データまたは値です。

レコード・ヘッダーのトークン領域には、最大2,000バイトのデータを格納できます。トークン名、データ長およびデータ自体がこの領域に収まる必要があります。

トークンを定義するには、Extractパラメータ・ファイルのTABLEパラメータのTOKENSオプションを使用します。

構文

TABLE table_spec, TOKENS (token_name = token_data [, ...]);

説明:

- table_specはソース表の名前です。コンテナまたはカタログの名前(該当する場合)と所有者名を表名の前に付ける必要があります。

- token_nameは、選択したトークンに付ける名前です。任意の数の英数字を使用できます。大/小文字は区別されません。

- token_dataは、最大2000バイトの文字列です。データには、一重引用符に囲まれた文字列、またはOracle GoldenGateの列変換関数の結果のいずれかを指定できます。トークン・データのキャラクタ・セットは変換されません。トークンは、Extract用ソース・データベースのキャラクタ・セットおよびReplicat用ターゲット・データベースのキャラクタ・セットである必要があります。証跡ファイルには、ユーザー・トークンはUTF-8で格納されます。

TABLE ora.oratest, TOKENS (
TK-OSUSER = @GETENV ('GGENVIRONMENT' , 'OSUSERNAME'),
TK-GROUP = @GETENV ('GGENVIRONMENT' , 'GROUPNAME')
TK-HOST =  @GETENV('GGENVIRONMENT' , 'HOSTNAME'));

この例に示されているとおり、Oracle GoldenGateの@GETENV関数は、トークン・データを移入するための効果的な方法です。この関数には、トークンにマップしてターゲット・システムで列マッピングに使用できる環境情報を取得するための複数のオプションがあります。

12.13.2 ターゲット表でのトークン・データの使用

ターゲット表にトークン・データをマップするには、ReplicatのMAP文に含まれるCOLMAP句のソース式で@TOKEN列変換関数を使用します。@TOKEN関数によって、マップするトークンの名前を提供します。@TOKENを使用したCOLMAP構文は、次のとおりです。

構文

COLMAP (target_column = @TOKEN ('token_name'))

次のMAP文では、hostやgg_groupなどのターゲット列が、tk-hostやtk-groupなどのトークンにマップされます。引数は一重引用符で囲む必要があります。

ユーザー・トークン

値

tk-host

:sysA

tk-group

:extora

tk-osuser

:jad

tk-domain

:admin

tk-ba_ind

:B

tk-commit_ts

:2011-01-24 17:08:59.000000

tk-pos

:3604496

tk-rba

:4058

tk-table

:oratest

tk-optype

:insert

例12-6 MAP文

MAP ora.oratest, TARGET ora.rpt,
COLMAP (USEDEFAULTS,
host = @token ('tk-host'),
gg_group = @token ('tk-group'),
osuser= @token ('tk-osuser'),
domain = @token ('tk-domain'),
ba_ind= @token ('tk-ba_ind'),
commit_ts = @token ('tk-commit_ts'),
pos = @token ('tk-pos'),
rba = @token ('tk-rba'),
tablename = @token ('tk-table'),
optype = @token ('tk-optype'));

この例のトークンは、証跡のレコード・ヘッダー内では次のように示されます。

13 レプリケートされたデータとメタデータとの関連付け

この章では、メタデータの使用方法と、レプリケートされたデータとメタデータとを関連付ける方法について説明します。

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

- 概要

- データ定義ファイルの理解

- 自動証跡ファイル・リカバリの使用方法

- Oracle GoldenGateを自己記述型の証跡ファイルに対して構成する方法

- 同一のメタデータを想定するためのOracle GoldenGateの構成

- 異なるメタデータを想定するためのOracle GoldenGateの構成

- 同じ定義と異なる定義の組合せを使用するためのOracle GoldenGateの構成

13.1 概要

ある表から別の表にデータをレプリケートする場合、ソース表とターゲット表の列構造(メタデータ)が同一かどうかは重要な問題です。Oracle GoldenGateは、次の目的でメタデータを参照します。

- ソースで、取得された操作に関する完全な情報をReplicatプロセスに提供するため。

- ターゲットで、レプリケートされたデータがReplicatによって正しくマップされ、(必要に応じて)変換されるよう、ターゲット表の構造を決めるため。

次に示すシナリオでは、それぞれ異なるパラメータまたはパラメータ・セットを使用して、メタデータを処理するOracle GoldenGateプロセスに対してメタデータを正しく表現する必要があります。

- ソース表を、同一のメタデータ定義を持つターゲット表にレプリケートする場合(同機種レプリケーション)。

- ソース表を、異なるメタデータ定義を持つターゲット表にレプリケートする場合。

- ソース表を2つのターゲット表(同一の定義を持つターゲット表と異なる定義を持つターゲット表)にレプリケートする場合。

13.2 データ定義ファイルの理解

Oracle GoldenGateは、ローカル・データベースに問い合せて一方の定義セットを取得できますが、リモート・データベースから定義を取得するにはデータ定義ファイルが必要になります。データ定義ファイルには、レプリケート対象データのメタデータに関する情報が含まれています。次の2種類の定義ファイルがあります。

- ソース定義ファイルには、ソース表の定義が含まれています。

- ターゲット定義ファイルには、ターゲット表の定義が含まれています。

パラメータ・ファイルでは複数のデータ定義ファイルを使用できます。たとえば、それぞれに異なるアプリケーションの定義を含めることができます。

13.2.1 定義ファイルの内容

データ定義ファイルの形式は内部使用を目的としているため、手順に記載されている場合、またはサポート担当者から指示された場合を除き、Oracle GoldenGateユーザーが編集しないでください。ファイルの先頭に、DEFGENのバージョン、キャラクタ・セットの情報、データベース・タイプ、ロケール、およびその他のデータ・プロパティを示す内部メタデータからなるファイル・ヘッダーがあります。ヘッダーの次にあるのが表定義セクションです。各表定義セクションには、表名、レコード長、列数、および1つ以上の列定義が含まれています。

13.2.2 使用する定義ファイルのタイプと場所

使用する定義ファイルのタイプは、列のマッピングおよび変換がどこで実行されるかによって異なります。

- WindowsまたはUNIXベースの任意のタイプのデータベース・システムからWindowsまたはUNIXベースの他のシステムにレプリケートする場合、マッピングと変換はExtract、データ・ポンプExtract、Replicatのいずれでも実行できますが、通常はターゲット・システムのReplicatによって実行されます。ただし、Oracle GoldenGateで異なるキャラクタ・セット間の変換を行う必要がある場合、ターゲットのReplicatによってマッピングと変換が行われる必要があります。「定義ファイルのキャラクタ・セットの影響の理解」を参照してください

- Windows、UNIXまたはLinuxベースの任意のデータベース・システムからNonStopシステム上のEnscribeターゲットにレプリケートする場合、マッピングと変換はWindows、UNIXまたはLinuxシステムで実行する必要があります。2つおよび3つの部分からなるSQL名およびデータ型を、NonStopプラットフォームで使用される3つの部分からなるファイル名に変換できるのはExtractのみです。このシナリオでは、Oracle GoldenGateはソースとターゲットの間でキャラクタ・セットを変換できません。「定義ファイルのキャラクタ・セットの影響の理解」を参照してください

したがって、次のようになります。

- 列のマッピングおよび変換をターゲットで実行するには、ソースで生成されたソース定義ファイルを使用して、Replicatにソース定義を提供します。

- 列のマッピングおよび変換をソースで実行するには、ターゲットで生成されたターゲット定義ファイルを使用し、プライマリExtractとデータ・ポンプExtractのどちらが変換を実行するかに応じて、該当するプロセスにターゲット定義を提供します。

- 中間システムで列マッピングと変換を行うには、複数の定義ファイル・タイプを使用する必要がある場合があります。中間システムでデータ・ポンプを使用するレポート構成の作成およびカスケード・レポート構成の作成を参照してください。中間システムにReplicatがない場合、キャラクタ・セット間の変換は実行できないことに注意してください。

13.2.3 定義ファイルのキャラクタ・セットの影響の理解

Oracle GoldenGateでは、データの変換を行う場合は、データベースのキャラクタ・セット・エンコーディングを考慮に入れ、定義ファイルを作成する場合は、ローカル・オペレーティング・システムのキャラクタ・セットを考慮に入れます。ソース・データとターゲット・データのキャラクタ・セットが異なる場合、次のガイドラインを考慮に入れます。

13.2.3.1 データのマッピングと変換をReplicatプロセスに限定

異なるキャラクタ・セット間でレプリケートされたデータの変換を行うプロセスはReplicatのみです。ソース・データベースのキャラクタ・セットからターゲット・データベースのキャラクタ・セット(カスケード構成では中間システムのデータベースのキャラクタ・セット)へデータを変換します。そのため、ソースとターゲットのキャラクタ・セットが異なる場合、データ・マッピングと変換はReplicatによって行われる必要があります。データ・ポンプのみが含まれるソース・システムや中間システムで行うことはできません。このような場合、ターゲット定義ファイルは無効です。

13.2.3.2 オペレーティング・システムのキャラクタ・セットが原因のファイルの破損の回避

デフォルトでは、定義ファイルはDEFGENによってローカル・オペレーティング・システムのキャラクタ・セットで記述されます。次の条件を満たす場合、エンコーディング関連の問題が生じることなく、定義ファイルをローカル・システムで作成し、リモート・システムに転送できます。

- 定義ファイルの転送先のリモート・システムに、ローカル・システムと同じか同等のオペレーティング・システム・キャラクタ・セットがあります

- リモート・システムのオペレーティング・システム・キャラクタ・セットは、ローカル・システムのオペレーティング・システム・キャラクタ・セットのサブセットです。たとえば、ソースとターゲットのキャラクタ・セットがいずれもASCII互換またはEBCDIC互換で、表名と列名がすべて7ビットのUS-ASCIIまたはそれと同等の文字を使用している場合、ソースとターゲットのシステム間で定義ファイルを移動できます。

オペレーティング・システム・キャラクタ・セット同士の多くは、あまり互換性がないか、まったく互換性がありません。リモート・システムで使用されるものと同じか、互換性のあるキャラクタ・セットで定義ファイルを記述するには、DEFGENを構成する際、DEFSFILEパラメータのCHARSETオプションを使用します。

13.2.3.3 既存の定義ファイルのキャラクタ・セットの変更

既存の定義ファイルを、キャラクタ・セットに互換性のないオペレーティング・システムへ転送する場合、そのシステムでDEFGENユーティリティを実行して、ファイルのキャラクタ・セットを目的のものに変換できます。この手順では、2つの入力引数(定義ファイルの名前とUPDATECS character_setパラメータ)を指定します。次に例を示します。

defgen ./dirdef/source.def UPDATECS UTF-8

UPDATECSが役立つのは、日本語のWindowsにおける日本語の表名がWindows CP932でデータ定義ファイルに記述されており、その定義ファイルを日本語のUNIXに転送するような場合です。UNIXがPCKロケールで構成されていないかぎり、このファイルは使用できません。そのため、UPDATECSを使用して定義ファイルのエンコーディングを正しい形式に変換する必要があります。

13.2.3.4 z/OSシステムから別のプラットフォームへのダウンロード

IBM z/OSプラットフォームで生成された定義ファイルをz/OS以外のプラットフォームに転送する場合、BINARYモードでダウンロードする必要があります。

13.2.4 定義テンプレートの使用

定義ファイルを作成する際に定義テンプレートを指定すると、初期起動の後、Oracle GoldenGate構成に表が追加された場合に、新しい定義ファイルを作成する必要性が軽減されます。テンプレートを使用するには、たとえば顧客データベースに顧客ごとの別々の表が存在するが、すべての表が同一であるというように、新しい表がすべて同一の構造を持っている必要があります(「表が同一とみなされるためのルール」を参照)。

テンプレートを使用しない場合に、起動後、新しい表が追加されたときは、Oracle GoldenGate構成に追加された新しい表ごとに定義ファイルを生成し、その内容を既存のマスター定義ファイルにコピーしてから、プロセスを再起動する必要があります。

13.2.5 データ定義を取得するためのOracle GoldenGateの構成

データ定義ファイルとテンプレート(必要な場合)を使用するようにOracle GoldenGateを構成するには、次の操作を実行します。

- DEFGENの構成

- DEFGENの実行

- リモート・システムへの定義ファイルの転送

- 定義ファイルの指定

注意:

Oracleの順序に対するデータ定義ファイルは作成しないでください。このファイルは不要であり、DEFGENではサポートされません。

13.2.5.1 DEFGENの構成

メタデータ定義を取得するシステムで次の手順を実行します。

1. Oracle GoldenGateディレクトリからGGSCIを実行します。

2. GGSCIで、次のコマンドを発行してDEFGENのパラメータ・ファイルを作成します。

EDIT PARAMS DEFGEN

3. 表13-1にリストされている順序でパラメータを入力します。パラメータ文ごとに新規行を開始します。

表13-1 DEFGENのパラメータ

パラメータ

説明

CHARSET character_set

DEFGENでパラメータ・ファイルの読取りに使用されるキャラクタ・セットを指定するには、このパラメータを使用します。デフォルトでは、パラメータ・ファイルのキャラクタ・セットはローカル・オペレーティング・システムのキャラクタ・セットです。CHARSETを使用する場合は、パラメータ・ファイルの1行目に指定する必要があります。

DEFSFILE file_name [APPEND | PURGE] [CHARSET character_set] [FORMAT RELEASE major.minor]

- APPENDを指定した場合、DEFGENは、指定のファイルがすでに存在すれば、既存の内容の最後に(現在の実行からの)新しい内容を書き込みます。

- PURGEを指定した場合、DEFGENは、現在の実行からの新しい内容を書き込む前に、指定のファイルを消去します。これはデフォルトです。

- CHARSETを指定した場合、オペレーティング・システムのデフォルト・キャラクタ・セットではなく、指定のキャラクタ・セットで定義ファイルが生成されます。

- FORMAT RELEASEは、定義ファイルのOracle GoldenGateリリース・バージョンを指定します。定義ファイルが、DEFGENプロセスより古いバージョンのOracle GoldenGateにあるプロセスによって読み取られる場合に使用します。

DEFGENの出力となるデータ定義ファイルの相対名または完全修飾名を指定します。

各パラメータ・オプションとそれらがキャラクタ・セットに与える影響についての重要な情報は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

詳細は、「定義ファイルのキャラクタ・セットの影響の理解」を参照してください。

[{SOURCEDB | TARGETDB} datasource]
{USERIDALIAS alias | USERID user, PASSWORD password [encryption_options]}

- SOURCEDB | TARGETDBでは、データソース名を指定します(接続情報の一部として必要な場合)。Oracleでは必要ありません。

- USERID user, PASSWORD password [encryption_options]は、ユーザー名とパスワード、および暗号化オプション(オプション)を指定します。

- USERIDALIASはOracle GoldenGate資格証明ストアに格納された資格証明を介するデータベース認証を提供します。

データベース接続情報を指定します。

datasourceは、DSN(データソース名)、SQL/MXカタログまたはOracleコンテナ・データベース(CDB)のコンテナです。Oracleコンテナ・データベースに接続する場合、複数のコンテナにあるオブジェクトに対して定義を生成する必要があるときは、一般ユーザーとしてrootコンテナに接続します。それ以外の場合は、特定のコンテナに接続して、そのコンテナのためだけの定義を生成できます。

SOURCEDB、USERIDおよびUSERIDALIASの詳細(それらがサポートするデータベースなど)は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

NOCATALOG

定義が定義ファイルへ書き込まれる前に、表名からコンテナ名(Oracle)またはカタログ名(SQL/MX)を削除します。このパラメータは、2つの部分からなる名前(owner.object)のみをサポートするデータベースへのマッピングに定義ファイルが使用される場合に使用します。

TABLE [container. | catalog.]owner.table
[, {DEF | TARGETDEF} template];

説明:

- containerOracleコンテナ・データベース内のコンテナです。

- catalogはSQL/MXデータベース内のカタログです。

- ownerは、定義対象の表を含むスキーマの名前です。

- tableは、定義対象の表です。

- [, {DEF | TARGETDEF} template]を指定すると、この表のメタデータに基づいた定義テンプレートが追加で作成されます。このオプションは、初期ロードではサポートされません。このオプションの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

定義を定義する1つ以上の表の完全修飾名を指定し、オプションで表のメタデータを定義テンプレートの基礎として使用します。大/小文字が区別されるデータベースに対しては、表名とテンプレート名における大/小文字の区別が維持されます。ワイルドカードの使用と大/小文字の区別の詳細は、「Oracle GoldenGateの入力におけるオブジェクト名の指定」を参照してください。

ソース定義ファイルを生成する場合はソース表を指定し、ターゲット定義ファイルを生成する場合はターゲット表を指定します。

ワイルドカード指定から表を除外するには、TABLEEXCLUDEパラメータを使用します。

DEFGENでは、UDTがサポートされないことに注意してください。

4. ファイルを保存して閉じます。

5. GGSCIを終了します。

13.2.5.2 DEFGENの実行

1. Oracle GoldenGateがインストールされているディレクトリから、次の引数を使用してDEFGENを実行します。この例は、UNIXファイル・システムの構造を示しています。

defgen paramfile dirprm/defgen.prm [reportfile dirrpt/defgen.rpt]
[NOEXTATTR]

説明:

- defgenは、プログラムの名前です。

- paramfileは必須のキーワードです。dirprm/defgen.prmは、DEFGENパラメータ・ファイルの相対名またはフルパス名です。(例には通常の場所が示されています。)

- reportfileは必須のキーワードです。dirrpt/defgen.rptは、画面および指定したレポート・ファイルに出力を送ります。(例には通常の場所が示されています。)画面に出力するのみの場合、reportfile引数は省略できます。

- NOEXTATTRは、リリース11.2.1より古いOracle GoldenGateとの下位互換性を維持するために使用できますが、ASCII以外のキャラクタ・セット、大/小文字の区別、および空白とともに引用符で囲んだオブジェクト名をサポートしません。NOEXTATTRを指定すると、DEFGENは、Oracle GoldenGateリリース11.2.1で導入されたグローバリゼーション機能をサポートするデータベース・ロケールおよびキャラクタ・セットを組み込みません。表名または列名にマルチバイト文字や空白などの特殊文字が含まれている場合、NOEXTATTRを指定すると、DEFGENは表定義を組み込みません。パラメータ・ファイルでAPPENDモードが使用されている場合、NOEXTATTRは無視され、その他の属性が指定されているかどうかに関係なく、新しい表定義が既存のファイル形式で追加されます。

2. 追加で作成する定義ファイルについて、前述の手順を繰り返します。

3. ASCIIモードを使用して、ローカルのOracle GoldenGate dirdefサブディレクトリからリモートのdirdefサブディレクトリに定義ファイルをFTP送信します。

13.2.5.3 リモート・システムへの定義ファイルの転送

ローカルとリモートのオペレーティング・システムが異なり、リモート・オペレーティング・システムのキャラクタ・セット用に定義ファイルが作成されている場合に、データ定義ファイルをリモート・システムにFTP送信するには、BINARYモードを使用します。こうすることで、FTPプログラムによって予期しない文字(復帰改行文字や改行文字など)がファイルに挿入されるのを回避できます。z/OSからz/OS以外のプラットフォームへ定義ファイルを転送する場合、必ずBINARYモードを使用してください。

13.2.5.4 定義ファイルの指定

次の方法でデータ定義ファイルを適切なOracle GoldenGateプロセスに関連付けます。

- Extractパラメータ・ファイルのTARGETDEFSパラメータを使用して、ターゲット定義ファイルをExtractグループまたはデータ・ポンプに関連付けます。

- Replicatパラメータ・ファイルのSOURCEDEFSパラメータを使用して、ソース定義ファイルをReplicatグループに関連付けます。

- Oracle GoldenGateによって、ソース・データベースもターゲット・データベースも含まない中間システムでマッピングまたは変換を実行する場合、パラメータ・ファイルのSOURCEDEFSおよびTARGETDEFSを使用して、ソース定義ファイルおよびターゲット定義ファイルをデータ・ポンプExtractに関連付けます。Oracle Databaseでは、中間システムにOracleライブラリも存在している必要があります。

複数の定義ファイルを指定する正しい方法は、「定義ファイルの使用例」を参照してください。

同じパラメータ・ファイルで、SOURCEDEFSとASSUMETARGETDEFSを使用しないでください。ASSUMETARGETDEFSの詳細は、同一のメタデータを想定するためのOracle GoldenGateの構成を参照してください。

13.2.6 定義テンプレートに一致する表の追加

Oracle GoldenGate構成内の新しい表を定義テンプレートにマップするには、TABLEパラメータとMAPパラメータの次のオプションを適宜使用します。

- ソース定義テンプレートの名前を指定するには、DEFを使用します。

- ターゲット定義テンプレートの名前を指定するには、TARGETDEFを使用します。

これらのオプションを指定すると、ExtractプロセスまたはReplicatプロセスで指定のテンプレートと同じ定義が使用されるため、新しい表の定義ファイルを新たに作成したり、プロセスを再起動したりする必要はありません。

13.2.7 定義ファイルの使用例

このトピックには、定義ファイルを含むいくつかの基本的な使用例が含まれます。

ターゲット・システム上で使用するソース定義ファイルの作成

ソース・システム上で使用するターゲット定義ファイルの作成

ターゲット・システム上で使用する複数のソース定義ファイルの作成

13.2.7.1 ターゲット・システム上で使用するソース定義ファイルの作成

次の構成では、ソース定義ファイルを出力として作成するDEFGENパラメータ・ファイルを使用します。この例は、Oracleデータベースの表を対象としています。

DEFSFILE C:\ggs\dirdef\record.def
USERIDALIAS ogg
TABLE acct.cust100, DEF custdef;
TABLE ord.*;
TABLE hr.*;

このDEFGEN構成の結果は次のとおりです。

- 名前別の個別定義が、ordおよびhrスキーマのすべての表に対して作成されます。

- 表acct.cust100に基づいてcustdefテンプレートが作成されます。データベースには、それぞれacct.cust100と同一の定義を持つ他のacct.cust*表が存在します。

表は、Replicatのパラメータ・ファイルで次のようにマップされます。

-- This is a simplified parameter file. Your requirements may vary.
REPLICAT acctrep
USERIDALIAS ogg
SOURCEDEFS c:\ggs\dirdef\record.def
MAP acct.cust*, TARGET acct.cust*, DEF custdef;
MAP ord.prod, TARGET ord.prod;
MAP ord.parts, TARGET ord.parts;
MAP hr.emp, TARGET hr.emp;
MAP hr.salary, TARGET hr.salary;

最初のMAP文のDEFオプションで指定したとおり、ワイルドカード指定acct.cust*に一致する表の定義はcustdefテンプレートから取得されます。

13.2.7.2 ソース・システム上で使用するターゲット定義ファイルの作成

同じ表のターゲット定義が必要な場合、その表をプライマリExtractまたはデータ・ポンプに対してマップできます。

- ターゲットがEnscribeデータベースの場合、ソース定義のかわりにターゲット定義が必要です。

- マッピングと変換を中間システムで実行する場合、ソース定義に加えてターゲット定義も必要です。

ターゲット定義ファイルを作成するためのDEFGEN構成は次のようになります。

DEFSFILE C:\ggs\dirdef\trecord.def
USERIDALIAS ogg
TABLE acct.cust100, DEF tcustdef;
TABLE ord.*;
TABLE hr.*;

注意:

ソース定義ファイルを作成するDEFGEN構成については、前の例を参照してください。

Extract構成は次のようになります。

-- This is a simplified parameter file. Your requirements may vary.
EXTRACT acctex
USERIDALIAS ogg
RMTHOSTOPTIONS sysb, MGRPORT 7890, ENCRYPT AES192 KEYNAME mykey1
ENCRYPTTRAIL AES192
RMTTRAIL $data.ggsdat.rt
SOURCEDEFS c:\ggs\dirdef\record.def
TARGETDEFS c:\ggs\dirdef\trecord.def
TABLE acct.cust*, TARGET acct.cust*, DEF custdef, TARGETDEF tcustdef;
TABLE ord.prod, TARGET ord.prod;
TABLE ord.parts, TARGET ord.parts;
TABLE hr.emp, TARGET hr.emp;
TABLE hr.salary, TARGET hr.salary;

この例では、acc.cust*表に対して、custdef (record.defファイルから)という名前のソース・テンプレートとtcustdef (trecord.defファイルから)という名前のターゲット・テンプレートが使用されます。ordおよびhrスキーマの表の定義は、表名に基づいた明示的な定義から取得されます(そのかわりに、ここでワイルドカード指定を使用することも可能です)。

13.2.7.3 ターゲット・システム上で使用する複数のソース定義ファイルの作成

これは、複数の定義ファイルの使用方法を示す単純な例です。パラメータの要件は、Oracle GoldenGateトポロジとデータベース・タイプによって異なる場合があります。

次に示すのは、1つ目のデータ定義ファイルを作成するDEFGENパラメータ・ファイルです。

DEFSFILE C:\ggs\dirdef\sales.def
USERIDALIAS ogg
TABLE ord.*;

次に示すのは、2つ目のデータ定義ファイルを作成するDEFGENパラメータ・ファイルです。ファイル名および表の指定が1つ目のものとは異なります。

DEFSFILE C:\ggs\dirdef\admin.def
USERIDALIAS ogg
TABLE hr.*;

1つ目の定義ファイルと2つ目の定義ファイルの表は、同じReplicatパラメータ・ファイルで次のようにマップされます。

REPLICAT acctrep
USERIDALIAS ogg
SOURCEDEFS c:\ggs\dirdef\sales.def
MAP ord.*, TARGET ord.*;
SOURCEDEFS c:\ggs\dirdef\admin.def
MAP hr.*, TARGET hr.*;

13.3 自動証跡ファイル・リカバリの使用方法

証跡リカバリ・プロセスには、場合によって、破損または欠落した証跡ファイルをOracle GoldenGateが自動的に再作成する機能があります。Extractポンプの再起動時にポンプが書き込んでいた最後の証跡が存在しない場合、Extractポンプはターゲット・システム上で欠落した証跡ファイルの再作成を試みます。これは、プロセスのチェックポイント情報と前回の有効な証跡ファイルを使用して自動的に実行されます。Replicatプロセスは、新しい証跡リカバリ機能によって再作成された証跡ファイル内に重複データがあると、そのデータを自動的にスキップします。このリカバリは、この順序番号以降にターゲット証跡が1つ以上あり、Extractポンプの読取り元のソース上に証跡ファイルがまだ存在する場合に発生します。

このプロセスは、ターゲット上で破損または無効な証跡ファイルを再作成する場合にも使用できます。破損した証跡ファイルとそれ以降の証跡ファイルを単純に削除してから、Extractポンプを再起動します。この新しい動作では、PURGEOLDEXTRACTS MINKEEPルールを適切に構成して、ターゲット環境の再構築に使用できるソースの証跡ファイルが必ず存在するようにしておくことをお薦めします。この機能では、ソースとターゲットの両方のサーバーでOracle GoldenGateリリース12.1.2.1.8以上が使用されている必要があります。NOFILTERDUPTRANSACTIONSを指定してReplicatを起動すると、Replicatのデフォルト動作が無効になり、ターゲット・データベースに適用済のトランザクションが再度適用される可能性があるため、それは実行しないでください。

13.4 Oracle GoldenGateを自己記述型の証跡ファイルに対して構成する方法

このリリースのデフォルト動作では、ソースのメタデータを格納し、ターゲットへ転送して、証跡ファイルごとにカプセル化します。つまり、各ファイルにメタデータ・レコードを追加することで、自己記述型のExtract証跡またはファイルが作成されます。メタデータ・レコードには次の2種類があります。

- データベース定義レコード(DDR)
DDRでは、キャラクタ・セットやタイムゾーンなど、特定のデータベースに関する情報を提供します。データベース定義レコードは、キャプチャ対象のプラガブル・データベースごとにデータベース・メタデータを格納するため、証跡に追加されます。プラガブル・データベースのすべての行変更レコードには、そのプラガブル・データベースに対応するDDRに基づいて、キャラクタとローカル・タイム・ゾーンのタイムスタンプが設定されています。DDRは、統合データベースと非統合データベースの両方に対して生成されます。

- 表定義レコード(TDR)
TDRは、表および表に含まれる列に関する定義の詳細を提供します。このレコードの内容は、定義ファイル(file_defおよびcol_defクラスにある情報のサブセット)に記載されている内容と似ています。各データベースは、自身のデータベース固有情報を各TDRに埋め込むことができます。TDRには完全な表定義が含まれ、これを使用して同じ表の様々な行変更レコードが記述されます。出力証跡が新しいファイルにロール・オーバーするか、ソース表定義が変更された場合に、新しいTDRが書き込まれます。

TDRには、行変更レコードで表される表オブジェクトの定義が記述されていることに注意する必要があります。これはソースの表定義に似ていますが、まったく同じではありません。たとえば、列変換関数がソース列に適用されている場合、データベース内にあるその値のメタデータは、証跡ファイルに表示されるメタデータとは異なります。

自己記述型の証跡ファイル・フォーマットのメタデータ・レコードは、次のように動作します。

自己記述型の証跡ファイルを使用すると、SOURCEDEFSやASSUMETARGETDEFSが必要なくなるので、パラメータ・ファイルが簡素化され、異種レプリケーションの構成が簡単になり、次のことを実現します。

- オブジェクト名の圧縮に伴う証跡ファイル・サイズの削減。

- 異なるキャラクタ・セットとタイムゾーンを持つ複数のカタログから1つの証跡にデータを抽出する機能。

- 3つ以上のOracleデータベース間でDDLレプリケーションを構成する機能。GETREPLICATS、UPDATEMETADATAおよびNOTAGの各パラメータを使用する必要はありません。ソース表とターゲット表に類似性がない場合に、Oracle GoldenGateプロセスを同期することなく、DDLをレプリケートできます。

- ソース定義ファイルの作成および管理が不要。

自己記述型の証跡の動作の理解

ソース表定義の変更時、新しいTDRをExtractのメモリーおよび証跡ファイルに更新するには、次の基準を満たす必要があります。

語の見出し

説明の見出し

Oracleデータベース・ソース

統合Extract (Oracle Database 11.2.0.4以上および互換 = 11.2.0.4以上): ソース表でDDLが実行された後、更新されたメタデータ・レコードが統合Extractによってシームレスに生成されるため、手動の手順は必要ありません。DDLレプリケーションが有効かどうかに関係なく、このようになります。

クラシックExtract: DDL後に更新されたメタデータ・レコードをExtractによってシームレスに生成するには、Extractパラメータ・ファイルにDDLパラメータを含む必要があります。または、12.2より前のリリースでのように、Extractがすべての関連データベース変更を証跡に完全に出力して停止した後でのみ、DDLを実行する必要があります。DDLが実行された後、Extractを再起動する必要があります。以前のリリースと異なり、Replicatを停止し、DEFGENを使用してSOURCEDEFSを再生成する必要はありません。

異機種データベース・ソース

12.2より前のリリースでのように、Extractがすべての関連データベース変更を証跡に完全に出力して停止した後でのみ、DDLを実行する必要があります。DDLが実行された後、Extractを再起動する必要があります。以前のリリースと異なり、Replicatを停止し、DEFGENを使用してSOURCEDEFSを再生成する必要はありません。

13.4.1 サポートに関する考慮事項

次のサポート情報を確認します。

- 証跡ファイル・フォーマット:

- メタデータ・レコードを含めるには、Oracle GoldenGate release 12c (12.2.0.1)以上であることが必要です。

- 複数証跡構成で、古い証跡フォーマットを使用して12c (12.2.0.1)の証跡フォーマットは作成できません。

- FORMATASCII、FORMATSQLおよびFORMATXML証跡にメタデータ・レコードを含めることはできません。

- 既存の証跡ファイル構成では、表のメタデータの解決方法について、次に示す以前の抽出証跡と自己記述型の抽出証跡とを簡単に切り替えることができます。

- USE_TRAILDEFS GLOBALSパラメータを使用して、すべてのポンプとReplicatを制御する方法。

- SOURCEDEFSおよびASSUMETARGETDEFSのOVERRIDEオプションを使用して、ポンプまたはReplicatを個別に制御する方法。これはお薦めされていません。

- ログダンプでは、DEFGEN出力のようなメタデータ・レコードを表示します。

- リバースは12c (12.2.0.1)証跡フォーマットではサポートされません。

- 表がマップされている場合、生成されたTDRはソース表ではなくマップされた表の定義に基づきます。

- 証跡のメタデータは、HP NonStop (Guardian)を除くすべてのデータベースでサポートされます。

13.4.2 自己記述型の証跡ファイルの使用方法

USE_TRAILDEFS GLOBALSパラメータでは、すべてのポンプとReplicatを有効化または無効化します。SOURCDEFSとASSUMETARGETDEFおよびそのソース表定義に関連するこのコマンドの使用方法を次に示します。

図13-1 USE_TRAILDEFS | NOUSE_TRAILDEFSの使用方法

自己記述型の証跡ファイルを使用する場合は、ASSUMETARGETDEFSおよびSOURCEDEFSの各パラメータとともにOVERRIDEオプションを使用する必要があります。

13.4.3 パラメータ・ファイルの例

次に、Extractパラメータ・ファイルの例を示します。

EXTRACT ext1
USERID tkggadmin@inst1, password tkggadmin
DDL include objname hr.*, include objname st_hr.*
RMTTRAIL $data/ggs12.2/a1
TABLE hr.*;
TABLE st_hr.salary, TARGET hr.salary, COLMAP  (USEDEFAULTS,
ts = @GETENV('GGHEADER' , 'COMMITTIMESTAMP'));
RMTTRAIL $data/ggs12.2/a2, NO_OBJECTDEFS
TABLE orders.*;

次に、Replicatパラメータ・ファイルの例を示します。

REPLCAT rep1
USERID tkggadmin@inst2, password tkggadmin
DDLERROR default discard
DDL include all
DISCARDFILE ./dirrpt/rep1.dsc purge
MAP hr.*, TARGET hr.*;

13.5 同一のメタデータを想定するためのOracle GoldenGateの構成

注意:

この項は、自己記述型の証跡ファイルには適用されません。

ソース表とターゲット表が同一のメタデータ定義を持つ場合、Replicatのパラメータ・ファイルでASSUMETARGETDEFSパラメータを使用します。このパラメータは、Replicatに対して、ターゲットの定義がソースの定義と同じであると想定し、SQL文の作成時にその定義をレプリケートされたデータに適用するよう指示します。ソース表とターゲット表はあらゆる点で同一である必要があるため、変換処理は不要です(ただし、カタログ、コンテナ、表の所有者と名前のいずれかまたは両方が異なっていてもかまいません)。

13.5.1 表が同一とみなされるためのルール

ソースとターゲットの構造が同一であるためには、次の要件を満たす必要があります。

- データベース・タイプが同じであること(すべてOracleであるなど)。

- キャラクタ・セットおよびロケールが同じであること(american_AMERICAなど)。

- 同じ数の列が含まれていること。

- 列名が同一であること(該当する場合は大/小文字、空白、引用符も含む)。

- データ型が同一であること。

- 列の長さが同一であること。

- 文字の列の列長さセマンティクス(バイトか文字か)が同じであること。

- すべての列が同じ順序で定義されていること。

次の単純なReplicatパラメータ・ファイルは、ASSUMETARGETDEFSの使用方法を示しています。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXの「ASSUMETARGETDEFS」を参照してください。

-- Specifies the group name.
REPLICAT acctrep
-- Specifies database login with an alias to a credential in the credential store.
USERIDALIAS ogg
-- Specifies a file for discard output.
DISCARDFILE ./dirrpt/backup/r_prod.dsc, APPEND
-- States that source and target definitions are identical.
ASSUMETARGETDEFS
-- Maps source tables to target tables.
MAP hq.product, TARGET region1.product;
MAP hq.price, TARGET region1.price;

ソースとターゲットの構造が異なる場合は、SOURCEDEFSパラメータを使用します。異なるメタデータを想定するためのOracle GoldenGateの構成を参照してください。ASSUMETARGETDEFSとSOURCEDEFSは、同じパラメータ・ファイルで使用できません。

13.6 異なるメタデータを想定するためのOracle GoldenGateの構成

「表が同一とみなされるためのルール」のルールを満たさない場合、ソースとターゲットのメタデータ定義は同一であるとみなされません。ソース表とターゲット表の定義が異なる場合、Oracle GoldenGateでは、ある形式から別の形式への変換を実行する必要があります。変換を実行するには、Oracle GoldenGateが両方の定義セットを認識していることが必要です。

13.7 同じ定義と異なる定義の組合せを使用するためのOracle GoldenGateの構成

注意:

この項は、自己記述型の証跡ファイルには適用されません。

ASSUMETARGETDEFSとSOURCEDEFSは、同じパラメータ・ファイルで使用できます。これが可能なのは、一部のソース表とターゲット表のペアの間では列のマッピングまたは変換を実行する必要があるが、その他の表のペアは同一である場合です。

次の例は、同じパラメータ・ファイルでSOURCEDEFSとASSUMETARGETDEFSを使用する方法を示しています。この例は、acct、ord、hrの各スキーマの表がSOURCEDEFSを必要とする前の例に基づいていますが、動的に作成されstockという名前がランダムな数値とともに付加される表を持つrptスキーマが追加されています。Oracle GoldenGateでDMLだけでなくDDLもレプリケートするには、ターゲット表が同一であることが必要です。その場合、ASSUMETARGETDEFSを指定する必要があります。

REPLICAT acctrep
USERIDALIAS ogg
SOURCEDEFS c:\ggs\dirdef\record.def
MAP acct.cust*, TARGET acct.cust*, DEF custdef;
MAP ord.prod, TARGET ord.prod;
MAP ord.parts, TARGET ord.parts;
MAP hr.emp, TARGET hr.emp;
MAP hr.salary, TARGET hr.salary;
ASSUMETARGETDEFS
MAP rpt.stock, TARGET rpt.stock;

14 オンライン変更同期の構成

この章では、オンライン変更同期を構成する方法について説明します。

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

- オンライン変更同期の概要

- プロセスとファイルの名前の選択

- チェックポイント表の作成

- オンラインExtractグループの作成

- 証跡の作成

- オンライン抽出用のパラメータ・ファイルの作成

- オンラインReplicatグループの作成

- オンライン・レプリケーション用のパラメータ・ファイルの作成

14.1 オンライン変更同期の概要

オンライン変更同期では、データ変更を継続的に抽出およびレプリケートして、ほぼリアルタイムな状態にターゲット・データベースを維持します。必要なExtractおよびReplicatのプロセスおよび証跡の数は、デプロイするレプリケーション・トポロジと、使用しているプロセス・モードによって異なります。

特定のレプリケーション・トポロジのデプロイの詳細は、次のものを参照してください。

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

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

- ライブ・スタンバイ・データベース管理のためのOracle GoldenGateの構成

- アクティブ/アクティブ型高可用性のためのOracle GoldenGateの構成

複数のカタログを含むOracleマルチテナント・コンテナ・データベース間またはSQL/MXデータベース間でレプリケートする場合、複数のReplicatプロセスを構成する必要がある場合があります。1つのReplicatプロセスは1つのコンテナまたはカタログにのみ適用できます。この場合、各ターゲット・コンテナまたはカタログに対してReplicatプロセスを構成する必要があります。その場合、各Replicatパラメータ・ファイルで、TARGETDBパラメータを使用して適切なターゲット・コンテナまたはカタログを指定します。これらのデータベースに対して取得または適用を行う場合のガイドラインは、Oracle DatabaseのためのOracle GoldenGateのインストールおよび構成およびNonStop SQL/MXのためのOracle GoldenGateのインストールおよび構成を参照してください。

特定のパフォーマンス・レベルを達成するために、複数のプロセス・グループを構成する必要がある場合があります。たとえば、ラグを特定のしきい値未満に抑えたい場合などです。ラグとは、ソース・アプリケーション内で変更が発生した時点と、それらの変更がターゲット・データベースに適用される時点との間の時間差です。

Oracle GoldenGateは、Oracle GoldenGate Managerインスタンス当たり、最大で5,000の同時ExtractおよびReplicatグループをサポートします。サポートされているレベルで、INFO、STATUSなどのGGSCIコマンドですべてのグループを完全に制御および表示できます。Oracle GoldenGateでは、環境を効果的に管理するために、ExtractおよびReplicatグループの数(合計)をデフォルト・レベルの300以下に保つことが推奨されます。

最高のパフォーマンスを得るためのOracle GoldenGate構成の詳細は、「Oracle GoldenGateのパフォーマンスのチューニング」を参照してください。

14.1.1 初期同期

この章の手順に従って変更同期グループおよび証跡を構成したら、初期ロードによるOracle GoldenGateのインスタンス化を参照して同期用のターゲット表を準備します。初期ロードによって、ソース表全体がコピーされ、必要に応じてデータが変換され、トランザクション・データの移動が同期状態から開始されるようにデータがターゲット表に適用されます。変更同期を最初に開始するのは、初期同期プロセス中である必要があります。変更同期によって、ロードが適用されている間、進行中のトランザクション変更が追跡されます。

14.2 プロセスとファイルの名前の選択

構成手順を開始する前に、Oracle GoldenGateのプロセスとファイルの一貫したネーミング規則を作成すると便利です。意味のある名前を選択すると、ディスプレイ、エラー・ログおよび外部監視プログラムで複数のプロセスやファイルを区別するのに役立ちます。また、環境の変更や拡張に応じて後でプロセスやファイルを追加する際の命名にも対応します。この項では、次の点について説明します。

- プロセスのネーミング規則

- ファイル名の選択

14.2.1 プロセスのネーミング規則

プロセス名またはグループ名を指定する場合、次のルールに従います。

- 次のタイプのプロセスでは最大8文字を使用できます。アンダースコア(_)などの英数字以外の文字も含めることができます。

- オンラインExtractグループ

- 初期ロードExtract

- クラシック(未調整)モードで作成されたオンラインReplicatグループ

- 統合モードで作成されたオンラインReplicatグループ(Oracleのみ)

- 調整Replicatプロセス・グループでは最大5文字を使用できます。アンダースコア(_)などの英数字以外の文字も含めることができます。内部的には、ADD REPLICATコマンドのMAXTHREADSオプションに基づいて作成される各スレッドのベース名に、3文字のスレッドIDが追加されます。作成される名前は、他のReplicatグループに対して重複させることはできません。たとえば、名前がfinで、MAXTHREADSが50スレッドである調整Replicatグループが作成された場合、作成されるスレッド名はfin000からfin050になります(MAP文で指定されたIDであるとします)。この場合、fin000からfin0050までの名前を他のReplicatグループは使用できません。詳細は、次のルールを参照してください。

- グループ名には数値を含めることができますが、数字で終わる名前はお薦めできません。レポート生成時に書込みプロセスによってグループ名の末尾に数値が追加されるため、グループ名の末尾に数値を使用すると(fin1など)、レポート・ファイル名の重複やエラーの原因になります。また、Replicatを調整モードで実行している場合、数値で終わるグループ名はお薦めできません。内部的に数値のスレッドIDがグループ名に追加されるため、ベース・グループ名も数字で終わる場合、情報コマンドの出力の解析が困難になります。数字を付加した結果がワイルドカードに適合すると、スレッド名を他のReplicatグループの名前と混同する可能性があります。レポート・ファイル名の重複が起こる可能性もあります。グループ名の始めに数値を配置する方が(たとえば1_fin、1finなど)、より実際的です。

- ローカル・オペレーティング・システムのキャラクタ・セットでサポートされ、オペレーティング・システムでファイル名での使用が許可されているかぎり、プロセスの名前には任意の文字を使用できます。この理由は、グループがその関連するチェックポイント・ファイルとパラメータ・ファイルで識別されるためです。

- 次の文字は、グループ名に使用できません。

{\ / : * ? " < > | }

- HP UX、LinuxおよびSolarisでは、コロン(:)またはアスタリスク(*)を使用してファイル名を指定できますが、推奨はされません。

- 一般的に、Oracle GoldenGate内では、プロセス名とパラメータ・ファイル名の大/小文字は区別されません。たとえば、finance、FinanceおよびFINANCEは、すべて同じであるとみなされます。ただし、Linuxでは、プロセス名(およびADDコマンドで明示的に定義される場合はそのパラメータ・ファイル名)はすべて大文字またはすべて小文字である必要があります。プロセスおよびパラメータ・ファイルに指定された名前に大文字と小文字が混在していると、プロセスの起動時にエラーが発生します。

- 名前には、1語のみ使用してください。

- プロセスまたはパラメータ・ファイルのフル・ネームにportという語は使用しないでください。ただし、名前の一部にportという文字列があってもかまいません。

14.2.2 ファイル名の選択

キャプチャされたデータは、次のOracle GoldenGateプロセス・ダウンストリームによって処理されるための格納場所である、証跡と呼ばれる一連のファイルへと格納される必要があります。基本的な構成は次のとおりです。

- ソース・システムのローカル証跡

- ターゲット・システムのリモート証跡

実際の証跡名には、./dirdat/trのように2文字のみが含まれます。新規ファイルが作成される際、Oracle GoldenGateによってこの名前に9桁の順序番号が付加され、./dirdat/aa000000002のようになります。証跡はOracle GoldenGateプロセスにリンクされており、トラブルシューティングの目的で識別が必要になる場合があるので、そのネーミング規則を確立しておくことをお薦めします。

Windowsシステムでは、証跡パス名のディレクトリの名前が数字で始まる場合、パラメータ・ファイル内に証跡をリストするときに、そのパスをバックスラッシュでなくスラッシュで指定する必要があります。詳細は、「Windowsシステムでのパラメータ・ファイルでのファイルシステム・パス名の指定」を参照してください

Oracle GoldenGate証跡の詳細は、「証跡の概要」を参照してください。

14.3 チェックポイント表の作成

Replicatは、予期される停止または予期されない停止の後に処理を開始する基準となる証跡内の既知の位置を指定するチェックポイントを管理します。チェックポイントのレコードを格納するために、Replicatはターゲット・データベースのチェックポイント表を使用します。これにより、ReplicatのチェックポイントをReplicatトランザクション自体に含めることができるため、Replicatプロセスまたはデータベース・プロセスに障害が発生した場合でも、トランザクションは一度しか適用されません。不要になった行は削除されるため、チェックポイント表のサイズは小さく抑えられ、データベース・パフォーマンスには影響しません。チェックポイント表の詳細は、チェックポイントについてを参照してください。

14.3.1 チェックポイント表作成のオプション

チェックポイント表は任意のスキーマに配置できます。可能であれば、Oracle GoldenGate専用のものを使用してください。

Oracle GoldenGateの複数のインスタンス(複数インストール)は同じチェックポイント表を使用できます。Oracle GoldenGateは、異なるインスタンスでReplicatグループの名前が同じであっても、チェックポイントを追跡します。

必要に応じて複数のチェックポイント表を使用できます。たとえば、Replicatグループごとに異なるものを使用できます。

チェックポイント表は次の方法でインストールできます。

- GLOBALSファイルにデフォルトのチェックポイント表を指定できます。ADD REPLICATコマンドを使用して作成された新規Replicatグループは、特別な指示がなくてもこの表を自動的に使用します。手順は、GLOBALSファイルにデフォルトのチェックポイント表を指定する手順を参照してください。

- 任意のReplicatグループを作成する際に、ADD REPLICATコマンドで、次のように特定のチェックポイント表の指示を指定できます。

- グループで特定のチェックポイント表を使用するには、ADD REPLICATのCHECKPOINTTABLE引数を使用します。このチェックポイント表は、GLOBALSファイルのすべてのデフォルトの指定よりも優先されます。ただ1つのReplicatグループを使用する場合、このコマンドを使用して、GLOBALSファイルの作成を完全に省略できます。

- グループでチェックポイント表の使用を省略するには、ADD REPLICATのNODBCHECKPOINT引数を使用します。チェックポイント表がない場合でも、チェックポイントはReplicatによりディスク上のチェックポイント・ファイルに保持されますが、データの一貫性を失うリスクが生じます。

チェックポイント表の実装方法にかかわらず、ADD REPLICATコマンドを使用する前に、ターゲット・データベースにチェックポイント表を作成しておく必要があります。

ターゲット・データベースにチェックポイント表を追加する手順

GGSCIを通じてチェックポイント表を作成する次の手順は、かわりにchkpt_db_create.sqlスクリプト(dbはデータベース・タイプの略称)を実行することで省略できます。このスクリプトを使用することで、カスタム記憶域または他の属性を指定できます。この表の列の名前または属性は変更しないでください。

1. Oracle GoldenGateディレクトリから、GGSCIを実行してDBLOGINコマンドを発行し、データベースにログインします。このコマンドを発行するユーザーは、CREATE TABLE権限を持っている必要があります。データベースで使用する正しい構文の詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

2. GGSCIで、次のコマンドを発行してデータベースにチェックポイント表を追加します。

ADD CHECKPOINTTABLE [container | catalog] owner.table

説明:

owner.tableは表の所有者と名前、containerはOracleにマルチテナント・コンテナ・データベースをインストールする場合のPDBの名前、catalogはSQL/MXデータベースにインストールする場合のカタログの名前です。この表をデフォルトのチェックポイント表として使用し、GLOBALSファイルのCHECKPOINTTABLEで指定する場合、所有者および名前は省略できます。この表の名前は、データベースでオブジェクト名に対して許容される最大長を超えてはなりません。チェックポイント表の名前には、引用符、バックスラッシュ、番号記号などの特殊文字を含めることはできません。

GLOBALSファイルにデフォルトのチェックポイント表を指定する手順

この手順は、Oracle GoldenGateインスタンスにおけるすべてのチェックポイント表のグローバル名を指定します。Replicatグループの作成時に異なるチェックポイント表を指定することによって、任意のReplicatグループに対してこの名前をオーバーライドできます。

1. GLOBALSファイルを作成します(または、既存のファイルがある場合はこれを編集します)。UNIXまたはLinuxシステムでは、ファイル名はすべて大文字とし、ファイル拡張子を付けずにOracle GoldenGateのルート・ディレクトリに配置する必要があります。ASCIIテキスト・エディタを使用して、前述のネーミング規則に従ってファイルを作成します。または、GGSCIを使用してファイルを作成すると、自動的に正しい名前と場所を使用して保存されます。GGSCIを使用する場合、次のコマンドを使用します(GLOBALSは大文字で入力します)。

EDIT PARAMS ./GLOBALS

2. 次のパラメータを入力します。

CHECKPOINTTABLE [container. | catalog.]owner.table

説明:

[catalog. | container.]owner.tableはデフォルト・チェックポイント表の完全修飾名です。データベースがOracleマルチテナント・コンテナ・データベース(CDB)の場合はコンテナの名前を、データベースがSQL/MXの場合はカタログの名前を含みます。

3. 表の名前を書き留め、GLOBALSファイルを保存して閉じます。ファイルがOracle GoldenGateのルート・ディレクトリに作成されたことを確認します。ファイル拡張子がある場合は、拡張子を削除します。

14.3.2 Oracle RACにおける調整Replicatへの対応

チェックポイント表の作成対象のReplicatがOracle RAC構成で実行される場合、Replicatチェックポイント表のPCTFREE属性をできるだけ高い値、可能なら90に増やすことをお薦めします。これにより、調整処理で必要になる、頻繁なチェックポイント化に対応できます。この変更は、Replicatグループを初めて開始する前に行う必要があります。調整Replicatの詳細は、「オンラインReplicatグループの作成」を参照してください。

14.4 オンラインExtractグループの作成

オンラインExtractグループを作成するには、ソース・システムでGGSCIを実行し、ADD EXTRACTコマンドを発行します。コマンド引数はすべてカンマで区切ります。構文には、次の2つの形態があります。

- 標準、パッシブまたはデータ・ポンプExtractグループを作成するための構文

- 別名Extractグループを作成するための構文

標準、パッシブまたはデータ・ポンプExtractグループを作成するための構文

ADD EXTRACT group
{, datasource}
{, BEGIN start_point} | {position_point}
[, PASSIVE]
[, THREADS n]
[, PARAMS pathname]
[, REPORT pathname]
[, DESC 'description']

説明:

- groupは、Extractグループの名前です。グループ名は必須です。ネーミング規則の詳細は、「プロセスのネーミング規則」を参照してください。

- datasourceは、抽出するデータのソースを指定する場合に必要です。次のいずれかを使用します。

- TRANLOGでは、データソースとしてトランザクション・ログを指定します。Teradata以外のすべてのデータベースで使用します。Oracle Enterprise Editionでこのオプションを使用する場合は、ADD EXTRACTを使用する前に(かつ、DELETE EXTRACTを発行してExtractグループを削除する前に)、Extractデータベース・ユーザー(または同じ権限を持つユーザー)としてDBLOGINコマンドを発行する必要があります。
z/OS上で稼働するDB2では、bsdsオプションを使用して、トランザクション・ログのブートストラップ・データセットのファイル名を指定します。データベースで使用する正しい構文の詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

- INTEGRATED TRANLOGでは、このExtractが統合キャプチャ・モードで動作して、Oracleデータベース・ログマイニング・サーバーから論理変更レコード(LCR)を受信することを指定します。このパラメータは、Oracleデータベースにのみ適用されます。その他のオプションと統合キャプチャの使用の詳細は、Oracle DatabaseのためのOracle GoldenGateのインストールおよび構成を参照してください。

- VAMでは、ベンダー・アクセス・モジュール(VAM)と呼ばれるExtract APIを指定します。Teradataの場合は、Teradata Access Module (TAM)とのインタフェースになります。InformixおよびTeradataデータベースで使用します。詳細は、Oracle GoldenGate Oracle GoldenGate for Informixのインストールおよび構成またはTeradataのためのOracle GoldenGateのインストールおよび構成を参照してください。

- VAMTRAILSOURCE VAM trail nameでは、VAM証跡を指定します。最大保護モードのTeradata抽出でVAMソートExtractグループを作成する場合に使用します。詳細は、TeradataのためのOracle GoldenGateのインストールおよび構成を参照してください。

- EXTTRAILSOURCE trail nameでは、ローカル証跡の相対名または完全修飾名を指定します。データ・ポンプを作成する場合に使用します。データ・ポンプは、Oracle GoldenGateの任意の抽出方法と組み合せて使用できます。

- BEGIN start_pointでは、処理のための初期チェックポイントおよび開始ポイントを確定してオンラインExtractグループを定義します。このポイントより前に開始されたトランザクションは、破棄されます。次のいずれかを使用します。

- NOWは、グループを作成するためにADD EXTRACTコマンドが実行された時点(統合モードのOracle Extractの場合は、REGISTER EXTRACTコマンドでグループが登録された時点から)のタイムスタンプが指定された変更の抽出を開始します。ADD EXTRACT文よりも前にOracle GoldenGateの証跡に取得されたデータを回避しない場合は、データ・ポンプExtractにNOWを使用しないでください。
この開始ポイントはInformixでサポートされておらず、使用されている場合、ポジショニングはトランザクション・ログのEOFから開始するため、LSNポジショニングをInformix Extractに使用することをお薦めします。

- YYYY-MM-DD HH:MM[:SS[.CCCCCC ]]は、開始ポイントとして正確なタイムスタンプを指定するための書式です。レプリケーションまたはロギングが有効化された時点より後の開始ポイントを使用してください。

注意:

TeradataソースにはBEGINパラメータを使用しないでください。

- position_pointでは、特定のトランザクション・ログ・ファイル内で処理を開始する特定の位置を指定します。データベースで使用する特定の構文は、Oracle GoldenGateリファレンスfor Windows and UNIXのADD EXTRACTの説明を参照してください。

- PASSIVEでは、グループがパッシブExtractであることを示します。PASSIVEを使用する場合、別名Extractも使用する必要があります。詳細は、「Oracle GoldenGateのセキュリティの構成」を参照してください。このオプションは、他のADD EXTRACTオプション内に任意の順序で配置できます。

- THREADS nは、ExtractがOracle Real Application Cluster (RAC)におけるクラシック・キャプチャ・モードで動作している場合に必要です。クラスタで使用するREDOログ・スレッドの数を指定します。

- PARAMS pathnameは、このグループのパラメータ・ファイルをOracle GoldenGateディレクトリのdirprmサブディレクトリ以外の場所に格納する場合に必要です。完全修飾名を指定します。デフォルトの場所をお薦めします。

- REPORT pathnameは、このグループのプロセス・レポートをOracle GoldenGateディレクトリのdirrptサブディレクトリ以外の場所に格納する場合に必要です。完全修飾名を指定します。デフォルトの場所をお薦めします。

- DESC 'description'では、グループの説明を指定します。

別名Extractグループを作成するための構文

ADD EXTRACT group
, RMTHOST {host | IP address}
, {MGRPORT port} | {PORT port}
[, RMTNAME name]
[, DESC 'description']

説明:

- RMTHOSTでは、このグループをエイリアスExtractとして識別し、リモート・ホストのDNS名またはそのIPアドレスを指定します。

- MGRPORTでは、Managerが稼働しているリモート・システムのポートを指定します。動的Collectorを使用する場合、このオプションを使用します。

- PORTでは、静的Collectorのポートを指定します。静的Collectorを実行する場合にのみ、MGRPORTのかわりに使用します。

- RMTNAMEでは、パッシブExtractの名前を指定します(別名Extractの名前と異なる場合)。

- DESC 'description'では、グループの説明を指定します。

例14-1 ログベース取得のためのExtractグループの追加

この例では、financeというExtractグループを作成します。抽出は、グループの作成時点に生成されたレコードから開始します。

ADD EXTRACT finance, TRANLOG, BEGIN NOW

例14-2 TeradataのためのプライマリExtractグループの追加

この例では、Teradata最大パフォーマンス・モードまたはTeradata最大保護モードで実行されるfinanceというExtractグループを作成します。Teradataソースには、BEGINポイントを使用しません。

ADD EXTRACT finance, VAM

例14-3 TeradataのためのVAMソートExtractグループの追加

この例では、financeというVAMソートExtractグループを作成します。プロセスは、VAM証跡の/ggs/dirdat/vtから読取りを行います。

ADD EXTRACT finance, VAMTRAILSOURCE /ggs/dirdat/vt

例14-4 データ・ポンプExtractグループの追加

この例では、financeというデータ・ポンプExtractグループを作成します。このグループは、Oracle GoldenGate証跡のc:\ggs\dirdat\ltから読取りを行います。

ADD EXTRACT finance, EXTTRAILSOURCE c:\ggs\dirdat\lt

例14-5 パッシブExtractグループの追加

この例では、financeというパッシブExtractグループを作成します。抽出は、グループの作成時点に生成されたレコードから開始します。このグループはパッシブとしてマークされるため、ターゲットの別名ExtractがこのExtractへの接続を開始します。

ADD EXTRACT finance, TRANLOG, BEGIN NOW, PASSIVE

例14-6 パッシブ・データ・ポンプExtractグループの追加

この例では、financeというデータ・ポンプExtractグループを作成します。これは、Oracle GoldenGate証跡のc:\ggs\dirdat\ltから読取りを行うパッシブ・データ・ポンプExtractです。このデータ・ポンプはパッシブとしてマークされるため、ターゲットの別名Extractがこのデータ・ポンプへの接続を開始します。

ADD EXTRACT finance, EXTTRAILSOURCE c:\ggs\dirdat\lt, PASSIVE

例14-7 別名Extractグループの追加

この例では、aliasという別名Extractグループを作成します。

ADD EXTRACT alias, RMTHOST sysA, MGRPORT 7800, RMTNAME finance

例14-8 Oracleのための統合モードでのプライマリExtractの追加

この例では、Oracleソース・データベース用に統合キャプチャ・モードでExtractを作成し、開始ポイントを、ExtractグループがREGISTER EXTRACTコマンドによってOracleデータベースに登録された時刻に設定します。統合キャプチャは、Oracleデータベースに対してのみ使用できます。

ADD EXTRACT finance INTEGRATED TRANLOG, BEGIN NOW

14.5 証跡の作成

データを抽出したら、処理して1つ以上の証跡に格納する必要があります。証跡では、別のOracle GoldenGateプロセスによって処理するためにデータが格納されます。証跡は、必要に応じて作成およびエージングされる一連のファイルです。証跡を読み取るプロセスには、次のものがあります。

- VAMソートExtract: VAM証跡として作成されたローカル証跡から抽出します(Teradataソース・データベース用)。詳細は、TeradataのためのOracle GoldenGateのインストールおよび構成を参照してください。

- データ・ポンプExtract: 後続の処理のために必要に応じてローカル証跡からデータを抽出し、そのデータをターゲット・システムに転送します。

- Replicat: 証跡を読み取って変更データをターゲット・データベースに適用します。

複数の証跡を作成し、異なる表またはアプリケーションのデータを分けたり、カスケード・トポロジなどの特定のレプリケーション・トポロジの要件に適合させることができます。TABLE文で指定した表を、Extractパラメータ・ファイルのEXTTRAILまたはRMTTRAILパラメータ文で指定した証跡にリンクします。Oracle GoldenGate証跡の概念の詳細は、「証跡の概要」を参照してください。

14.5.1 Oracle GoldenGate証跡の記憶域の割当て

通常の構成では、少なくともソース・システムに1つ、ターゲット・システムに1つの証跡があります。次の点を考慮に入れ、十分なディスク領域を割り当てます。

- プライマリExtractプロセスは、ソース・データベースからトランザクション・データを取得し、ローカル証跡に書き込みます。データ・ポンプExtractは、その証跡を読み取り、データをネットワーク経由でターゲットのリモート証跡に転送します。ネットワークに障害があると、データ・ポンプは失敗しますが、プライマリExtractによるローカル証跡へのデータの処理は続けられます。累積していくデータを格納するのに十分なディスク領域がある必要があります。そうでないと、プライマリExtractが異常終了します。

- ターゲットの場所にある証跡の場合、PURGEOLDEXTRACTSパラメータで設定された消去ルールに従ってデータの累積を処理するのに十分なディスク領域を用意します。PURGEOLDEXTRACTSを使用しても、ターゲット・データベースへの適用よりもネットワーク経由の転送の方が速いため、データはターゲットに常に累積します。

証跡アクティビティがビジネス・アプリケーションによって干渉されないようにするには、別個のディスクまたはファイル・システムを割り当てて証跡ファイルを含めます。証跡ファイルは、Oracle GoldenGateインストールのローカル・ドライブに配置することも、NASまたはSANデバイスに配置することもできます。Oracleクラスタでは、ASMまたはDBFS記憶域に配置できます。

14.5.2 証跡用の領域の見積り

Oracle GoldenGate証跡データの格納に必要になるディスク領域を見積もるためのガイドラインを次に示します。

1. ネットワークが使用できない可能性のある最長の時間を見積もります。考えられる最長の停止時間に対応するのに十分なデータを格納するよう計画します。そうしないと、停止時間がディスク容量より長くなった場合にソースとターゲットのデータを再同期化する必要があります。

2. ビジネス・アプリケーションで1時間に生成されるトランザクション・ログのボリュームを見積もります。

3. 次の式を使用して、必要なディスク領域を計算します。

[1時間当たりのログ・ボリューム] x [停止時間] x .4 = 証跡のディスク領域

Oracle GoldenGateで必要なトランザクション・ログのデータは40パーセントのみのため、この式では40パーセントという乗数を使用します。

注意:

この式は控えめな見積りです。Oracle GoldenGateの構成後、テストを実行し、必要な領域を正確に割り出します。

14.5.3 証跡の追加

証跡を作成または追加する際、ディスクにファイルを物理的に作成しません。ファイルはExtractプロセスによって自動的に作成されます。証跡の名前を指定し、その証跡に書き込むExtractグループに割り当てます。

証跡を追加するには、ソース・システムのGGSCIで、次のコマンドを発行します。

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

説明:

- RMTTRAILでは、リモート・システムの証跡を指定します。

- EXTTRAILでは、ローカル・システムの証跡を指定します。

- EXTTRAILは、PASSIVEモードのExtractには使用できません。

- EXTTRAILは、データ・ポンプによって読み取られるローカル証跡を指定する場合、またはTeradataアクセス・モジュール(TAM)と相互作用するプライマリExtractにリンクされたVAM証跡を指定する場合に使用する必要があります。Teradata構成の詳細は、TeradataのためのOracle GoldenGateのインストールおよび構成を参照してください。

- pathnameは、2文字の名前(任意の2つの英数字)を含む証跡の相対名または完全修飾名です(c:\ggs\dirdat\rtなど)。Oracle GoldenGateでは、処理時の作成順に、各証跡ファイルにシリアル番号が追加されます。通常、証跡は、Oracle GoldenGateディレクトリのdirdatサブディレクトリに格納されます。

- EXTRACT groupは、この証跡に書込みを行うExtractグループの名前です。1つのExtractグループのみが、証跡に書き込むことができます。

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

例14-9 VAM証跡

この例では、Extractグループのextvamに対して/ggs/dirdat/vtというVAM証跡を作成します。

ADD EXTTRAIL /ggs/dirdat/vt, EXTRACT extvam

例14-10 ローカル証跡

この例では、Extractグループのextに対して/ggs/dirdat/ltというローカル証跡を作成します。

ADD EXTTRAIL /ggs/dirdat/lt, EXTRACT ext

例14-11 証跡の作成

この例では、Extractグループのfinanceに対して、各ファイル・サイズを約50MBとしてc:\ggs\dirdat\rtという証跡を作成します。

ADD RMTTRAIL c:\ggs\dirdat\rt, EXTRACT finance, MEGABYTES 200

14.6 オンライン抽出用のパラメータ・ファイルの作成

次の手順に従って、オンラインExtractグループのパラメータ・ファイルを作成します。パラメータ・ファイルは、別名Extractグループには必要ありません。別名Extractグループの使用方法の詳細は、Oracle GoldenGateのセキュリティの構成を参照してください。

1. ソース・システムのGGSCIで、次のコマンドを発行します。

EDIT PARAMS name

説明:

nameは、ADD EXTRACTコマンドで作成したExtractグループの名前です。または、グループの作成時に代替の場所を定義した場合は、パラメータ・ファイルの完全修飾名です。

2. 表14-1にリストされている順序でパラメータを入力します。パラメータ文ごとに新規行を開始します。一部のパラメータは、特定の構成にのみ適用されます。

表14-1 オンライン変更抽出のパラメータ

パラメータ

説明

EXTRACT group

- groupは、ADD EXTRACTコマンドで作成したExtractグループの名前です。

Extractは、チェックポイント付きのオンライン・プロセスとして構成します。

[SOURCEDB dsn | container | catalog]
[, USERIDALIAS alias options |
, USERID user, options]

データベース接続情報を指定します。

SOURCEDBには、ソースのデータソース名(DSN)またはSQL/MXカタログを指定します。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

USERIDとUSERIDALIASで、必要に応じてデータベース資格証明を指定します。セキュリティ・オプションの詳細は、Oracle GoldenGateのセキュリティの構成を参照してください。

データベース接続は、グループがデータベースの存在しない中間システム上のデータ・ポンプである場合には省略できます。この場合、列マッピングまたは変換は実行されません。

RMTHOSTOPTIONS host,
MGRPORT port,
[, ENCRYPT algorithm KEYNAME key_name]

ターゲット・システム、Managerが稼働しているポート、およびTCP/IP経由でのデータ暗号化(オプション)を指定します。IPを通じてリモート・システムにデータを送信する場合にのみ必要です(ADD RMTTRAILを使用して証跡を作成した場合)。証跡がローカル・システムに存在する場合には、必要ありません(ADD EXTTRAILを使用した場合)。セキュリティ・オプションの詳細は、Oracle GoldenGateのセキュリティの構成を参照してください。

Teradataアクセス・モジュールとのインタフェースになり、VAM証跡に書込みを行うプライマリExtractグループには無効です。詳細は、TeradataのためのOracle GoldenGateのインストールおよび構成を参照してください。

パッシブExtractグループにも無効です。

ENCRYPTTRAIL algorithm

このエントリの後に指定した証跡がすべて暗号化されます。セキュリティ・オプションの詳細は、Oracle GoldenGateのセキュリティの構成を参照してください。

DECRYPTTRAIL

(データ・ポンプの場合)入力証跡のデータを復号化します。出力証跡へ書き込む前にデータ・ポンプがデータを処理する必要がある場合にのみ使用します。セキュリティ・オプションの詳細は、Oracle GoldenGateのセキュリティの構成を参照してください。

RMTTRAIL pathname |
EXTTRAIL pathname

- RMTTRAILを使用して、ADD RMTTRAILコマンドで作成されたリモート証跡の相対名または完全修飾名を指定します。

- EXTTRAILを使用して、ADD EXTTRAILコマンドで作成された(データ・ポンプまたはVAMソートExtractによって読み取られる)ローカル証跡の相対名または完全修飾名を指定します。

証跡を指定します。複数の証跡を指定する場合、適切なTABLE文を各指定の後に続けます。

EXTTRAILは、パッシブExtractグループには無効です。

証跡またはファイルのバージョンが異なる場合、RMTTRAILまたはEXTTRAILのFORMATオプションを使用します。詳細は、『Oracle GoldenGate for Windows and UNIXリファレンス』を参照してください。

DSOPTIONS {
COMMITTEDTRANLOG, RESTARTAPPEND |
CREATETRANLOG |
SORTTRANLOG
}

Teradata抽出にのみ有効です。

- COMMITTEDTRANLOG、RESTART APPENDを使用して、ExtractによってTeradata最大パフォーマンス・モードで完全コミット済データを受信することを示します。RESTARTAPPENDでは、以前の実行からデータを再書込みするのではなく、Oracle GoldenGate証跡の最後にデータを追加します。

- CREATETRANLOGを使用して、ローカルVAM証跡を作成してTeradata最大保護モードでそこに書き込むことをExtractに指示します。Teradataアクセス・モジュールとのインタフェースになるプライマリExtractグループで使用します。

- SORTTRANLOGを使用して、ExtractによってローカルVAM証跡から読取りを行い、最大保護モードでコミット順にデータをソートします。VAMソートExtractグループにのみ使用します。

Teradata構成の詳細は、TeradataのためのOracle GoldenGateのインストールおよび構成を参照してください。

LOGALLSUPCOLS

Oracleターゲットに対して統合Replicatを使用する場合、または競合検出および解決(CDR)のサポートを使用する場合に使用します。スケジューリング列のビフォア・イメージを証跡に書き込みます。(スケジューリング列は、主キー、一意索引および外部キー列です。)統合Replicatの構成の詳細は、Oracle DatabaseのためのOracle GoldenGateのインストールおよび構成を参照してください。LOGALLSUPCOLSの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

VAM library,
PARAMS ('param'
[, 'param'] [, ...])

Teradataアクセス・モジュールとのインタフェースになるExtractグループにのみ有効です。Oracle GoldenGate APIに渡す必要のあるライブラリの名前およびパラメータを指定します。たとえば、TAM初期化ファイルの名前や、コールバック・ライブラリとして使用するライブラリとのインタフェースになるプログラムなどです。

例:

VAM vam.dll, PARAMS ('inifile', 'vamerge1.ini', 'callbacklib', 'extract.exe')

Teradata VAMおよびTAMの詳細は、TeradataのためのOracle GoldenGateのインストールおよび構成を参照してください。

SOURCECATALOG

以降のTABLE文またはSEQUENCE文に対して、Oracleマルチテナント・コンテナ・データベースまたはデフォルトSQL/MXカタログ内のデフォルト・コンテナを指定します。それらのデータベースに対して3つの部分からなる名前が必要とされる場合に、2つの部分からなる名前(schema.object)を使用できるようにします。このパラメータのインスタンスを複数使用すると、TABLEまたはSEQUENCEのパラメータの異なる組合せに対して、異なるデフォルト・コンテナまたはカタログを指定できます。

SEQUENCE [container.]owner.sequence;

取得するOracleシーケンスの完全修飾名を指定します。データベースがマルチテナント・コンテナ・データベース(CDB)の場合は、コンテナ名を含めます。

TABLE [container. | catalog.]owner.object;

オブジェクトの完全修飾名(複数オブジェクトの場合は完全修飾ワイルドカード表記)を指定します。データベースがOracleマルチテナント・コンテナ・データベースまたはSQL/MXである場合は、SOURCECATALOGが使用されていないかぎり、オブジェクト名にコンテナまたはカタログの名前を含める必要があります。パラメータ・ファイル内のオブジェクト名指定のガイドラインは、「Oracle GoldenGateの入力におけるオブジェクト名の指定」を参照してください。

CATALOGEXCLUDE

SCHEMAEXCLUDE

TABLEEXCLUDE

EXCLUDEWILDCARDOBJECTSONLY

関連付けられたTABLE文のワイルドカード表記から特定のオブジェクトを除外するために、互いに組み合せて使用できるパラメータ。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

3. Oracle GoldenGateリファレンスfor Windows and UNIXにリストされているExtractの適切なオプション・パラメータを入力します。

4. パラメータ・ファイルを保存して閉じます。

14.7 オンラインReplicatグループの作成

Replicatグループを作成する前に、クラシック・モード(Oracle環境では非統合モードとも呼ばれます)、調整モードおよび統合モードのうち、どのReplicatモードが使用環境に適切かを評価する必要があります。

クラシックReplicatモードについて

調整Replicatモードについて

統合Replicatモードについて

14.7.1 クラシックReplicatモードについて

クラシック・モードでは、Replicatは標準SQLを使用してデータをターゲット表に適用する単一スレッド・プロセスです。このモードでは、Replicatは次のように動作します。

- Oracle GoldenGate証跡を読み取ります。

- データのフィルタリング、マッピング、および変換を実行します。

- ソース・データベースのDMLまたはDDLトランザクションを表すSQL文を作成します(コミット順)。

- 指定のターゲット・データベース(たとえばODBCまたはネイティブのデータベース・インタフェース)に対してサポートされているSQLインタフェースを介して、SQLをターゲットに適用します。

図14-1 クラシックReplicat

図14-1に示すように、クラシックReplicatを使用してトランザクションをパラレルに適用できますが、複数のReplicatプロセスにわたってワークロードをパーティション化する必要があります。各Replicatに対してパラメータ・ファイルを作成する必要があります。

任意のオブジェクトに対してクラシック・モードを使用すべきか判断するためには、1つのReplicatグループのオブジェクトが他のいずれかのReplicatグループのオブジェクトに対して、トランザクショナルまたはそれ以外の依存関係を持つことがあるかどうかを判断する必要があります。すべてのワークロードが、複数のReplicatグループにパーティション化されても元のトランザクション原子性を維持できるというわけではありません。たとえば、ワークロードが主キーを定期的に更新する表は、この方法で簡単にパーティション化することはできません。このモードでは、DDLレプリケーション(データベースに対してサポートされている場合)も、アクションが特定のレコードに基づいているような一部のSQLEXECまたはEVENTACTIONS機能の使用も、有効ではありません。

表に外部キーへの依存関係や、主キーに対する更新がない場合は、クラシック・モードが適切である可能性があります。クラシック・モードには、調整モードより少ないオーバーヘッドしか必要ありません。

パラレルReplicatグループの使用方法の詳細は、Oracle GoldenGateのパフォーマンスのチューニングを参照してください。

14.7.2 調整Replicatモードについて

調整モードでは、Replicatは次のように動作します。

- Oracle GoldenGate証跡を読み取ります。

- データのフィルタリング、マッピング、および変換を実行します。

- ソース・データベースのDMLまたはDDLトランザクションを表すSQL文を作成します(コミット順)。

- 指定のターゲット・データベース(たとえばODBCまたはネイティブのデータベース・インタフェース)に対してサポートされているSQLインタフェースを介して、SQLをターゲットに適用します。

クラシック・モードと調整モードの相違点は、調整モードではReplicatがマルチスレッドである点です。単一のReplicatインスタンス内で複数のスレッドが独立に証跡を読み取り、パラレルにトランザクションを適用します。個々のスレッドは割り当てられたワークロードに対するフィルタリング、マッピング、変換、SQL構築およびエラー処理をすべて扱います。coordinatorスレッドは、トランザクションをスレッド間で調整して、スレッド間の依存関係を処理します。

調整Replicatでは、ワークロードのユーザー定義のパーティション化が可能で、大量のトランザクションを同時に適用できます。また、DDLやTHREADRANGEパーティション化を使用した主キー更新などの調整の必要なトランザクションの実行が自動的に調整されます。そのようなトランザクションは、ターゲットでは1つのトランザクションとして完全に同期化されて実行されます。まず、それより前のトランザクションがすべて適用されるのを待機し、このバリア・トランザクションより後のトランザクションはすべて、このバリア・トランザクションが適用されるまで待機します。

1つの調整Replicatに必要なパラメータ・ファイルは、スレッドの数に関係なく1つのみです。MAP文でTHREADまたはTHREADRANGEオプションを使用して、それらのオブジェクトのトランザクションをどのスレッドが処理するかを指定し、Replicatグループを作成するときに、スレッド数の最大値を指定します。

図14-2 調整Replicat

14.7.2.1 バリア・トランザクションについて

バリア・トランザクションは、調整Replicat構成で自動的に管理されます。バリア・トランザクションは、スレッド間での調整を必要とするトランザクションです。たとえば、DDL文、主キーに対する更新を含むトランザクションおよび一部のEVENTACTIONSアクションなどです。

オプションで、MAP文でCOORDINATEDキーワードを使用することで、他のトランザクションを強制的にバリア・トランザクションのように処理できます。この使用例の1つは、SQLEXECを、強制的にシリアル実行に類似した方法で実行する場合です。これは、ターゲットの状態がすべてのトランザクションにわたって整合的でないと結果が一意にならない可能性がある場合に有益です。

14.7.2.2 バリア・トランザクションの処理方式

バリア・トランザクションの開始時点で、すべてのスレッドが収束し、待機します。他のスレッドが開始位置に達するまで、バリア・トランザクションは一時停止されます。いずれかのスレッドがバリア・トランザクションの一部をすでに処理中であった場合、それらのスレッドはロールバックを実行します。グループ化トランザクション(BATCHSQLまたはGROUPTRANSOPSパラメータによって制御されているものなど)も、バリア・トランザクションの開始位置に到達するまでロールバックされ、再適用されます。

バリア・トランザクションの後も、すべてのスレッドが収束し、次のトランザクションの開始を待機します。バリア・トランザクションの前と後の2つの同期ポイントにより、メタデータ操作とEVENTACTIONSアクションがすべて、データ操作に関連する適切な順序で行われることが保証されます。

バリア・トランザクションの開始時点でスレッドが同期すると、バリア・トランザクションは、MAP文で指定されたすべてのスレッドのうちで最も低いスレッドIDを持つスレッドによってシリアルに処理され、複数スレッドにわたるパラレル処理が再開されます。Replicatパラメータ・ファイルでUSEDEDICATEDCOORDINATIONTHREADパラメータを指定することによって、バリア・トランザクションが特定のスレッド(常にスレッド0)を介して処理されるように強制することができます。

14.7.2.3 グローバル水位標について

調整Replicatが正常に停止すると、すべてのスレッドが、グローバル水位標と呼ばれる証跡内の同じトランザクション境界で停止することが保証されます。これは、その位置の前のすべてのレコードがそれぞれのスレッドすべてによりコミットまたは無視される、同期ポイントとして定義されます。正常に停止しない場合は、SYNCHRONIZE REPLICATコマンドを使用すると、すべてのスレッドを、最後のチェックポイントを作成したスレッドの位置に戻すことができます。調整Replicatグループのリカバリの詳細は、異常停止後のスレッドの同期を参照してください。

注意:

調整Replicatは、オンライン・プロセスでしかありません。初期ロードを実行するためには使用しないでください。

14.7.3 統合Replicatモードについて

Replicatは、リリース11.2.0.4以降のOracleデータベースで利用できる統合モードでは、ターゲットOracleデータベース内で利用できる適用処理機能を活用します。このモードでは、Replicatは、証跡を読み取り、ソースのDMLまたはDDLトランザクションを表す論理変更レコードを作成し、それらのレコードをOracleターゲット・データベースのインバウンド・サーバーに送信します。インバウンド・サーバーは、データをターゲット・データベースに適用します。

統合Replicatの使用方法の詳細は、Oracle DatabaseのためのOracle GoldenGateのインストールおよび構成を参照してください。

注意:

統合Replicatは、オンライン・プロセスでしかありません。初期ロードを実行するためには使用しないでください。

14.7.4 パラメータ変更との関係で見たReplicat処理の理解

Replicat構成におけるオブジェクト指定の変更は、すでに適用されたトランザクションではなく、未適用のものにのみ影響が及びます。これは調整Replicatや統合Replicatを使用する場合の重要な考慮事項です。

クラシック・モードのReplicatでは、トランザクションがシリアルに適用されるため、適用済トランザクションと未適用のトランザクションの境界は明瞭です。しかし調整Replicatや統合Replicatでは、トランザクションが非同期でパラレルに適用されるため、証跡内に、適用済トランザクションと未適用のトランザクションを分ける単一のポイントが存在しません。

調整モードや統合モードには、最低水位標(それを下回るトランザクションはすべて適用されます)と、最高水位標(それを上回るトランザクションは適用されません)があります。それらの境界の間に、個々のスレッドの進捗に応じて、適用されている可能性もされていない可能性もあるトランザクションが存在します。その結果、Replicatが強制される場合、Replicatの構成におけるオブジェクト指定の変更が、Replicatの再開後、ターゲット上に不均等に反映される場合があります。これが適用されるパラメータ変更の例は、MAPマッピング、FILTER句およびEXCLUDEのパラメータに対する変更です。

Replicatの構成は、Replicatが異常終了または強制終了された後には変更しないでください。Replicatは、起動の後、最後のチェックポイントにリカバリできるようにしておきます。調整Replicatの場合は、調整Replicat構成の管理の管理手順に従うことができます。リカバリが完了するとSTOP REPLICATコマンドでReplicatを正常に停止できるため、その後でオブジェクト指定を変更できます。

14.7.5 Replicatグループの作成

オンラインReplicatグループを作成するには、ターゲット・システムでGGSCIを実行し、ADD REPLICATコマンドを発行します。コマンド引数はすべてカンマで区切ります。

ADD REPLICAT group, EXTTRAIL path
[, {INTEGRATED | COORDINATED [MAXTHREADS number]}]
[, BEGIN start_point | , EXTSEQNO seqno, EXTRBA rba]
[, CHECKPOINTTABLE owner.table]
[, NODBCHECKPOINT]
[, PARAMS path]
[, REPORT path]

説明:

- groupは、Replicatグループの名前です。グループ名は必須です。Oracle GoldenGateのネーミング規則の詳細は、「プロセスのネーミング規則」を参照してください。

- EXTTRAIL pathは、ADD RMTTRAILコマンドで定義した証跡の相対名または完全修飾名です。

- INTEGRATEDは、このReplicatグループが統合モードで動作することを示しています。このモードは、Oracleデータベースにのみ有効です。統合モードでのReplicatの使用方法の詳細は、Oracle DatabaseのためのOracle GoldenGateのインストールおよび構成を参照してください。

- COORDINATEDは、このReplicatグループが調整モードで動作することを示しています。MAXTHREADSは、このグループで許容されるスレッドの最大数を指定します。有効な値は1から500です。MAXTHREADSはオプションです。MAXTHREADSがない場合のデフォルトのスレッド数は25です。

注意:

各Replicatスレッドは、MAXGROUPSパラメータのコンテキストでは1つのReplicatグループとみなされます。MAXGROUPSでは、Oracle GoldenGateのインスタンスで許容されるプロセス・グループの最大数が制御されます。MAXTHREADSにOracle GoldenGateインスタンス内の他のプロセス・グループの数を加えた値は、MAXGROUPSで設定された値(デフォルトは1000)を超えることはできません。

- BEGIN start_pointでは、処理のための初期チェックポイントおよび開始ポイントを確定してオンラインReplicatグループを定義します。次のいずれかを使用します。

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

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

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

- CHECKPOINTTABLE owner.tableでは、GLOBALSファイルで指定されたデフォルト以外のチェックポイント表の所有者および名前を指定します。この引数を使用するには、ADD CHECKPOINTTABLEコマンドを使用してデータベースにチェックポイント表を追加する必要があります(「チェックポイント表の作成」を参照)。

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

- PARAMS pathは、このグループのパラメータ・ファイルをOracle GoldenGateディレクトリのdirprmサブディレクトリ以外の場所に格納する場合に必要です。完全修飾名を指定します。デフォルトの場所をお薦めします。

- REPORT pathは、このグループのプロセス・レポートをOracle GoldenGateディレクトリのdirrptサブディレクトリ以外の場所に格納する場合に必要です。完全修飾名を指定します。デフォルトの場所をお薦めします。

例14-12 オンラインReplicatグループの作成

この例では、financeという名前のオンラインReplicatグループを作成し、c:\ggs\dirdat\rtという証跡を指定します。このパラメータ・ファイルは、代替場所である\ggs\paramsに格納され、レポート・ファイルはデフォルトの場所に格納されます。

ADD REPLICAT finance, EXTTRAIL c:\ggs\dirdat\rt, PARAMS \ggs\params

14.8 オンライン・レプリケーション用のパラメータ・ファイルの作成

次の手順に従って、オンラインReplicatグループのパラメータ・ファイルを作成します。

1. ターゲット・システムのGGSCIで、次のコマンドを発行します。

EDIT PARAMS name

説明:

nameは、ADD REPLICATコマンドで作成したReplicatグループの名前です。または、グループの作成時に代替の場所を定義した場合は、パラメータ・ファイルの完全修飾名です。

2. 表14-2にリストされている順序でパラメータを入力します。パラメータ文ごとに新規行を開始します。

表14-2 オンライン変更レプリケーションのパラメータ

パラメータ

説明

REPLICAT group

- groupは、ADD REPLICATコマンドで作成したReplicatグループの名前です。

Replicatは、チェックポイント付きのオンライン・プロセスとして構成します。

{SOURCEDEFS path} |
ASSUMETARGETDEFS

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

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

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

マルチバイト・キャラクタ・セットを使用するOracle Databaseでは、ソースのセマンティクス設定がバイトでターゲットの設定が文字の場合、(DEFGENで生成された定義ファイルとともに)SOURCEDEFSを使用する必要があります。これは、ソースとターゲットのデータ定義が同一である場合でも必要です。詳細は、メタデータへのレプリケートされたデータの関連付け,を参照してください。

[DEFERAPPLYINTERVAL n unit]

- nは、トランザクション適用前の遅延時間を示す数値です。最小値は、EOFDELAYパラメータによって設定されます。最大値は7日です。

- unitは次のように指定できます。
S | SEC | SECS | SECOND | SECONDS | MIN | MINS | MINUTE | MINUTES | HOUR | HOURS | DAY | DAYS

オプションです。Replicatがターゲット・システムにトランザクションを適用するまでに待機する時間を指定します。

[TARGETDB dsn | container | catalog]
[, USERIDALIAS alias options |
, USERID user, options]

データベース接続情報を指定します。

TARGETDBには、ターゲットのデータソース名(DSN)またはSQL/MXカタログを指定します。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

USERIDとUSERIDALIASで、必要に応じてデータベース資格証明を指定します。セキュリティ・オプションの詳細は、Oracle GoldenGateのセキュリティの構成を参照してください。

HANDLECOLLISIONS

コリジョン処理の指定。開始しているオンライン処理と同時に初期ロードを実行しており、ロード中にソース・データベースがアクティブな状態にとどまる場合にのみ使用します。HANDLECOLLISIONSは、進行中のレプリケート済トランザクション変更を使用して、コピーの結果を解決します。このパラメータは、行がすでに存在する場合の挿入操作や、行が存在しない場合の更新操作および削除操作を解決します。パラメータ・ファイル内のすべてのMAP文に対してグローバルに使用することも、MAP文内で使用することも、その両方で使用することもできます。

SOURCECATALOG

以降のMAP文に対して、ソースOracleマルチテナント・コンテナ・データベースまたはソースSQL/MXカタログ内のデフォルト・コンテナを指定します。それらのデータベースに対して3つの部分からなる名前が必要とされる場合に、2つの部分からなる名前(schema.object)を使用できるようにします。このパラメータのインスタンスを複数使用すると、MAPのパラメータの異なる組合せに対して、異なるデフォルト・コンテナまたはカタログを指定できます。

MAP [container. | catalog.]owner.object,
TARGET owner.object[, DEF template]
[THREAD (thread_ID)]
[THREADRANGE (thread_range[, column_list])]
[COORDINATED]
;

単一または複数のソース・オブジェクトと、単一または複数のターゲット・オブジェクトの関係を指定します。MAPにはソース・オブジェクトを指定し、TARGETにはターゲット・オブジェクトを指定します。

ソース・オブジェクトに対して、オブジェクトの完全修飾名(複数オブジェクトの場合は完全修飾ワイルドカード表記)を指定します。Oracleマルチテナント・コンテナ・データベースまたはSQL/MXデータベースの場合、SOURCECATALOGが使用されていないかぎり、ソース・オブジェクト名にコンテナまたはカタログの名前を含める必要があります。

ターゲット・オブジェクトに対しては、データベースのタイプに関係なく、名前のowner.objectコンポーネントだけを指定します。Replicatは1つのOracleコンテナまたはSQL/MXカタログにのみ接続できます。データを適用する各コンテナまたはカタログごとに、別々のReplicatプロセスを使用してください。

パラメータ・ファイル内のオブジェクト名指定のガイドラインは、Oracle GoldenGateの入力におけるオブジェクト名の指定を参照してください。

調整モードでは、THREAD、THREADRANGEおよびCOORDINATEDの各オプションがReplicatに対して有効です。それにより、1つ以上の特定のReplicatスレッドにワークロードをパーティション化できるようになります。構文と使用方法の詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

DEFオプションは、定義テンプレートを指定します。データ定義の詳細は、「メタデータへのレプリケートされたデータの関連付け」を参照してください。MAPパラメータの追加情報とオプションの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

CATALOGEXCLUDE

SCHEMAEXCLUDE

MAPEXCLUDE

EXCLUDEWILDCARDOBJECTSONLY

関連付けられたMAP文のワイルドカード表記から特定のソース・オブジェクトを除外するために、互いに組み合せて使用できるパラメータ。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

1. Oracle GoldenGateリファレンスfor Windows and UNIXにリストされているReplicatの適切なオプション・パラメータを入力します。

2. ファイルを保存して閉じます。

注意:

Oracleに対して統合Replicatを使用する場合は、処理開始後のReplicatへの構成変更に関する重要情報を、「パラメータ変更との関係で見たReplicat処理の理解」で確認してください。

15 処理エラーへの対処

この章では、エラーを処理するためのOracle GoldenGateプロセスの構成方法について説明します。

Oracle GoldenGateでは、処理エラーは監視ツールおよびレポート・ツールによって複数の方法でレポートされます。これらのツールの詳細は、Oracle GoldenGate処理の監視を参照してください。

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

- Oracle GoldenGateのエラー処理の概要

- Extractエラーの処理

- DML操作中のReplicatエラーの処理

- DDL操作中のReplicatエラーの処理

- TCP/IPエラーの処理

- 更新されたエラー・メッセージの管理

- Oracle GoldenGateエラーの解決

15.1 Oracle GoldenGateのエラー処理の概要

Oracle GoldenGateでは、次の構成要素にエラー処理オプションが提供されます。

- Extract

- Replicat

- TCP/IP

15.2 Extractエラーの処理

DML操作が抽出される場合のExtractエラーを処理する特定のパラメータはありませんが、Extractには、予測される問題を防止するために使用できる多くのパラメータがあります。これらのパラメータによって、DML操作の処理中に発生する可能性のある異常状態を処理します(たとえば、フェッチする行を特定できない場合の処理や、トランザクション・ログを使用できない場合の処理など)。次に、これらのパラメータの一部をリストします。

- FETCHOPTIONS

- WARNLONGTRANS

- DBOPTIONS

- TRANLOGOPTIONS

DDL操作に関連する抽出エラーを処理するには、DDLERRORパラメータを使用します。

パラメータ・リストの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

15.3 DML操作中のReplicatエラーの処理

いずれかのDML文の処理中に発生したエラーに対するReplicatのレスポンス方法を制御するには、Replicatのパラメータ・ファイルでREPERRORパラメータを使用します。REPERRORは、グローバル・パラメータとして、またはMAP文の一部として使用できます。ほとんどのエラーはDEFAULTオプションおよびDEFAULT2オプションを使用してデフォルトの方法(処理の中止など)で処理し、他のエラーは特定の方法で処理できます。

REPERRORによる各種レスポンスは次のオプションで構成されます。

- ABEND: トランザクションをロールバックして処理を停止します。

- DISCARD: 破棄ファイルにエラーを記録して処理を継続します。

- EXCEPTION: 例外処理のためにエラーを送信します。詳細は、「例外としてのエラーの処理」を参照してください。

- IGNORE: エラーを無視して処理を継続します。

- RETRYOP [MAXRETRIES n]: 操作を再試行します(オプションで最大試行回数を指定できます)。

- TRANSABORT [, MAXRETRIES n] [, DELAY[C]SECS n]: トランザクションを中断して最初の配置に戻します(オプションで最大試行回数とその間隔を指定できます)。

- RESET: 以前のすべてのREPERRORルールを削除し、デフォルトのABENDに戻します。

- TRANSDISCARD: レプリケートされたソース・トランザクション内の操作(コミットなど)が、エラー指定にリストされているReplicatエラーの原因となっている場合に、そのトランザクション全体を破棄します。このオプションは、ターゲットで整合性制約チェックが無効になっている場合に便利です。

- TRANSEXCEPTION: レプリケートされたソース・トランザクション内の操作(コミットなど)が、エラー指定にリストされているReplicatエラーの原因となっている場合に、そのトランザクションのすべてのレコードに対し、例外マッピング文に従って例外マッピングを実行します。

ほとんどのオプションは、エラーを生成した個々のレコードに対して機能し、Replicatは、トランザクション内で成功した他の操作を処理します。ただし、TRANSDISCARDとTRANSEXCEPTIONは例外で、これらのオプションは、トランザクション内のいずれかのレコードがエラーを生成した場合に、そのトランザクション内のすべてのレコードに影響します。(ABENDオプションもトランザクション全体を対象としていますが、エラー処理は適用しません。)

REPERRORの構文と使用方法の詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

15.3.1 例外としてのエラーの処理

REPERRORのアクションがEXCEPTIONまたはTRANSEXCEPTIONである場合、エラーを生成する操作の値を例外表にマップしたり、オプションでエラーの解決に利用可能なその他のエラー情報をマップしたりすることができます。「例外表について」を参照してください。

例外を例外表にマップするには、MAPパラメータの次のオプションのいずれかを使用します。

- MAPでのEXCEPTIONSONLY

- MAPでのMAPEXCEPTION

15.3.1.1 EXCEPTIONSONLYの使用

EXCEPTIONSONLYは、ソース表とターゲット表の1つのペアがMAP文で明示的に指定され、1対1でマップされている場合(つまり、ワイルドカードが使用されていない場合)に有効です。EXCEPTIONSONLYを使用するには、ターゲットでEXCEPTIONSONLYを使用するソース表ごとに、MAP文を2つ作成します。

- 1番目の通常のMAP文によってソース表を実際のターゲット表にマップします。

- 2番目の例外MAP文によってソース表を(ターゲット表ではなく)例外表にマップします。例外MAP文は、ソース表でエラーが発生するとただちに実行され、行の値を例外表に送信します。
MAP文を例外MAP文として指定するには、INSERTALLRECORDSオプションとEXCEPTIONSONLYオプションを使用します。例外MAP文は、同じソース表が含まれる通常のMAP文の直後に配置する必要があります。ソース表と例外表の列が同一でない場合、または例外表の追加の列に追加情報(列変換関数またはSQLEXECで取得した情報など)をマップする場合は、例外MAP文でCOLMAP句を使用します。

これらのパラメータの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

- ソース表のggs.equip_accountをそのターゲット表のequip_account2にマップする通常のMAP文。

- 同じソース表を例外表のggs.equip_account_exceptionにマップする例外MAP文。

この場合、表自体に含まれる同じ列に加え、次の4つの追加列が作成されます。

DML_DATE
OPTYPE
DBERRNUM
DBERRMSG

DML_DATE列にデータを移入するため、@DATENOW列変換関数を使用して失敗した操作の日時を取得し、結果を列にマップします。他の追加列にデータを移入するため、@GETENV関数を使用して操作タイプ、データベース・エラー番号およびデータベース・エラー・メッセージを戻します。

例外MAP文のEXCEPTIONSONLYオプションによって、ソース表に対する操作が失敗した後にのみ文が実行されます。これによって、すべての操作が例外表に記録されることを防止します。

INSERTALLRECORDSパラメータによって、指定したソース表に対するすべての失敗した操作は、その操作タイプにかかわらず挿入として例外表に記録されます。

注意:

例外表に対して主キー制約または一意索引制約は指定できません。このシナリオでは一意性違反が発生する可能性があり、発生した場合はエラーが生成されます。

例15-1 EXCEPTIONSONLY

この例では、REPERRORをEXCEPTIONSONLYおよび例外MAP文と組み合せて使用する方法がわかります。この例は、REPERRORに関連するパラメータのみを示していますが、Replicatには、エラー処理に関連しない他のパラメータも必要です。

REPERROR (DEFAULT, EXCEPTION)
MAP ggs.equip_account, TARGET ggs.equip_account2,
COLMAP (USEDEFAULTS);
MAP ggs.equip_account, TARGET ggs.equip_account_exception,
EXCEPTIONSONLY,
INSERTALLRECORDS
COLMAP (USEDEFAULTS,
DML_DATE = @DATENOW (),
OPTYPE = @GETENV ('LASTERR', 'OPTYPE'),
DBERRNUM = @GETENV ('LASTERR', 'DBERRNUM'),
DBERRMSG = @GETENV ('LASTERR', 'DBERRMSG'));

この例では、REPERRORパラメータはDEFAULTエラー処理用に設定されています。EXCEPTIONオプションによって、Replicatプロセスは失敗した操作を例外として扱い、処理を継続します。

15.3.1.2 MAPEXCEPTIONの使用

MAPEXCEPTIONは、MAP文でソース表とターゲット表の名前にワイルドカードが使用されている場合に有効です。MAPEXCEPTION句は、通常のMAP文(ソース表をターゲット表にマップする文と同じ)に配置します。Replicatは、エラーを生成するすべての操作を、ワイルドカード指定されたすべての表から同じ例外表にマップします。したがって、例外表には、ワイルドカード指定されたすべての表におけるすべての列のスーパーセットが含まれています。

ワイルドカード構成では列を個別にマップできないため、COLMAP句をUSEDEFAULTSオプションとともに使用してワイルドカード指定された表の列マッピングを処理し(またはCOLMATCHパラメータを適宜使用し)、明示的な列マッピングを使用して追加情報(列変換関数またはSQLEXECで取得した情報など)をマップします。

MAPEXCEPTIONを使用する場合は、INSERTALLRECORDSパラメータをMAPEXCEPTION句に含めます。INSERTALLRECORDSは、すべての操作タイプがINSERT操作として例外表に適用されるようにします。これは、例外の正確なレコードを維持し、例外表で整合性エラーが発生しないようにするために必要です。

これらのパラメータの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

例15-2 MAPEXCEPTION

次に、例外マッピングでのMAPEXCEPTIONの使用例を示します。MAPおよびTARGET句には、ワイルドカードのソースおよびターゲット表名が含まれています。名前がTRXで始まるすべての表を処理するときに発生する例外が、指定されたマッピングを使用してfin.trxexceptions表に取得されます。

MAP src.trx*, TARGET trg.*,
MAPEXCEPTION (TARGET fin.trxexceptions,
INSERTALLRECORDS,
COLMAP (USEDEFAULTS,
ACCT_NO = ACCT_NO,
OPTYPE = @GETENV ('LASTERR', 'OPTYPE'),
DBERR = @GETENV ('LASTERR', 'DBERRNUM'),
DBERRMSG = @GETENV ('LASTERR', 'DBERRMSG')
)
);

15.3.1.3 例外表について

エラーに関する情報を取得して、アプリケーションのトラブルシューティングやエラー処理のためのアプリケーション構成などに役立てるには、例外表を使用します。例外表には少なくとも、失敗した操作から行イメージ全体を受信できるだけの列が含まれている必要があります。追加の列を定義して、列変換関数、SQLEXEC、その他の外部手段によって取得したその他の情報を含めることができます。

例外表にマップしたすべての列の値を証跡レコードに確実に含めるには、Extractパラメータ・ファイルでLOGALLSUPCOLSパラメータを使用するか、次のパラメータを使用します。

- NOCOMPRESSDELETESパラメータを使用することで、行のすべての列がDELETE操作の証跡に書き込まれるようにします。

- GETUPDATEBEFORESパラメータを使用することで、Extractによって行の変更前イメージが取得され、証跡に書き込まれるようにします。

これらのパラメータの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

15.4 DDL操作中のReplicatエラーの処理

ターゲットでのDDL操作中に発生したエラーに対するReplicatのレスポンス方法を制御するには、Replicatのパラメータ・ファイルでDDLERRORパラメータを使用します。詳細は、『Oracle GoldenGate for Windows and UNIXリファレンス』を参照してください。

15.5 TCP/IPエラーの処理

TCP/IPエラーに対するレスポンス指示を提供するには、TCPERRSファイルを使用します。このファイルは、Oracle GoldenGateディレクトリにあります。

表15-1 TCPERRSの列

列

説明

Error

レスポンスを定義するTCP/IPエラーを指定します。

Response

定義されたエラーの後にOracle GoldenGateで再接続を試行するかどうかを制御します。有効な値は、RETRYまたはABENDです。

Delay

再接続を試行するまでにOracle GoldenGateで待機する時間を制御します。

Max Retries

強制終了するまでにOracle GoldenGateで再接続を試行する回数を制御します。

レスポンスがTCPERRSファイルに明示的に定義されていない場合、Oracle GoldenGateは異常終了によってTCP/IPエラーにレスポンスします。

例15-3 TCPERRSファイル

# TCP/IP error handling parameters
# Default error response is abend
#
# Error          Response   Delay(csecs)  Max Retries

ECONNABORTED     RETRY      1000          10
ECONNREFUSED     RETRY      1000          12
ECONNRESET       RETRY      500           10
ENETDOWN         RETRY      3000          50
ENETRESET        RETRY      1000          10
ENOBUFS          RETRY      100           60
ENOTCONN         RETRY      100           10
EPIPE            RETRY      500           10
ESHUTDOWN        RETRY      1000          10
ETIMEDOUT        RETRY      1000          10
NODYNPORTS       RETRY      100           10

TCPERRSファイルには、基本的なエラーに対するデフォルトのレスポンスが含まれます。指示を変更するか、新規エラー用の指示を追加するには、テキスト・エディタでファイルを開き、表15-1に示されている列の値を変更します。

15.6 更新されたエラー・メッセージの管理

Oracle GoldenGateプロセスによって生成されるエラー、情報および警告メッセージは、Oracle GoldenGateのインストール・ディレクトリにあるggmessage.datというデータ・ファイルに格納されます。このファイルのバージョンは、プロセスの起動時にチェックされ、プロセスを動作させるためにはプロセスのバージョンと同一である必要があります。

15.7 Oracle GoldenGateエラーの解決

個別のトラブルシューティングの問題に関する情報は、My Oracle Support (http://support.oracle.com)でKnowledge Baseを検索してください。

16 初期ロードによるOracle GoldenGateのインスタンス化

この章では、初期データ・ロードの実行によるレプリケーション環境のインスタンス化について説明します。

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

- 初期ロード手順の概要

- データベース・ユーティリティを使用したデータのロード

- Oracle Data Pumpを使用したデータのロード

- ファイルからReplicatへのデータのロード

- ファイルからデータベース・ユーティリティへのデータのロード

- Oracle GoldenGateダイレクト・ロードを使用したデータのロード

- ダイレクト・バルク・ロードを使用したSQL*Loaderへのデータのロード

- Teradataロード・ユーティリティを使用したデータのロード

16.1 初期ロード手順の概要

Oracle GoldenGateを使用して、次の処理を実行できます。

- スタンドアロンのバッチ・ロードを実行して、移行などの目的でデータベース表にデータを移入できます。

- Oracle GoldenGateとの変更同期に備えて、初期同期の実行の一環としてデータベース表にデータをロードできます。

16.1.1 初期ロードのパフォーマンスの向上

データベース・ユーティリティで実行される方法以外のすべての初期ロード方式では、Oracle GoldenGateのパラレル・プロセスを使用することで、大規模データベースをより高速にロードできます。パラレル処理を使用するには、次の手順を実行します。

1. この章の指示に従って、使用するパラレル・プロセスの各セットに対して初期ロードExtractおよび初期ロードReplicatを作成します。

2. TABLEパラメータおよびMAPパラメータを使用して、ExtractプロセスとReplicatプロセスのペアごとに異なる表セットを指定します。または、TABLEのSQLPREDICATEオプションを使用して、異なるExtractプロセス間でサイズの大きい表の行を分割します。

すべての初期ロード方式で、RMTHOSTパラメータにTCPBUFSIZEを使用する方が、これを使用しないロードよりスループットが3倍向上することがテストで示されています。ターゲット・システムがNonStopの場合は、このパラメータを使用しないでください。

16.1.2 初期ロードの前提条件

次の項で説明している初期ロードの実行の前提条件に適合していることを検証します。

16.1.2.1 DDL処理の無効化

初期ロードを実行する前に、DDLの抽出およびレプリケーションを無効化します。DDL処理は、ExtractおよびReplicatパラメータ・ファイルのDDLパラメータで制御されます。

16.1.2.2 ターゲット表の準備

ロードを高速に行い、エラーが起こらないようにするための推奨事項は、次のとおりです。

- データ: ターゲット表が空であることを確認します。そうでない場合、行の重複エラーや既存の行とロードされる行との間に競合が発生することがあります。

- 制約: 外部キー制約およびチェック制約を無効化します。外部キー制約ではエラーが発生する可能性があり、チェック制約ではロード・プロセスが低速化する可能性があります。制約は、ロードが正常に終了した後に再度有効化できます。

- 索引: ターゲット表から索引を削除します。索引は、挿入には必要ありません。索引によって、ロード・プロセスの速度が大幅に低下します。表に挿入される行ごとに、データベースではその表に対するすべての索引が更新されます。ロードの完了後、索引を再度追加できます。

注意:

1次索引は、DB2 for z/OSのターゲット表にアクセスするすべてのアプリケーションに必要です。1次索引以外の他のすべての索引は、ターゲット表から削除できます。

- キー: Oracle GoldenGateでレプリケート済の増分データ変更とロードの結果とを調整するには、各ターゲット表に主キーまたは一意キーが含まれている必要があります。アプリケーションを通じてキーを作成できない場合、TABLEパラメータおよびMAPパラメータのKEYCOLSオプションを使用して、Oracle GoldenGate用の代替キーとなる列を指定します。キーは、処理対象の行の識別に役立ちます。キーを作成できない場合、ロードのためにソース・データベースを静止する必要があります。

16.1.2.3 Managerプロセスの構成

ソース・システムとターゲット・システムで、Managerプロセスを構成して起動します。1つのManagerを、複数の初期ロード・プロセスと変更同期プロセスに使用できます。詳細は、Managerおよびネットワーク通信の構成を参照してください。

16.1.2.4 データ定義ファイルの作成

データ定義ファイルは、ソース・データベースとターゲット・データベースに異なる定義が存在する場合に必要です。Oracle GoldenGateは、このファイルを使用して、データをターゲット・データベースで必要とされる形式に変換します。詳細は、メタデータへのレプリケートされたデータの関連付けを参照してください。

16.1.2.5 変更同期グループの作成

初期ロード中のトランザクション変更の取得およびレプリケーションに備えるため、オンラインのExtractグループおよびReplicatグループを作成します。これらのグループは、ロード手順の実行中に起動できます。詳細は、「オンライン変更同期の構成」を参照してください。

注意:

静止されたソース・データベースからロードを実行し、続けて継続的な変更同期を実行しない場合、これらのグループは省略できます。

初期ロードの指示で要求されるまで、ExtractグループまたはReplicatグループは起動しないでください。変更同期によって、ロードが適用されている間にトランザクション変更が追跡され、その後ターゲット表がそれらの変更に応じて調整されます。

注意:

Extractが新しいOracle GoldenGate構成で初めて起動されたとき、開いているトランザクションはスキップされます。Extractの起動後に開始されたトランザクションのみキャプチャされます。

16.1.2.6 プロセス・グループ間でのパラメータの共有

変更同期パラメータ・ファイルで使用するパラメータの一部は、初期ロードのExtractおよびReplicatパラメータ・ファイルにも必要です。これらのパラメータは、あるパラメータ・ファイルから別のパラメータ・ファイルにコピーできます。または、これらのパラメータを中央ファイルに格納し、各パラメータ・ファイルでOBEYパラメータを使用して取得できます。別の方法として、共有パラメータ用のOracle GoldenGateマクロを作成し、そのマクロをMACROパラメータを使用して各パラメータ・ファイルからコールできます。

OBEYおよびマクロの使用方法の詳細は、Oracle GoldenGateプロセス・インタフェースのスタート・ガイドを参照してください。

16.2 データベース・ユーティリティを使用したデータのロード

データベース・コピー・ユーティリティを使用してターゲット・データを構築するには、データベース・ユーティリティでデータの静的コピーを作成および適用しながら、変更同期Extractグループを起動して進行中のデータ変更を抽出します。コピーが終了したら、変更同期Replicatグループを起動して、コピーの適用中に変更された行を再同期します。これ以降、ExtractとReplicatの両方が継続的に実行され、データ同期が維持されます。この方法では、初期ロード用の特別なExtractプロセスまたはReplicatプロセスを使用しません。

注意:

この方法でロードされるオブジェクトとデータ型は、使用するデータベース用のOracle GoldenGateおよび使用するデータベース・ユーティリティでサポートされている必要があります。データベースに対してサポートされているアイテムについては、そのデータベースに対応するOracle GoldenGateのインストレーションおよび構成のドキュメントを参照してください。データベース・ユーティリティでサポートされているアイテムについては、そのデータベース・ベンダーのドキュメントを参照してください。

1. 「初期ロードの前提条件」の要件を満たしていることを確認します

2. ソース・システムとターゲット・システムで、GGSCIを実行してManagerプロセスを起動します。

START MANAGER

注意:

Windowsクラスタでは、クラスタ・アドミニストレータでManagerリソースを起動します。

3. ソース・システムで、変更の抽出を開始します。

START EXTRACT group

説明:

groupは、Extractグループの名前です。

4. (Oracleで順序をレプリケートする場合)update.Sequenceに対するEXECUTE権限を持つユーザーとしてDBLOGINコマンドを発行します。

GGSCI> DBLOGIN USERID DBLOGINuser, PASSWORD password [encryption_options]

5. (Oracleで順序をレプリケートする場合)次のコマンドを発行して各ソース順序を更新し、REDOを生成します。このREDOから、Replicatがターゲット上の順序の初期同期を実行します。順序(所有者ではない)の名前は、任意の文字またはすべて文字をアスタリスク・ワイルドカードで表すことができます。

FLUSH SEQUENCE owner.sequence

6. ソース・システムで、コピーの作成を開始します。

7. コピーが終了するまで待機し、完了した時刻を記録します。

8. Replicatのパラメータ・ファイルを表示して、HANDLECOLLISIONSパラメータがリストされていることを確認します。リストされていない場合は、このパラメータをファイルに追加します。

注意:

ローカル・オペレーティング・システムのものとは異なるキャラクタ・セットを使用した既存のパラメータ・ファイル(CHARSETオプションを使用して別のキャラクタ・セットを指定したファイルなど)は、VIEW PARAMSコマンドまたはEDIT PARAMSコマンドを使用して表示や編集を行わないでください。そのようなパラメータ・ファイルはGGSCIの外部から表示してください。そうしないと、内容が破損する可能性があります。

9. ターゲット・システムで、変更のレプリケーションを開始します。

START REPLICAT group

説明:

groupは、Replicatグループの名前です。

10. ターゲット・システムで、次のコマンドを発行して変更のレプリケーションのステータスを確認します。

INFO REPLICAT group

11. 初期ロード中に生成されたすべての変更データが変更のレプリケーションにより適用されたことを確認するまで、INFO REPLICATコマンドを発行し続けます。前に記録した完了時刻を参照してください。たとえば、コピーが12:05に停止した場合、変更のレプリケーションによってその時刻までデータが適用されていることを確認します。

12. ターゲット・システムで、次のコマンドを発行してHANDLECOLLISIONSパラメータをオフにし、初期ロードのエラー処理を無効化します。

SEND REPLICAT group, NOHANDLECOLLISIONS

13. ターゲット・システムで、Replicatのパラメータ・ファイルを編集してHANDLECOLLISIONSパラメータを削除します。これによって、次回Replicatが起動したときにHANDLECOLLISIONSが再度有効化されることを防止します。

注意:

ローカル・オペレーティング・システムのものとは異なるキャラクタ・セットを使用した既存のパラメータ・ファイル(CHARSETオプションを使用して別のキャラクタ・セットを指定したファイルなど)は、VIEW PARAMSコマンドまたはEDIT PARAMSコマンドを使用して表示や編集を行わないでください。そのようなパラメータ・ファイルはGGSCIの外部から表示してください。そうしないと、内容が破損する可能性があります。

14. パラメータ・ファイルを保存して閉じます。

これ以降、Oracle GoldenGateでデータ変更の同期が続けられます。

16.3 Oracle Data Pumpを使用したデータのロード

この方法では、Oracle Data Pumpユーティリティを使用して、ターゲット・データを構築します。コピーをターゲットに適用した後、コピーが停止したSCNを記録します。コピーに含まれているトランザクションは、整合性違反によるコリジョンを回避するためにスキップされます。プロセスの開始地点から、Oracle GoldenGateはデータ同期を維持します。これらの方法では、初期ロードOracle GoldenGateプロセスは不要です。

16.3.1 自動的な表ごとのインスタンス化の使用方法

Oracle Data Pumpを使用するOracle Databaseで、表ごとのCSNフィルタリングを自動的にインスタンス化して、すべての表が同じSCNに配置されるのを防ぐことができます。

ソース・データベースの場合

1. ADD TRANDATAおよびADD SCHEMATRANDATAを使用して、表を自動的に準備します。

2. INFO TRANDATAを使用して、表のインスタンス化の準備ができていることと、それが実行されたポイントを確認します。

3. ターゲット・データベースでReplicatを停止します。

4. 適切なTABLE文でExtractを起動します。

5. Oracle Datapumpを使用して表をEXPORTします。これにより、インポート時にターゲットでインスタンス化SCNを設定するインポート・アクションが自動的に生成されます。

ターゲット・データベースの場合

1. Oracle Datapumpを使用して、エクスポートされた表をインポートします。これにより、システム表とビューにインスタンス化SCNおよび指定された表データが移入されます。

2. 次のいずれかを使用してReplicatを起動します。

メタデータ証跡のReplicatの場合、Replicatパラメータ・ファイルにDBOPTIONS ENABLE_INSTANTIATION_FILTERINGパラメータを設定して、表レベルのインスタンス化フィルタリングを有効にします。

他のすべてのReplicatでは、Replicatパラメータ・ファイルにDBOPTIONS source_dbase_name global_nameパラメータを設定します(global_nameは、証跡の取得元のOracleソース・データベースのグローバル名です)。

Replicatは設定に従って新しいマッピングおよびフィルタ・レコードのインスタンス化SCNを問い合せます

詳細は、Oracle GoldenGate Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

16.3.2 Oracle Data Pumpの表のインスタンス化の使用方法

Oracle Data Pumpでインスタンス化を実行するには、My Oracle Supportドキュメント1276058.1を参照してください。このドキュメントを入手するには、次のようにします。

1. http://support.oracle.com.に移動します

2. 「Sign In」の下部から言語を選択し、Oracleシングル・サインオン(SSO)でログインします。

3. 「Dashboard」で、見出し「Knowledge Base」を展開します。

4. 「Enter search terms」の下の箇所で、ドキュメントID「1276058.1」を貼り付けるか入力し、「Search」をクリックします。

5. 検索結果で「Oracle GoldenGate Best Practices: Instantiation from an Oracle Source Database [Article ID 1276058.1]」を選択します。

6. 「Attachments」の下のリンクをクリックして、記事を開きます。

16.4 ファイルからReplicatへのデータのロード

Replicatを使用してターゲット・データを構築するには、初期ロードExtractを使用してソース表からソース・レコードを抽出し、それらのレコードを正規形式で抽出ファイルに書き込みます。初期ロードReplicatは、データベース・インタフェースを使用してこのファイルからデータをロードします。ロード中、変更同期グループは、増分変更を抽出してレプリケートします。その後、これらの変更は、ロードの結果に応じて調整されます。

ロード中、レコードは、1つずつターゲット・データベースに適用されるため、この方法は他の初期ロード方式と比較して非常に低速です。この方法では、ソース・システムとターゲット・システムのいずれかでデータ変換を実行できます。

ファイルからReplicatにデータをロードする手順

1. 「初期ロードの前提条件」の要件を満たしていることを確認します

2. ソース・システムとターゲット・システムで、GGSCIを実行してManagerを起動します。

START MANAGER

注意:

Windowsクラスタでは、クラスタ・アドミニストレータでManagerリソースを起動します。

3. ソース・システムで、次のコマンドを発行して初期ロードExtractのパラメータ・ファイルを作成します。

EDIT PARAMS initial-load_Extract

4. 表16-1にリストされている順序でパラメータを入力します。パラメータ文ごとに新規行を開始します。ファイルからReplicatにデータをロードするための初期ロードExtractパラメータ・ファイルの例を次に示します。

SOURCEISTABLE
SOURCEDB mydb, USERIDALIAS ogg
RMTHOSTOPTIONS ny4387, MGRPORT 7888, ENCRYPT AES 192 KEYNAME mykey
ENCRYPTTRAIL AES192
RMTFILE /ggs/dirdat/initld, MEGABYTES 2, PURGE
TABLE hr.*;
TABLE sales.*;

表16-1 初期ロードExtractパラメータ

パラメータ

説明

SOURCEISTABLE

Extractをソース表からレコードを直接抽出する初期ロード・プロセスとして指定します。

[SOURCEDB dsn | catalog]
[, USERIDALIAS alias, options |
, USERID user, options]

データベース接続情報を指定します。

SOURCEDBには、ソースのデータ・ソース名(DSN)またはSQL/MXカタログを指定します。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

USERIDとUSERIDALIASで、必要に応じてデータベース資格証明を指定します。セキュリティ・オプションの詳細は、Oracle GoldenGateのセキュリティの構成を参照してください。

RMTHOSTOPTIONS hostname,
MGRPORT portnumber
[, ENCRYPT algorithm KEYNAME keyname]

ターゲット・システム、Managerが稼働しているポート、およびTCP/IP経由でのデータ暗号化(オプション)を指定します。

ENCRYPTTRAIL algorithm

リモート・ファイルでデータを暗号化します。セキュリティ・オプションの詳細は、Oracle GoldenGateのセキュリティの構成を参照してください。

RMTFILE path,
[MEGABYTES n]

- pathは、ファイルの相対名または完全修飾名です。

- MEGABYTESでは、各ファイルのサイズを指定します。

ロード・データを書き込む抽出ファイルを指定します。Oracle GoldenGateでは、ロード中にこのファイルが作成されます。チェックポイントは、RMTFILEでは保持されません。

抽出ファイルのサイズを2GB以下にする必要があることに注意してください。

TABLE [container. | catalog.]owner.object;

オブジェクトの完全修飾名(複数オブジェクトの場合は完全修飾ワイルドカード表記)を指定します。データベースがOracleマルチテナント・コンテナ・データベースまたはSQL/MXデータベースの場合は、SOURCECATALOGが使用されていないかぎり、オブジェクト名にコンテナまたはカタログの名前を含める必要があります。

パラメータ・ファイル内のオブジェクト名指定のガイドラインは、「Oracle GoldenGateの入力におけるオブジェクト名の指定」を参照してください。

CATALOGEXCLUDE

SCHEMAEXCLUDE

TABLEEXCLUDE

EXCLUDEWILDCARDOBJECTSONLY

関連付けられたTABLE文のワイルドカード表記から特定のオブジェクトを除外するために、互いに組み合せて使用できるパラメータ。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

5. Oracle GoldenGateリファレンスfor Windows and UNIXにリストされているExtractの適切なオプション・パラメータを入力します。

6. パラメータ・ファイルを保存して閉じます。

7. ターゲット・システムで、次のコマンドを発行して初期ロードReplicatのパラメータ・ファイルを作成します。

EDIT PARAMS initial-load_Replicat

8. 表16-2にリストされている順序でパラメータを入力します。パラメータ文ごとに新規行を開始します。ファイルからReplicatにデータをロードするための初期ロードReplicatパラメータ・ファイルの例を次に示します。

SPECIALRUN
END RUNTIME
TARGETDB mydb, USERIDALIAS ogg
EXTFILE /ggs/dirdat/initld
SOURCEDEFS /ggs/dirdef/source_defs
MAP hr.*, TARGET hr.*;
MAP sales.*, TARGET hr.*;

表16-2 初期ロードReplicatパラメータ

パラメータ

説明

SPECIALRUN

初期ロードReplicatをチェックポイントを使用しない1回かぎりの実行として実装します。

END RUNTIME

ロードの完了時に終了するように初期ロードReplicatに指示します。

[TARGETDB dsn | catalog]
[, USERIDALIAS alias, options |
, USERID user, options]

データベース接続情報を指定します。

TARGETDBには、ターゲットのデータソース名(DSN)またはSQL/MXカタログを指定します。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

USERIDとUSERIDALIASで、必要に応じてデータベース資格証明を指定します。セキュリティ・オプションの詳細は、Oracle GoldenGateのセキュリティの構成を参照してください。

EXTFILE path

- pathは、ファイルの相対名または完全修飾名です。

ExtractパラメータのRMTFILEで指定されている入力抽出ファイルを指定します。

{SOURCEDEFS file} |
ASSUMETARGETDEFS

- SOURCEDEFSは、ソース表とターゲット表に異なる定義が含まれる場合に使用します。DEFGENによって生成されたソース定義ファイルの相対名または完全修飾名を指定します。

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

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

データ定義ファイルの詳細は、メタデータへのレプリケートされたデータの関連付けを参照してください。

SOURCECATALOG

以降のMAP文に対して、デフォルトのソースOracleコンテナまたはソースSQL/MXカタログを指定します。それらのデータベースに対して3つの部分からなる名前が必要とされる場合に、2つの部分からなる名前(schema.object)を使用できるようにします。このパラメータのインスタンスを複数使用すると、MAPのパラメータの異なる組合せに対して、異なるデフォルト・コンテナまたはカタログを指定できます。

MAP [container. | catalog.]owner.object,
TARGET owner.object[, DEF template]
;

単一または複数のソース・オブジェクトと、単一または複数のターゲット・オブジェクトの関係を指定します。MAPにはソース・オブジェクトを指定し、TARGETにはターゲット・オブジェクトを指定します。

ソース・オブジェクトに対して、オブジェクトの完全修飾名(複数オブジェクトの場合は完全修飾ワイルドカード表記)を指定します。Oracleマルチテナント・コンテナ・データベースまたはSQL/MXデータベースの場合、SOURCECATALOGが使用されていないかぎり、ソース・オブジェクト名にコンテナまたはカタログの名前を含める必要があります。

ターゲット・オブジェクトに対しては、データベースに関係なく、名前のowner.objectコンポーネントだけを指定します。Replicatは1つのOracleコンテナまたはSQL/MXカタログにのみ接続できます。データのロード先の各コンテナまたはカタログごとに、別々のReplicatプロセスを使用してください。

パラメータ・ファイル内のオブジェクト名指定のガイドラインは、「Oracle GoldenGateの入力におけるオブジェクト名の指定」を参照してください。

DEFオプションは、定義テンプレートを指定します。データ定義ファイルの詳細は、「メタデータへのレプリケートされたデータの関連付け」を参照してください。MAPパラメータの追加情報とオプションの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

CATALOGEXCLUDE

SCHEMAEXCLUDE

MAPEXCLUDE

EXCLUDEWILDCARDOBJECTSONLY

関連付けられたMAP文のワイルドカード表記から特定のソース・オブジェクトを除外するために、互いに組み合せて使用できるパラメータ。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

9. Oracle GoldenGateリファレンスfor Windows and UNIXにリストされているReplicatの適切なオプション・パラメータを入力します。

10. ファイルを保存して閉じます。

11. Replicatのパラメータ・ファイルを表示して、HANDLECOLLISIONSパラメータがリストされていることを確認します。リストされていない場合は、このパラメータをファイルに追加します。

12. ソース・システムで、変更の抽出を開始します。

START EXTRACT group

13. (Oracleで順序をレプリケートする場合)update.Sequenceに対するEXECUTE権限を持つユーザーとしてDBLOGINコマンドを発行します。

GGSCI> DBLOGIN USERID DBLOGINuser, PASSWORD password [encryption_options]

14. (Oracleで順序をレプリケートする場合)次のコマンドを発行して各ソース順序を更新し、REDOを生成します。このREDOから、Replicatがターゲット上の順序の初期同期を実行します。順序(所有者ではない)の名前は、任意の文字またはすべて文字をアスタリスク・ワイルドカードで表すことができます。

FLUSH SEQUENCE owner.sequence

15. ソース・システムのOracle GoldenGateがインストールされているディレクトリから、初期ロードExtractを起動します。

UNIXおよびLinux:

$ /GGS directory/extract paramfile dirprm/initial-load_Extract.prm reportfile path

Windows:

C:\> GGS directory\extract paramfile dirprm\initial-load_Extract.prm reportfile path

説明:

initial-load_Extractはパラメータ・ファイルの作成時に使用した初期ロードExtractの名前であり、pathはExtractレポート・ファイルの相対名または完全修飾名です。

16. オペレーティング・システムの標準的なファイル表示方法を使用してExtractレポート・ファイルを表示し、初期抽出の進行状況および結果を確認します。

17. 初期抽出が終了するまで待機します。

18. ターゲット・システムで、初期ロードReplicatを起動します。

UNIXおよびLinux:

$ /GGS directory/replicat paramfile dirprm/initial-load_Replicat.prm reportfile path

Windows:

C:\> GGS directory\replicat paramfile dirprm\initial-load_Replicat.prm reportfile path

説明:

initial-load_Replicatはパラメータ・ファイルの作成時に使用した初期ロードReplicatの名前であり、pathはReplicatレポート・ファイルの相対名または完全修飾名です。

19. 初期ロードReplicatの実行が終了したら、オペレーティング・システムの標準的なファイル表示方法を使用してReplicatレポート・ファイルを表示し、結果を確認します。

20. ターゲット・システムで、変更のレプリケーションを開始します。

START REPLICAT group

21. ターゲット・システムで、次のコマンドを発行して変更のレプリケーションのステータスを確認します。

INFO REPLICAT group

22. 初期ロード中に生成されたすべての変更データがReplicatにより適用されたことを確認するまで、INFO REPLICATコマンドを発行し続けます。たとえば、初期ロードExtractが12:05に停止した場合、Replicatによってその時刻までデータが適用されていることを確認します。

23. ターゲット・システムで、次のコマンドを発行してHANDLECOLLISIONSパラメータをオフにし、初期ロードのエラー処理を無効化します。

SEND REPLICAT group, NOHANDLECOLLISIONS

24. ターゲット・システムで、Replicatのパラメータ・ファイルを編集してHANDLECOLLISIONSパラメータを削除します。これによって、次回Replicatが起動したときにHANDLECOLLISIONSが再度有効化されることを防止します。

注意:

ローカル・オペレーティング・システムのものとは異なるキャラクタ・セットを使用した既存のパラメータ・ファイル(CHARSETオプションを使用して別のキャラクタ・セットを指定したファイルなど)は、VIEW PARAMSコマンドまたはEDIT PARAMSコマンドを使用して表示や編集を行わないでください。そのようなパラメータ・ファイルはGGSCIの外部から表示してください。そうしないと、内容が破損する可能性があります。

25. パラメータ・ファイルを保存して閉じます。

これ以降、Oracle GoldenGateでデータ変更の同期が続けられます。

16.5 ファイルからデータベース・ユーティリティへのデータのロード

データベースのバルク・ロード・ユーティリティを使用するには、初期ロードExtractを使用してソース表からソース・レコードを抽出し、それらのレコードを外部ASCII形式で抽出ファイルに書き込みます。ファイルを読み取ることができるのは、Oracle SQL*Loader、Microsoft社のBCP、DTSまたはSQL Server Integration Services(SSIS)ユーティリティ、あるいはIBM社のロード・ユーティリティ(LOADUTIL)です。

注意:

この方法でロードされるオブジェクトとデータ型は、使用するデータベース用のOracle GoldenGateおよび使用するデータベース・ユーティリティでサポートされている必要があります。データベースに対してサポートされているアイテムについては、そのデータベースに対応するOracle GoldenGateのインストレーションおよび構成のドキュメントを参照してください。データベース・ユーティリティでサポートされているアイテムについては、そのデータベース・ベンダーのドキュメントを参照してください。

ロード中、変更同期グループは、増分変更を抽出してレプリケートします。その後、これらの変更は、ロードの結果に応じて調整されます。ロード処理の一環として、Oracle GoldenGateで初期ロードReplicatを使用して、データベース・ユーティリティに必要な実行ファイルと制御ファイルを作成します。

制御ファイルは動的に生成され、変換ルールで事前構成できないため、すべてのデータ変換はソース・システムで初期ロードExtractによって実行される必要があります。

ファイルからデータベース・ユーティリティにデータをロードする手順

1. 「初期ロードの前提条件」を満たしていることを確認します。

2. ソース・システムとターゲット・システムで、GGSCIを実行してManagerを起動します。

START MANAGER

3. ソース・システムで、次のコマンドを発行して初期ロードExtractのパラメータ・ファイルを作成します。

EDIT PARAMS initial-load_Extract

4. 表16-3にリストされている順序でパラメータを入力します。パラメータ文ごとに新規行を開始します。ファイルからデータベース・ユーティリティにデータをロードするための初期ロードExtractパラメータ・ファイルの例を次に示します。

SOURCEISTABLE
SOURCEDB mydb, USERIDALIAS ogg
RMTHOSTOPTIONS ny4387, MGRPORT 7888, ENCRYPT AES 192 KEYNAME mykey
ENCRYPTTRAIL AES192
FORMATASCII, SQLLOADER
RMTFILE /ggs/dirdat/initld, MEGABYTES 2, PURGE
TABLE hr.*;
TABLE sales.*;

表16-3 初期ロードExtractパラメータ

パラメータ

説明

SOURCEISTABLE

Extractを、ソース表から直接レコードを抽出する初期ロード・プロセスとして指定します。

[SOURCEDB dsn]
[, USERIDALIAS alias, options |
, USERID user, options]

データベース接続情報を指定します。

SOURCEDBには、ソースのデータソース名(DSN)を指定します。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

USERIDとUSERIDALIASで、必要に応じてデータベース資格証明を指定します。セキュリティ・オプションの詳細は、Oracle GoldenGateのセキュリティの構成を参照してください。

RMTHOSTOPTIONS hostname,
MGRPORT portnumber
[, ENCRYPT algorithm KEYNAME keyname]
[, PARAMS - E -d defs_file]

- -Eは、ASCIIをEBCDICに変換します。

- -d defs_fileでは、ソース定義ファイルを指定します。

ターゲット・システム、Managerが稼働しているポート、およびTCP/IP経由でのデータ暗号化(オプション)を指定します。

PARAMS句は、IBM社のロード・ユーティリティでロードする場合に必要です(Oracle GoldenGateでソース定義ファイルを参照する必要があるため)。

ENCRYPTTRAIL algorithm

リモート・ファイルでデータを暗号化します。セキュリティ・オプションの詳細は、Oracle GoldenGateのセキュリティの構成を参照してください。

FORMATASCII, {BCP | SQLLOADER}

- BCPは、BCP、DTSまたはSSISに使用します。

- SQLLOADERは、Oracle SQL*LoaderまたはIBM社のロード・ユーティリティに使用します。

出力をデフォルトの正規形式ではなくASCIIテキストとしてフォーマットするように指定します。このパラメータは、RMTFILEの前にリストする必要があります。制約事項とオプションの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

RMTFILE path,
[MEGABYTES n]

- pathは、ファイルの相対名または完全修飾名です

- MEGABYTESでは、各ファイルのサイズ(最大2MB)を指定します。

ロード・データを書き込む抽出ファイルを指定します。Oracle GoldenGateでは、ロード中にこのファイルが作成されます。チェックポイントは、RMTFILEでは保持されません。

TABLE [container.]owner.object;

オブジェクトの完全修飾名(複数オブジェクトの場合は完全修飾ワイルドカード表記)を指定します。データベースがOracleマルチテナント・コンテナ・データベースの場合は、SOURCECATALOGが使用されていないかぎり、オブジェクト名にコンテナの名前を含める必要があります。パラメータ・ファイル内のオブジェクト名指定のガイドラインは、「Oracle GoldenGateの入力におけるオブジェクト名の指定」を参照してください。

CATALOGEXCLUDE

SCHEMAEXCLUDE

TABLEEXCLUDE

EXCLUDEWILDCARDOBJECTSONLY

関連付けられたTABLE文のワイルドカード表記から特定のオブジェクトを除外するために、互いに組み合せて使用できるパラメータ。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

5. Oracle GoldenGateリファレンスfor Windows and UNIXにリストされているExtractの適切なオプション・パラメータを入力します。

6. パラメータ・ファイルを保存して閉じます。

7. ターゲット・システムで、次のコマンドを発行して初期ロードReplicatのパラメータ・ファイルを作成します。

EDIT PARAMS initial-load_Replicat

8. 表16-4にリストされている順序でパラメータを入力します。パラメータ文ごとに新規行を開始します。ファイルからデータベース・ユーティリティにデータをロードするための初期ロードReplicatパラメータ・ファイルの例を次に示します。

GENLOADFILES sqlldr.tpl
USERIDALIAS ogg
EXTFILE /ggs/dirdat/initld
SOURCEDEFS /ggs/dirdef/source_defs
MAP hr.*, TARGET hr.*;
MAP sales.*, TARGET hr.*;

表16-4 初期ロードReplicatパラメータ

パラメータ

説明

GENLOADFILES template

データベース・ユーティリティの実行ファイルと制御ファイルを生成します。このパラメータの使用方法の詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

[TARGETDB dsn | container]
[, USERIDALIAS alias, options |
, USERID user, options]

データベース接続情報を指定します。

TARGETDBには、ターゲットのデータソース名(DSN)またはOracleコンテナを指定します。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

USERIDとUSERIDALIASで、必要に応じてデータベース資格証明を指定します。セキュリティ・オプションの詳細は、Oracle GoldenGateのセキュリティの構成を参照してください。

EXTFILE path |
EXTTRAIL path

- pathは、ファイルの相対名または完全修飾名です

- EXTTRAILは、Extractのパラメータ・ファイルでRMTFILEパラメータのMAXFILESオプションを使用している場合にのみ使用します。

ExtractパラメータのRMTFILEで指定されている抽出ファイルを指定します。

{SOURCEDEFS path} |
ASSUMETARGETDEFS

- SOURCEDEFSは、ソース表とターゲット表に異なる定義が含まれる場合に使用します。DEFGENによって生成されたソース定義ファイルの相対名または完全修飾名を指定します。

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

データ定義の解釈方法を指定します。データ定義ファイルの詳細は、メタデータへのレプリケートされたデータの関連付けを参照してください。

SOURCECATALOG

以降のMAP文に対して、マルチテナント・コンテナ・データベース内のデフォルトのOracleコンテナを指定します。3つの部分からなる名前が必要とされる場合に、2つの部分からなる名前(schema.object)を使用できるようにします。このパラメータのインスタンスを複数使用すると、MAPのパラメータの異なる組合せに対して、異なるデフォルト・コンテナを指定できます。

MAP [container.]owner.object,
TARGET owner.object[, DEF template]
;

単一または複数のソース・オブジェクトと、単一または複数のターゲット・オブジェクトの関係を指定します。MAPにはソース・オブジェクトを指定し、TARGETにはターゲット・オブジェクトを指定します。

ソース・オブジェクトに対して、オブジェクトの完全修飾名(複数オブジェクトの場合は完全修飾ワイルドカード表記)を指定します。Oracleマルチテナント・コンテナ・データベースの場合は、SOURCECATALOGが使用されていないかぎり、ソース・オブジェクト名にコンテナの名前を含める必要があります。

ターゲット・オブジェクトに対しては、データベースに関係なく、名前のowner.objectコンポーネントだけを指定します。Replicatは、1つのOracleコンテナにのみ接続できます。データのロード先の各コンテナごとに、別々のReplicatプロセスを使用してください。

パラメータ・ファイル内のオブジェクト名指定のガイドラインは、「Oracle GoldenGateの入力におけるオブジェクト名の指定」を参照してください。

DEFオプションは、定義テンプレートを指定します。データ定義の詳細は、「レプリケートされたデータとメタデータとの関連付け」を参照してください。MAPパラメータの詳細とオプションについては、『Oracle GoldenGateリファレンスfor Windows and UNIX』を参照してください。

CATALOGEXCLUDE

SCHEMAEXCLUDE

MAPEXCLUDE

EXCLUDEWILDCARDOBJECTSONLY

関連付けられたMAP文のワイルドカード表記から特定のソース・オブジェクトを除外するために、互いに組み合せて使用できるパラメータ。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

9. Oracle GoldenGateリファレンスfor Windows and UNIXにリストされているReplicatの適切なオプション・パラメータを入力します。

10. パラメータ・ファイルを保存して閉じます。

11. Replicatのパラメータ・ファイルを表示して、HANDLECOLLISIONSパラメータがリストされていることを確認します。リストされていない場合は、このパラメータをファイルに追加します。

12. ソース・システムで、変更の抽出を開始します。

START EXTRACT group

13. (Oracleで順序をレプリケートする場合)update.Sequenceに対するEXECUTE権限を持つユーザーとしてDBLOGINコマンドを発行します。

GGSCI> DBLOGIN USERID DBLOGINuser, PASSWORD password [encryption_options]

14. (Oracleで順序をレプリケートする場合)次のコマンドを発行して各ソース順序を更新し、REDOを生成します。このREDOから、Replicatがターゲット上の順序の初期同期を実行します。順序(所有者ではない)の名前は、任意の文字またはすべて文字をアスタリスク・ワイルドカードで表すことができます。

FLUSH SEQUENCE owner.sequence

15. ソース・システムのOracle GoldenGateがインストールされているディレクトリから、初期ロードExtractを起動します。

UNIXおよびLinux:

$ /GGS directory/extract paramfile dirprm/initial-load_Extract.prm reportfile path

Windows:

C:\> GGS directory\extract paramfile dirprm\initial-load_Extract.prm reportfile path

説明:

initial-load_Extractはパラメータ・ファイルの作成時に使用した初期ロードExtractの名前であり、pathはExtractレポート・ファイルの相対名または完全修飾名です。

16. オペレーティング・システムの標準的なファイル表示方法を使用してExtractレポート・ファイルを表示し、初期抽出の進行状況および結果を確認します。

17. 初期抽出が終了するまで待機します。

18. ターゲット・システムで、初期ロードReplicatを起動します。

UNIXおよびLinux:

$ /GGS directory/replicat paramfile dirprm/initial-load_Replicat.prm reportfile path

Windows:

C:\> GGS directory\replicat paramfile dirprm\initial-load_Replicat.prm reportfile path

説明:

initial-load_Replicatはパラメータ・ファイルの作成時に使用した初期ロードReplicatの名前であり、pathはReplicatレポート・ファイルの相対名または完全修飾名です。

19. 初期ロードReplicatの実行が終了したら、オペレーティング・システムの標準的なファイル表示方法を使用してReplicatレポート・ファイルを表示し、結果を確認します。

20. ASCII形式の抽出ファイルと、初期ロードReplicatによって作成された実行ファイルおよび制御ファイルを使用して、データベース・ユーティリティでデータをロードします。

21. ターゲット表へのロードが完了するまで待機します。

22. ターゲット・システムで、変更のレプリケーションを開始します。

START REPLICAT group

23. ターゲット・システムで、次のコマンドを発行して変更のレプリケーションのステータスを確認します。

INFO REPLICAT group

24. 初期ロード中に生成されたすべての変更データがReplicatにより適用されたことを確認するまで、INFO REPLICATコマンドを発行し続けます。たとえば、初期ロードExtractが12:05に停止した場合、Replicatによってその時刻までデータが適用されていることを確認します。

25. ターゲット・システムで、次のコマンドを発行してHANDLECOLLISIONSパラメータをオフにし、初期ロードのエラー処理を無効化します。

SEND REPLICAT group, NOHANDLECOLLISIONS

26. ターゲット・システムで、Replicatのパラメータ・ファイルを編集してHANDLECOLLISIONSパラメータを削除します。これによって、次回Replicatが起動したときにHANDLECOLLISIONSが再度有効化されることを防止します。

注意:

ローカル・オペレーティング・システムのものとは異なるキャラクタ・セットを使用した既存のパラメータ・ファイル(CHARSETオプションを使用して別のキャラクタ・セットを指定したファイルなど)は、VIEW PARAMSコマンドまたはEDIT PARAMSコマンドを使用して表示や編集を行わないでください。そのようなパラメータ・ファイルはGGSCIの外部から表示してください。そうしないと、内容が破損する可能性があります。

27. パラメータ・ファイルを保存して閉じます。

これ以降、Oracle GoldenGateでデータ変更の同期が続けられます。

16.6 Oracle GoldenGateダイレクト・ロードを使用したデータのロード

Oracle GoldenGateダイレクト・ロードを使用するには、Oracle GoldenGateの初期ロードExtractを実行してソース・レコードを抽出し、それらのレコードを初期ロードReplicatタスクに直接送信します。タスクは、Managerプロセスによって動的に起動されるため、Collectorプロセスやファイルを使用する必要はありません。初期ロードReplicatタスクによって、ターゲット・データベースに対するロードがサイズの大きいブロック単位で行われます。変換およびマッピングは、ExtractまたはReplicat、あるいはその両方で実行できます。ロード中、変更同期グループは、増分変更を抽出してレプリケートします。その後、これらの変更は、ロードの結果に応じて調整されます。

Replicatで使用するポートを制御し、検索およびバインドのプロセスを高速化するには、Managerのパラメータ・ファイルでDYNAMICPORTLISTパラメータを指定します。Managerは、このパラメータで指定されたポート番号のリストをReplicatタスク・プロセスに渡します。Replicatはまずこのリストのポートを検索し、リストのポートが使用できない場合にのみ、デフォルトのManagerポート番号からスキャンを開始して、使用可能なポートが見つかるまで昇順でスキャンを続けます。

このメソッドは、標準的な文字、数字、日時データ型の他に、CLOB、NCLOB、BLOB、LONG、XML、および次の属性とともに埋め込まれているユーザー定義データ型(UDT)もサポートします: CHAR、NCHAR、VARCHAR、NVARCHAR、RAW、NUMBER、DATE、FLOAT、TIMESTAMP、CLOB、BLOB、XMLおよびUDT。必要に応じて、ソースとターゲットの間でキャラクタ・セットが変換されます。

このメソッドはOracle内部表をサポートしていますが、ロード時に、ソースとターゲットのキャラクタ・セットを変換しません。

Oracle GoldenGateダイレクト・ロードを使用してデータをロードする手順

1. 「初期ロードの前提条件」を満たしていることを確認します。

2. ソース・システムとターゲット・システムで、GGSCIを実行してManagerを起動します。

START MANAGER

注意:

Windowsクラスタでは、クラスタ・アドミニストレータでManagerリソースを起動します。

3. ソースで、次のコマンドを発行して初期ロードExtractを作成します。

ADD EXTRACT initial-load_Extract, SOURCEISTABLE

説明:

- initial-load_Extractは、8文字以内の初期ロードExtractの名前です。

- SOURCEISTABLEでは、ソース表から完全なレコードを直接読み取る初期ロード・プロセスとしてExtractを指定します。その他のADD EXTRACTサービス・オプションまたはデータソース引数を使用しないでください。

4. ソース・システムで、次のコマンドを発行して初期ロードExtractのパラメータ・ファイルを作成します。

EDIT PARAMS initial-load_Extract

5. 表16-5にリストされている順序でパラメータを入力します。パラメータ文ごとに新規行を開始します。Oracle GoldenGateダイレクト・ロード用の初期ロードExtractパラメータ・ファイルの例を次に示します。

EXTRACT initext
SOURCEDB mydb, USERIDALIAS ogg
RMTHOSTOPTIONS ny4387, MGRPORT 7888, ENCRYPT AES 192 KEYNAME mykey
RMTTASK REPLICAT, GROUP initrep
TABLE hr.*;
TABLE sales.*;

表16-5 Oracle GoldenGateダイレクト・ロードのための初期ロードExtractのパラメータ

パラメータ

説明

EXTRACT initial-load_Extract

初期ロードExtractを指定します。

[SOURCEDB dsn | catalog]
[, USERIDALIAS alias, options |
, USERID user, options]

データベース接続情報を指定します。

SOURCEDBには、ソースのデータソース名(DSN)またはSQL/MXカタログを指定します。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

USERIDとUSERIDALIASで、必要に応じてデータベース資格証明を指定します。セキュリティ・オプションの詳細は、Oracle GoldenGateのセキュリティの構成を参照してください。

RMTHOSTOPTIONS hostname,
MGRPORT portnumber
[, ENCRYPT algorithm KEYNAME keyname]

ターゲット・システム、Managerが稼働しているポート、およびTCP/IP経由でのデータ暗号化(オプション)を指定します。

RMTTASK replicat,
GROUP initial-load_Replicat

- initial-load_Replicatは、初期ロードReplicatグループの名前です

ターゲット・システムのManagerに、初期ロードReplicatを1回かぎりのタスクとして動的に起動するように指示します。

TABLE [container. | catalog.]owner.object;

オブジェクトの完全修飾名(複数オブジェクトの場合は完全修飾ワイルドカード表記)を指定します。データベースがOracleマルチテナント・データベースまたはSQL/MXデータベースの場合は、SOURCECATALOGが使用されていないかぎり、オブジェクト名にコンテナまたはカタログの名前を含める必要があります。パラメータ・ファイル内のオブジェクト名指定のガイドラインは、「Oracle GoldenGateの入力におけるオブジェクト名の指定」を参照してください。

CATALOGEXCLUDE

SCHEMAEXCLUDE

TABLEEXCLUDE

EXCLUDEWILDCARDOBJECTSONLY

関連付けられたTABLE文のワイルドカード表記から特定のオブジェクトを除外するために、互いに組み合せて使用できるパラメータ。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

6. Oracle GoldenGateリファレンスfor Windows and UNIXにリストされているExtractの適切なオプション・パラメータを入力します。

7. ファイルを保存して閉じます。

8. ターゲット・システムで、次のコマンドを発行して初期ロードReplicatタスクを作成します。

ADD REPLICAT initial-load_Replicat, SPECIALRUN

説明:

- initial-load_Replicatは、初期ロードReplicatタスクの名前です。

- SPECIALRUNでは、初期ロードReplicatを継続的なプロセスではなく1回かぎりの実行として指定します。

9. ターゲット・システムで、次のコマンドを発行して初期ロードReplicatのパラメータ・ファイルを作成します。

EDIT PARAMS initial-load_Replicat

10. 表16-6にリストされている順序でパラメータを入力します。パラメータ文ごとに新規行を開始します。Oracle GoldenGateダイレクト・ロード用の初期ロードReplicatパラメータ・ファイルの例を次に示します。

REPLICAT initrep
TARGETDB mydb, USERIDALIAS ogg
SOURCEDEFS /ggs/dirdef/source_defs
MAP hr.*, TARGET hr.*;
MAP sales.*, TARGET hr.*;

表16-6 Oracle GoldenGateダイレクト・ロードのための初期ロードReplicatのパラメータ

パラメータ

説明

REPLICAT initial-load_Replicat

Managerで起動する初期ロードReplicatタスクを指定します。初期ロードReplicatを作成したときに指定した名前を使用します。

[TARGETDB dsn | container | catalog]
[, USERIDALIAS alias, options |
, USERID user, options]

データベース接続情報を指定します。

TARGETDBには、ターゲットのデータソース名(DSN)、OracleコンテナまたはSQL/MXカタログを指定します。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

USERIDとUSERIDALIASで、必要に応じてデータベース資格証明を指定します。セキュリティ・オプションの詳細は、Oracle GoldenGateのセキュリティの構成を参照してください。

{SOURCEDEFS full_pathname} |
ASSUMETARGETDEFS

- SOURCEDEFSは、ソース表とターゲット表に異なる定義が含まれる場合に使用します。DEFGENによって生成されたソース定義ファイルを指定します。

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

データ定義の解釈方法を指定します。データ定義ファイルの詳細は、メタデータへのレプリケートされたデータの関連付けを参照してください。

SOURCECATALOG

以降のMAP文に対して、デフォルトのソースOracleコンテナまたはソースSQL/MXカタログを指定します。それらのデータベースに対して3つの部分からなる名前が必要とされる場合に、2つの部分からなる名前(schema.object)を使用できるようにします。このパラメータのインスタンスを複数使用すると、MAPのパラメータの異なる組合せに対して、異なるデフォルト・コンテナまたはカタログを指定できます。

MAP [container. | catalog.]owner.object,
TARGET owner.object[, DEF template]
;

単一または複数のソース・オブジェクトと、単一または複数のターゲット・オブジェクトの関係を指定します。MAPにはソース・オブジェクトを指定し、TARGETにはターゲット・オブジェクトを指定します。

ソース・オブジェクトに対して、オブジェクトの完全修飾名(複数オブジェクトの場合は完全修飾ワイルドカード表記)を指定します。Oracleマルチテナント・コンテナ・データベースまたはSQL/MXデータベースの場合、SOURCECATALOGが使用されていないかぎり、ソース・オブジェクト名にコンテナまたはカタログの名前を含める必要があります。

ターゲット・オブジェクトに対しては、データベースに関係なく、名前のowner.objectコンポーネントだけを指定します。Replicatは1つのOracleコンテナまたはSQL/MXカタログにのみ接続できます。データのロード先の各コンテナまたはカタログごとに、別々のReplicatプロセスを使用してください。

パラメータ・ファイル内のオブジェクト名指定のガイドラインは、「Oracle GoldenGateの入力におけるオブジェクト名の指定」を参照してください。

DEFオプションは、定義テンプレートを指定します。データ定義の詳細は、「レプリケートされたデータとメタデータとの関連付け」を参照してください。MAPパラメータの詳細とオプションについては、『Oracle GoldenGateリファレンスfor Windows and UNIX』を参照してください。

CATALOGEXCLUDE

SCHEMAEXCLUDE

MAPEXCLUDE

EXCLUDEWILDCARDOBJECTSONLY

関連付けられたMAP文のワイルドカード表記から特定のソース・オブジェクトを除外するために、互いに組み合せて使用できるパラメータ。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

11. Oracle GoldenGateリファレンスfor Windows and UNIXにリストされているReplicatの適切なオプション・パラメータを入力します。

12. パラメータ・ファイルを保存して閉じます。

13. ソース・システムで、変更の抽出を開始します。

START EXTRACT group

14. Replicatのパラメータ・ファイルを表示して、HANDLECOLLISIONSパラメータがリストされていることを確認します。リストされていない場合は、このパラメータをファイルに追加します。

15. (Oracleで順序をレプリケートする場合)update.Sequenceに対するEXECUTE権限を持つユーザーとしてDBLOGINコマンドを発行します。

GGSCI> DBLOGIN USERID DBLOGINuser, PASSWORD password [encryption_options]

16. (Oracleで順序をレプリケートする場合)次のコマンドを発行して各ソース順序を更新し、REDOを生成します。このREDOから、Replicatがターゲット上の順序の初期同期を実行します。順序(所有者ではない)の名前は、任意の文字またはすべて文字をアスタリスク・ワイルドカードで表すことができます。

FLUSH SEQUENCE owner.sequence

17. ソース・システムで、初期ロードExtractを起動します。

START EXTRACT initial-load_Extract

注意:

初期ロードReplicatは起動しないでください。Managerプロセスで自動的に起動し、ロードの完了時に終了します。

18. ターゲット・システムで、次のコマンドを発行してロードが終了したかどうかを確認します。ロードが終了するまで待機してから、次の手順に進みます。

VIEW REPORT initial-load_Replicat

19. ターゲット・システムで、変更のレプリケーションを開始します。

START REPLICAT group

20. ターゲット・システムで、次のコマンドを発行して変更のレプリケーションのステータスを確認します。

INFO REPLICAT group

21. 初期ロード中に生成されたすべての変更データがReplicatにより適用されたことを確認するまで、INFO REPLICATコマンドを発行し続けます。たとえば、初期ロードExtractが12:05に停止した場合、Replicatによってその時刻までデータが適用されていることを確認します。

22. ターゲット・システムで、次のコマンドを発行してHANDLECOLLISIONSパラメータをオフにし、初期ロードのエラー処理を無効化します。

SEND REPLICAT group, NOHANDLECOLLISIONS

23. ターゲット・システムで、Replicatのパラメータ・ファイルを編集してHANDLECOLLISIONSパラメータを削除します。これによって、次回Replicatが起動したときにHANDLECOLLISIONSが再度有効化されることを防止します。

注意:

ローカル・オペレーティング・システムのものとは異なるキャラクタ・セットを使用した既存のパラメータ・ファイル(CHARSETオプションを使用して別のキャラクタ・セットを指定したファイルなど)は、VIEW PARAMSコマンドまたはEDIT PARAMSコマンドを使用して表示や編集を行わないでください。そのようなパラメータ・ファイルはGGSCIの外部から表示してください。そうしないと、内容が破損する可能性があります。

24. パラメータ・ファイルを保存して閉じます。これ以降、Oracle GoldenGateでデータ変更の同期が続けられます。

16.7 ダイレクト・バルク・ロードを使用したSQL*Loaderへのデータのロード

Oracle SQL*Loaderユーティリティを使用してターゲット・データを構築するには、Oracle GoldenGateの初期ロードExtractを実行してソース・レコードを抽出し、それらのレコードを初期ロードReplicatタスクに直接送信します。タスクは、Managerプロセスによって動的に起動されるプロセスであり、Collectorプロセスやファイルを使用する必要はありません。初期ロードReplicatタスクは、SQL*LoaderのAPIとのインタフェースになり、ダイレクト・パス・バルク・ロードとしてデータをロードします。データ・マッピングと変換は、初期ロードExtractまたは初期ロードReplicat、あるいはその両方で行えます。ロード中、変更同期グループは、増分変更を抽出してレプリケートします。その後、これらの変更は、ロードの結果に応じて調整されます。

Replicatで使用するポートを制御し、検索およびバインドのプロセスを高速化するには、Managerのパラメータ・ファイルでDYNAMICPORTLISTパラメータを指定します。Managerは、このパラメータで指定されたポート番号のリストをReplicatタスク・プロセスに渡します。Replicatはまずこのリストのポートを検索し、リストのポートが使用できない場合にのみ、デフォルトのManagerポート番号からスキャンを開始して、使用可能なポートが見つかるまで昇順でスキャンを続けます。

このメソッドは、標準的な文字、数字、日時データ型の他に、CLOB、NCLOB、BLOB、LONG、XML、および次の属性とともに埋め込まれているユーザー定義データ型(UDT)もサポートします: CHAR、NCHAR、VARCHAR、NVARCHAR、RAW、NUMBER、DATE、FLOAT、TIMESTAMP、CLOB、BLOB、XMLおよびUDT。VARRAYSはサポートされていません。必要に応じて、ソースとターゲットの間でキャラクタ・セットが変換されます。

このメソッドはOracle内部表をサポートしていますが、ロード時に、ソースとターゲットのキャラクタ・セットを変換しません。

ダイレクト・バルク・ロードを使用してSQL*Loaderにデータをロードする手順

1. 初期ロードの前提条件の要件を満たしていることを確認します。

2. LOCK ANY TABLEをターゲットOracleデータベースのReplicatデータベース・ユーザーに付与します。

3. ソース・システムとターゲット・システムで、GGSCIを実行してManagerを起動します。

START MANAGER

4. ソース・システムで、次のコマンドを発行して初期ロードExtractを作成します。

ADD EXTRACT initial-load_Extract, SOURCEISTABLE

説明:

- initial-load_Extractは、8文字以内の初期ロードExtractの名前です。

- SOURCEISTABLEでは、ソース表から完全なレコードを直接読み取る初期ロード・プロセスとしてExtractを指定します。その他のADD EXTRACTサービス・オプションまたはデータソース引数を使用しないでください。

5. ソース・システムで、次のコマンドを発行して初期ロードExtractのパラメータ・ファイルを作成します。

EDIT PARAMS initial-load_Extract

6. 表16-7にリストされている順序でパラメータを入力します。パラメータ文ごとに新規行を開始します。SQL*Loaderへのダイレクト・バルク・ロード用の初期ロードExtractパラメータ・ファイルの例を次に示します。

EXTRACT initext
SOURCEDB mydb, USERIDALIAS ogg
RMTHOSTOPTIONS ny4387, MGRPORT 7888, ENCRYPT AES 192 KEYNAME mykey
RMTTASK REPLICAT, GROUP initrep
TABLE hr.*;
TABLE sales.*;

表16-7 SQL*Loaderへのダイレクト・バルク・ロードのための初期ロードExtractのパラメータ

パラメータ

説明

EXTRACT initial-load_Extract

初期ロードExtractを指定します。

[, USERIDALIAS alias, options |
, USERID user, options]

データベース接続情報を指定します。

USERIDとUSERIDALIASで、必要に応じてデータベース資格証明を指定します。セキュリティ・オプションの詳細は、Oracle GoldenGateのセキュリティの構成を参照してください。

RMTHOSTOPTIONS hostname,
MGRPORT portnumber
[, ENCRYPT algorithm KEYNAME keyname]

ターゲット・システム、Managerが稼働しているポート、およびTCP/IP経由でのデータ暗号化(オプション)を指定します。

RMTTASK replicat,
GROUP initial-load_Replicat

- initial-load_Replicatは、初期ロードReplicatグループの名前です。

ターゲット・システムのManagerに、初期ロードReplicatを1回かぎりのタスクとして動的に起動するように指示します。

TABLE [container.]owner.object;

オブジェクトの完全修飾名(複数オブジェクトの場合は完全修飾ワイルドカード表記)を指定します。データベースがOracleマルチテナント・コンテナ・データベースの場合は、SOURCECATALOGが使用されていないかぎり、オブジェクト名にコンテナの名前を含める必要があります。パラメータ・ファイル内のオブジェクト名指定のガイドラインは、「Oracle GoldenGateの入力におけるオブジェクト名の指定」を参照してください。

CATALOGEXCLUDE

SCHEMAEXCLUDE

TABLEEXCLUDE

EXCLUDEWILDCARDOBJECTSONLY

関連付けられたTABLE文のワイルドカード表記から特定のオブジェクトを除外するために、互いに組み合せて使用できるパラメータ。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

7. 適切なオプション・パラメータを入力します。

8. ファイルを保存して閉じます。

9. ターゲット・システムで、次のコマンドを発行して初期ロードReplicatを作成します。

ADD REPLICAT initial-load_Replicat, SPECIALRUN

説明:

- initial-load_Replicatは、初期ロードReplicatタスクの名前です。

- SPECIALRUNでは、初期ロードReplicatを、継続的プロセスではなく、ワンタイム・タスクとして識別します。

10. ターゲット・システムで、次のコマンドを発行して初期ロードReplicatのパラメータ・ファイルを作成します。

EDIT PARAMS initial-load_Replicat

11. 表16-8にリストされている順序でパラメータを入力します。パラメータ文ごとに新規行を開始します。SQL*Loaderへのダイレクト・ロード用の初期ロードReplicatパラメータ・ファイルの例を次に示します。

REPLICAT initrep
USERIDALIAS ogg
BULKLOAD
SOURCEDEFS /ggs/dirdef/source_defs
MAP hr.*, TARGET hr.*;
MAP sales.*, TARGET hr.*;

表16-8 SQL*Loaderへのダイレクト・ロードのための初期ロードReplicatのパラメータ

パラメータ

説明

REPLICAT initial-load_Replicat

Managerで起動する初期ロードReplicatタスクを指定します。初期ロードReplicatを作成したときに指定した名前を使用します。

[TARGETDB container]
[, USERIDALIAS alias, options |
, USERID user, options]

データベース接続情報を指定します。

TARGETDBはターゲットOracleコンテナを指定します。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

USERIDとUSERIDALIASで、必要に応じてデータベース資格証明を指定します。セキュリティ・オプションの詳細は、Oracle GoldenGateのセキュリティの構成を参照してください。

BULKLOAD

Oracle SQL*Loaderインタフェースと直接対話するようReplicatに指示します。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

{SOURCEDEFS full_pathname} |
ASSUMETARGETDEFS

- SOURCEDEFSは、ソース表とターゲット表に異なる定義が含まれる場合に使用します。DEFGENによって生成されたソース定義ファイルを指定します。

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

データ定義の解釈方法を指定します。データ定義ファイルの詳細は、メタデータへのレプリケートされたデータの関連付けを参照してください。

SOURCECATALOG

以降のMAP文に対して、デフォルトのソースOracleコンテナを指定します。3つの部分からなる名前が必要とされる場合に、2つの部分からなる名前(schema.object)を使用できるようにします。このパラメータのインスタンスを複数使用すると、MAPのパラメータの異なる組合せに対して、異なるデフォルト・コンテナを指定できます。

MAP [container.]owner.object,
TARGET owner.object[, DEF template]
;

単一または複数のソース・オブジェクトと、単一または複数のターゲット・オブジェクトの関係を指定します。MAPにはソース・オブジェクトを指定し、TARGETにはターゲット・オブジェクトを指定します。

ソース・オブジェクトに対して、オブジェクトの完全修飾名(複数オブジェクトの場合は完全修飾ワイルドカード表記)を指定します。Oracleマルチテナント・コンテナ・データベースの場合は、SOURCECATALOGが使用されていないかぎり、ソース・オブジェクト名にコンテナの名前を含める必要があります。

ターゲット・オブジェクトに対しては、データベースに関係なく、名前のowner.objectコンポーネントだけを指定します。Replicatは、1つのOracleコンテナにのみ接続できます。データのロード先の各コンテナごとに、別々のReplicatプロセスを使用してください。

パラメータ・ファイル内のオブジェクト名指定のガイドラインは、「Oracle GoldenGateの入力におけるオブジェクト名の指定」を参照してください。

DEFオプションは、定義テンプレートを指定します。データ定義ファイルの詳細は、「メタデータへのレプリケートされたデータの関連付け」を参照してください。MAPパラメータの追加情報とオプションの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

CATALOGEXCLUDE

SCHEMAEXCLUDE

MAPEXCLUDE

EXCLUDEWILDCARDOBJECTSONLY

関連付けられたMAP文のワイルドカード表記から特定のソース・オブジェクトを除外するために、互いに組み合せて使用できるパラメータ。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

12. Oracle GoldenGateリファレンスfor Windows and UNIXにリストされているReplicatの適切なオプション・パラメータを入力します。

13. パラメータ・ファイルを保存して閉じます。

14. ソース・システムで、変更の抽出を開始します。

START EXTRACT group

15. Replicatのパラメータ・ファイルを表示して、HANDLECOLLISIONSパラメータがリストされていることを確認します。リストされていない場合は、このパラメータをファイルに追加します。

16. (Oracleで順序をレプリケートする場合)update.Sequenceに対するEXECUTE権限を持つユーザーとしてDBLOGINコマンドを発行します。

GGSCI> DBLOGIN USERID DBLOGINuser, PASSWORD password [encryption_options]

17. (Oracleで順序をレプリケートする場合)次のコマンドを発行して各ソース順序を更新し、REDOを生成します。このREDOから、Replicatがターゲット上の順序の初期同期を実行します。順序(所有者ではない)の名前は、任意の文字またはすべて文字をアスタリスク・ワイルドカードで表すことができます。

FLUSH SEQUENCE owner.sequence

18. ソース・システムで、初期ロードExtractを起動します。

START EXTRACT initial-load_Extract

注意:

初期ロードReplicatは起動しないでください。Managerプロセスで自動的に起動し、ロードの完了時に終了します。

19. ターゲット・システムで、次のコマンドを発行してロードが終了したことを確認します。ロードが終了するまで待機してから、次の手順に進みます。

VIEW REPORT initial-load_Extract

20. ターゲット・システムで、変更のレプリケーションを開始します。

START REPLICAT group

21. ターゲット・システムで、次のコマンドを発行して変更のレプリケーションのステータスを確認します。

INFO REPLICAT group

22. 初期ロード中に生成されたすべての変更データがReplicatにより適用されたことを確認するまで、INFO REPLICATコマンドを発行し続けます。たとえば、初期ロードExtractが12:05に停止した場合、Replicatによってその時刻までデータが適用されていることを確認します。

23. ターゲット・システムで、次のコマンドを発行してHANDLECOLLISIONSパラメータをオフにし、初期ロードのエラー処理を無効化します。

SEND REPLICAT group, NOHANDLECOLLISIONS

24. ターゲット・システムで、Replicatのパラメータ・ファイルを編集してHANDLECOLLISIONSパラメータを削除します。これによって、次回Replicatが起動したときにHANDLECOLLISIONSが再度有効化されることを防止します。

注意:

ローカル・オペレーティング・システムのものとは異なるキャラクタ・セットを使用した既存のパラメータ・ファイル(CHARSETオプションを使用して別のキャラクタ・セットを指定したファイルなど)は、VIEW PARAMSコマンドまたはEDIT PARAMSコマンドを使用して表示や編集を行わないでください。そのようなパラメータ・ファイルはGGSCIの外部から表示してください。そうしないと、内容が破損する可能性があります。

25. パラメータ・ファイルを保存して閉じます。

これ以降、Oracle GoldenGateでデータ変更の同期が続けられます。

16.8 Teradataロード・ユーティリティを使用したデータのロード

2つのTeradataデータベースを同期する場合に推奨される方法は、任意のTeradataデータ・ロード・ユーティリティを使用することです。推奨されるユーティリティはMultiLoadです。

この手順では、ExtractおよびReplicatの変更同期グループが使用できる状態で、Teradataレプリケーション用に適切に構成されている必要があります。詳細は、オンライン変更同期の構成を参照してください。

複数のExtractグループおよびReplicatグループを使用する場合、すべてのグループで必要に応じて各手順を実行してください。

Teradataロード・ユーティリティを使用してデータをロードする手順

1. ユーティリティで必要とされるスクリプトを作成します。

2. プライマリExtractグループを起動します。

START EXTRACT group

3. データ・ポンプを起動します(使用する場合)。

START EXTRACT data_pump

4. Replicatのパラメータ・ファイルを編集のために開きます。

注意:

ローカル・オペレーティング・システムのものとは異なるキャラクタ・セットを使用した既存のパラメータ・ファイル(CHARSETオプションを使用して別のキャラクタ・セットを指定したファイルなど)は、VIEW PARAMSコマンドまたはEDIT PARAMSコマンドを使用して表示や編集を行わないでください。そのようなパラメータ・ファイルはGGSCIの外部から表示してください。そうしないと、内容が破損する可能性があります。

5. Replicatのパラメータ・ファイルに次のパラメータを追加します。

END RUNTIME
HANDLECOLLISIONS

- END RUNTIMEでは、Replicatに対し、Replicatの起動時以降のタイムスタンプを持つOracle GoldenGateの証跡レコードを読み取った時点で正常に終了するように指示します。

- HANDLECOLLISIONSでは、Replicatに対し、トランザクション変更とコピー結果のコリジョンによって発生するエラーを解決する手段として、重複レコードを上書きし、欠落レコードを無視するように指示します。

6. Replicatのパラメータ・ファイルを保存して閉じます。

7. ロード・ユーティリティを起動します。

8. ターゲットでロードが完了したら、Replicatプロセスを起動します。

9. 各Replicatプロセスが停止したら、パラメータ・ファイルからHANDLECOLLISIONSパラメータとEND RUNTIMEパラメータを削除します。

10. Replicatプロセスを再起動します。これで2つのデータベースは同期し、Oracle GoldenGateのレプリケーションを通じて最新状態に維持されます。

17 Oracle GoldenGate処理のカスタマイズ

この章では、Oracle GoldenGate処理をカスタマイズする方法について説明します。

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

- SQLEXECを使用したコマンド、ストアド・プロシージャおよび問合せの実行

- Oracle GoldenGateマクロを使用した作業の簡略化および自動化

- ユーザー・イグジットを使用したOracle GoldenGate機能の拡張

- イベント・マーカー・システムを使用したデータベース・イベントの起動

17.1 SQLEXECを使用したコマンド、ストアド・プロシージャおよび問合せの実行

Oracle GoldenGateのSQLEXECパラメータによって、ExtractおよびReplicatでデータベースと通信し、次の処理を実行できます。

- データベース・コマンド、ストアド・プロシージャまたはSQL問合せの実行によるデータベース機能の実行、結果の返却(SELECT文)またはDML操作の実行(INSERT、UPDATE、DELETE)が可能です。

- プロシージャから出力パラメータを取得してFILTER句またはCOLMAP句に入力できます。

17.1.1 SQLEXECを使用した処理の実行

SQLEXECによって、Oracle GoldenGateではデータベースのネイティブSQLを使用してカスタム処理命令を実行できるため、Oracle GoldenGateとデータベース両方の機能が拡張されます。

- ストアド・プロシージャおよび問合せを使用して、データベースを対象とするデータの選択または挿入、データの集計、データの非正規化または正規化、あるいは入力にデータベース操作を必要とする他の任意の機能を実行できます。Oracle GoldenGateでは、入力を取得するストアド・プロシージャと出力を生成するストアド・プロシージャがサポートされます。

- データベース・コマンドを発行して、Oracle GoldenGate処理を効率化するために必要なデータベース機能を実行できます(ターゲット表に対するトリガーを無効化して、その後再度有効化するなど)。

17.1.2 SQLEXECの使用

SQLEXECパラメータは、次の方法で使用できます。

- TABLE文またはMAP文の句として

- ExtractまたはReplicatのパラメータ・ファイルのルート・レベルに存在するスタンドアロン・パラメータとして

17.1.3 TABLE文またはMAP文内でのSQLEXECの実行

TABLE文またはMAP文内で使用する場合、SQLEXECでパラメータを受け渡したり、受け入れたりすることができます。プロシージャおよび問合せに使用できますが、データベース・コマンドには使用できません。

構文

この構文は、TABLE文またはMAP文内でプロシージャを実行します。

SQLEXEC (SPNAME sp_name,
[ID logical_name,]
{PARAMS param_spec | NOPARAMS})

引数

説明

SPNAME

ストアド・プロシージャを実行するための句を開始する必須キーワード。

sp_name

実行するストアド・プロシージャの名前を指定します。

Informixの場合、ストアド・プロシージャを3つの部分からなる名前として指定する必要があります。例: mydatabase.myschema.myproc。

ID logical_name

プロシージャの論理名を定義します。このオプションを使用して、TABLE文またはMAP文内でプロシージャを複数回実行します。プロシージャを1回のみ実行する場合は不要です。

PARAMS param_spec |
NOPARAMS

プロシージャでパラメータを受け入れるかどうかを指定します。これらのオプションのいずれかを使用する必要があります(「入力パラメータと出力パラメータの使用」を参照)。

構文

この構文は、TABLE文またはMAP文内で問合せを実行します。

SQLEXEC (ID logical_name, QUERY ' query ',
{PARAMS param_spec | NOPARAMS})

引数

説明

ID logical_name

問合せの論理名を定義します。問合せの結果から値を抽出するには、論理名が必要です。ID logical_nameは、問合せによって戻される列値を参照します。

QUERY ' sql_query '

データベースに対して実行するSQL問合せの構文を指定します。これにより、SELECT文を使用して結果を戻すか、INSERT文、UPDATE文またはDELETE文を使用してデータベースを変更することが可能になります。問合せは、一重引用符で囲み、全体を1行で記述する必要があります。大/小文字が区別されるオブジェクト名を、データベースに格納されているとおりに指定します。たとえば、Oracleの大/小文字が区別される名前の場合は引用符で囲みます。

SQLEXEC 'SELECT "col1" from "schema"."table"'

PARAMS param_spec |
NOPARAMS

問合せでパラメータを受け入れるかどうかを定義します。これらのオプションのいずれかを使用する必要があります(「入力パラメータと出力パラメータの使用」を参照)。

現在のデータベースではなく、異なるデータベースにある表で問合せを実行する場合は、異なるデータベース名を表で指定する必要があります。データベース名および表名の間の区切り記号はコロン(:)にする必要があります。使用例を次に示します。

select col1 from db1:tab1
select col2 from db2:schema2.tab2
select col3 from tab3
select col3 from schema4.tab4

17.1.4 スタンドアロン文としてのSQLEXECの実行

ExtractまたはReplicatのパラメータ・ファイルでスタンドアロン・パラメータ文として使用する場合、SQLEXECは、ストアド・プロシージャ、問合せまたはデータベース・コマンドを実行できます。この場合、このパラメータを特定の表に関連付ける必要はなく、一般的なSQL操作を実行するために使用できます。たとえば、Oracle GoldenGateのデータベース・ユーザー・アカウントがアイドル時にタイムアウトされるように構成されている場合、SQLEXECを使用して、Oracle GoldenGateが見かけ上アイドル状態とならないように、定義した間隔で問合せを実行できます。別の例としては、SQLEXECを使用して、ターゲット・トリガーの無効化などの重要なデータベース・コマンドを発行できます。スタンドアロンのSQLEXEC文では、入力パラメータを受け入れることや、出力パラメータを戻すことはできません。

パラメータ構文

目的

SQLEXEC 'call procedure_name()'

ストアド・プロシージャの実行

SQLEXEC 'sql_query'

問合せの実行

SQLEXEC 'database_command'

データベース・コマンドの実行

引数

説明

'call
procedure_name ()'

実行するストアド・プロシージャ名を指定します。文は一重引用符で囲む必要があります。

例:

SQLEXEC 'call prc_job_count ()'

'sql_query'

実行する問合せ名を指定します。問合せは、全体を1行で記述し、一重引用符で囲む必要があります。

大/小文字の区別されるオプション名を、データベースに格納されているとおりに指定します。たとえば、大/小文字が区別されるOracleオブジェクト名の場合は二重引用符で囲みます。

SQLEXEC 'SELECT "col1" from "schema"."table"'

'database_command'

実行するデータベース・コマンドを指定します。データベースにとって有効なコマンドである必要があります。

SQLEXECには、処理動作、メモリー使用およびエラー処理を制御するためのオプションがあります。詳細は、『Oracle GoldenGate for Windows and UNIXリファレンス』を参照してください。

17.1.5 入力パラメータと出力パラメータの使用

Oracle GoldenGateでは、TABLE文またはMAP文内のSQLEXECで実行されるプロシージャまたは問合せを対象として入力値と出力値を受け渡すためのオプションを提供しています。

17.1.5.1 入力パラメータへの値の受渡し

ストアド・プロシージャまたは問合せ内の入力パラメータにデータ値を渡すには、SQLEXECのPARAMSオプションを使用します。

構文

PARAMS ([OPTIONAL | REQUIRED] param = {source_column | function}
[, ...] )

説明:

- OPTIONALは、SQLの実行にパラメータ値が必要ないことを示します。必要なソース列がデータベース操作で見つからない場合、またはソース列が見つからないために列変換ファンクションを完了できない場合でも、SQLは実行されます。

- REQUIREDは、パラメータ値が存在している必要があることを示します。パラメータ値が存在しない場合、SQLは実行されません。

- paramは次のいずれかとなります。

- ストアド・プロシージャの場合、ストアド・プロシージャ内の入力を受け付ける任意のパラメータ名(参照表の列など)です。

- Oracle問合せの場合、問合せの任意の入力パラメータの名前(先頭のコロンを除く)です。たとえば、:param1の場合は、PARAMS句ではparam1と指定します。

- Oracle以外の問合せの場合はpn (nは1から始まるパラメータの番号)です。たとえば、パラメータが2個の問合せでは、paramエントリはp1およびp2です。

- {source_column | function}は、プロシージャへの入力を提供する列またはOracle GoldenGate変換関数です。

17.1.5.2 出力パラメータへの値の受渡し

ストアド・プロシージャまたは問合せからの値を入力値としてFILTER句またはCOLMAP句に渡すには、次の構文を使用します。

構文

{procedure_name | logical_name}.parameter

説明:

- procedure_nameは、ストアド・プロシージャの実際の名前です。この引数は、現在のOracle GoldenGateプロセスの有効期間中にプロシージャを1回実行する場合にのみ使用します。

- logical_nameは、SQLEXECのIDオプションで指定した論理名です。この引数は、問合せを実行する場合、またはストアド・プロシージャを複数回実行する場合に使用します。

- parameterは、パラメータの名前またはRETURN_VALUE (戻り値を抽出する場合)です。

17.1.5.3 パラメータを使用するSQLEXECの例

これらの例では、入力パラメータと出力パラメータを使用するストアド・プロシージャと問合せを使用します。

注意:

プロシージャまたは問合せにパラメータが含まれる場合、追加のSQLEXECオプションを使用できます。SQLEXECの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

例17-1 ストアド・プロシージャを使用するSQLEXEC

この例では、SQLEXECを使用して、コードに基づいて説明を戻す問合せを実行するLOOKUPというストアド・プロシージャを実行します。その後、NEWACCT_VALという名前のターゲット列に結果をマップします。

CREATE OR REPLACE PROCEDURE LOOKUP
(CODE_PARAM IN VARCHAR2, DESC_PARAM OUT VARCHAR2)
BEGIN
SELECT DESC_COL
INTO DESC_PARAM
FROM LOOKUP_TABLE
WHERE CODE_COL = CODE_PARAM
END;

MAP文の内容:

MAP sales.account, TARGET sales.newacct, &
SQLEXEC (SPNAME lookup, PARAMS (code_param = account_code)), &
COLMAP (newacct_id = account_id, newacct_val = lookup.desc_param);

SQLEXECは、LOOKUPストアド・プロシージャを実行します。SQLEXEC句内のPARAMS (code_param = account_code)文では、code_paramをプロシージャ・パラメータとして識別し、account表のaccount_code列から入力値を受け入れます。

Replicatでは、列マップを実行する前にLOOKUPストアド・プロシージャが実行されるため、COLMAP句によりその結果を抽出してnewacct_val列にマップできます。

例17-2 問合せを使用するSQLEXEC

この例では、前述の例で使用されているものと同じロジックを実装していますが、ストアド・プロシージャのかわりにSQL問合せを実行し、列マップで@GETVAL関数を使用します。

問合せは1行である必要があります。また、Oracle GoldenGateのパラメータ文を複数の行に分割する場合、行末にアンパサンド(&)が必要です。

Oracleデータベースの問合せ:

MAP sales.account, TARGET sales.newacct, &
SQLEXEC (ID lookup, &
QUERY 'select desc_col desc_param from lookup_table where code_col = :code_param', &
PARAMS (code_param = account_code)), &
COLMAP (newacct_id = account_id, newacct_val = &
@getval (lookup.desc_param));

Oracle以外のデータベースの問合せ:

MAP sales.account, TARGET sales.newacct, &
SQLEXEC (ID lookup, &
QUERY 'select desc_col desc_param from lookup_table where code_col = ?', &
PARAMS (p1 = account_code)), &
COLMAP (newacct_id = account_id, newacct_val = &
@getval (lookup.desc_param));

17.1.6 SQLEXECエラーの処理

SQLEXECを実装する場合に考慮する必要のあるエラー状態には、次の2つのタイプがあります。

- 列マップで、ソース・データベースの操作から欠落している列が必要とされる場合。これは、データベースで、すべての列の値でなく、変更された列の値だけが記録される場合の更新操作で発生する可能性があります。デフォルトでは、必要な列が欠落している場合、またはOracle GoldenGate列変換関数で列の欠落状態が発生した場合には、ストアド・プロシージャは実行されません。その後、ストアド・プロシージャから出力パラメータを抽出しようとすると、COLMAP句またはFILTER句で列の欠落状態が発生します。

- データベースでエラーが生成された場合。

17.1.6.1 紛失した列値の処理

@COLTEST関数を使用して、渡されたパラメータの結果をテストし、必要に応じて欠落値を埋めるために列の代替値をマップします。別の方法として、列値を使用できるようにするため、TABLEパラメータのFETCHCOLSオプションまたはFETCHCOLSEXCEPTオプションを使用して、ログに存在しない値をデータベースからフェッチできます。列をフェッチするかわりに、該当する列のサプリメンタル・ロギングを有効化できます。

17.1.6.2 データベース・エラーの処理

SQLEXEC句のERRORオプションを使用して、Oracle GoldenGateに次のいずれかの方法でレスポンスするように指示します。

表17-1 ERRORオプション

アクション

説明

IGNORE

Oracle GoldenGateに、ストアド・プロシージャまたは問合せに関連するすべてのエラーを無視させ、処理を継続させます。どのパラメータ抽出の結果も、列の欠落状態となります。これはデフォルトです。

REPORT

ストアド・プロシージャまたは問合せに関連するすべてのエラーが破棄ファイルにレポートされるようにします。このレポートは、エラーの原因の追跡に役立ちます。ここには、エラーの説明と、プロシージャまたは問合せとやり取りしたパラメータの値の両方が含まれます。Oracle GoldenGateで、エラーのレポート後、処理が続けられます。

RAISE

Replicatのパラメータ・ファイルに指定されたREPERRORパラメータの設定によるルールに従ってエラーを処理します。Oracle GoldenGateは、エラーを処理する前に、現在のTABLE文またはMAP文に関連付けられた他のストアド・プロシージャまたは問合せの処理を継続します。

FINAL

実行方法はRAISEとほぼ同じですが、プロシージャまたは問合せに関連付けられたエラーが発生すると、残りのすべてのストアド・プロシージャおよび問合せは省略されます。エラー処理は、エラーの直後にコールされます。

FATAL

プロシージャまたは問合せに関連するエラーを検出したときに、即座にOracle GoldenGateを異常終了させます。

17.1.7 SQLEXECのその他のガイドライン

次のSQLEXECガイドラインに従ってください。

- TABLEまたはMAPの1つのエントリで、最大20のプロシージャまたは問合せを実行できます。これらは、パラメータ文にリストされている順序で実行されます。

- SQLEXEC句よりも先に、Oracle GoldenGateユーザーのデータベース・ログイン情報を指定する必要があります。データベース・タイプおよび構成済の認証方式に応じて、Extractパラメータ・ファイルでSOURCEDBと、USERIDまたはUSERIDALIASパラメータの、いずれかまたは両方を使用するか、Replicatパラメータ・ファイルでTARGETDBと、USERIDまたはUSERIDALIASパラメータの、いずれかまたは両方を使用します。

- SQLは、Oracle GoldenGateユーザーによって実行されます。このユーザーは、ストアド・プロシージャを実行し、RDBM提供のプロシージャをコールする権限を持っている必要があります。

- ストアド・プロシージャまたは問合せ内のデータベース操作は、元のトランザクションと同じコンテキストでコミットされます。

- SQLEXECを使用して主キー列の値を更新しないでください。SQLEXECを使用してキー列の値を更新すると、元のキー値が使用できなくなるため、Replicatプロセスで後続の更新操作または削除操作を実行できなくなります。キー値を変更する必要がある場合、元のキー値を別の列にマップして、TABLEパラメータまたはMAPパラメータのKEYCOLSオプションを使用してその列を指定できます。

- DB2では、Oracle GoldenGateはODBCのSQLExecDirect関数を使用してSQL文を動的に実行します。つまり、接続先のデータベース・サーバーは、文を動的に準備できる必要があります。ODBCは、実行のたびに(リクエストされる間隔で)SQL文を準備します。通常は、このことがOracle GoldenGateユーザーの問題になることはありません。詳細は、IBM DB2のドキュメントを参照してください。

- SQLEXECは、パススルー・モードのデータ・ポンプExtractによって処理されるオブジェクトに対して使用しないでください。

- SQLEXEC文中のオブジェクト名はすべて、データベースに応じて、2つまたは3つの部分からなる完全修飾名である必要があります。

- SQLEXECのストアド・プロシージャまたは問合せの影響を受けるすべてのオブジェクトは、SQLの実行前に適切な構造で存在している必要があります。したがって、これらのオブジェクトの構造に影響するDDL (CREATEやALTERなど)は、SQLEXECの実行前に実行される必要があります。

- 単独SQLEXEC文によって影響を受けるすべてのオブジェクトは、Oracle GoldenGateプロセスの起動前に存在している必要があります。このため、DDLサポートは、これらのオブジェクトに対して無効にする必要があります。そうしないと、SQLEXECのプロシージャまたは問合せが実行される前に、DDL操作によって構造が変更されたり、オブジェクトが削除されたりする可能性があります。

- Informixの場合、Replicateを使用して同じプロセスの複数のターゲット・データベースにデータをレプリケートする場合は、DBOPTIONS SPTHREADパラメータおよびオプションをReplicatパラメータ・ファイルに使用する必要があります。SQLEXECの他の使用の場合、このパラメータは必須ではありません。

17.2 Oracle GoldenGateマクロを使用した作業の簡略化および自動化

パラメータ・ファイルでOracle GoldenGateマクロを使用すると、パラメータ、コマンドおよび変換関数を構成して再利用できるため、一般的なタスクを実行する際に入力する必要のあるテキストの量を減らすことができます。マクロとは、格納されている処理ステップのセットをOracle GoldenGateパラメータ・ファイルから呼び出すことを可能にする組込みの自動化ツールです。マクロには、頻繁に使用するパラメータ文の単純なセットを含めることも、パラメータ置換、計算または変換が連続する複雑な組合せを含めることもできます。1つのマクロから他のマクロを呼び出すことができます。よく使用するマクロをライブラリに格納すると、個別にマクロを呼び出さずにそのライブラリを呼び出すことができます。

Oracle GoldenGateマクロは、次のパラメータ・ファイルと連携して動作します。

- DEFGEN

- Extract

- Replicat

マクロは、パススルー・モードのデータ・ポンプExtractによって処理される表のデータを操作するために使用しないでください。

マクロの使用は、次の2つの手順で行います。

マクロの定義

マクロの呼出し

17.2.1 マクロの定義

Oracle GoldenGateマクロを定義するには、パラメータ・ファイルでMACROパラメータを使用します。MACROでは、必要な入力パラメータを定義し、マクロにより実行する処理を定義します。

構文

MACRO #macro_name
PARAMS (#p1, #p2 [, ...])
BEGIN
macro_body
END;

表17-2 マクロ定義の引数

引数

説明

MACRO

必須。Oracle GoldenGateマクロ定義の開始を指定します。

#macro_name

マクロ名。マクロおよびパラメータ名は、マクロ文字で開始する必要があります。デフォルトのマクロ文字は、番号記号(#)です(#macro1や#param1など)。

マクロまたはパラメータ名は、文字や数字(あるいはその両方)を含む1語にできます。アンダースコア文字(_)やハイフン(-)などの特殊文字を使用できます。マクロ名の例として、#mymacro、#macro1、#macro_1、#macro-1、#macro$などがあります。パラメータ名の例として、#sourcecol、#s、#col1、#col_1などがあります。

解析エラーを回避するため、マクロ名の最初の文字としてマクロ文字を使用することはできません。たとえば、##macroは無効です。必要な場合、MACROCHARパラメータを使用してマクロ文字を変更できます。Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

マクロ名とパラメータ名では、大/小文字は区別されません。引用符内のマクロ名またはパラメータ名は、無視されます。

PARAMS (#p1, #p2)

入力パラメータのオプション定義。パラメータ名のカンマ区切りリストを指定して、カッコで囲みます。入力値を置換するマクロ本体で、各パラメータを参照する必要があります。各パラメータを個別の行にリストすると読みやすくなります(必ず開きカッコと閉じカッコを使用してパラメータ・リストを囲んでください)。詳細は、「パラメータを含むマクロの呼出し」を参照してください。

BEGIN

マクロ本文を開始します。マクロ本文の前に指定する必要があります。

macro_body

マクロ本体。本体は、マクロにより実行される関数を定義する構文の文です。マクロ本体には、次のタイプの文を含めることができます。

- 次のような単純なパラメータ文:

COL1 = COL2

- 次のようなパラメータ置換を含む複雑なパラメータ文:

MAP #o.#t, TARGET #o.#t, KEYCOLS (#k), COLMAP (USEDEFAULTS);

- 次のような他のマクロの呼出し:

#colmap (COL1, #sourcecol)

END;

マクロ定義を終了します。定義の末尾にはセミコロンが必要です。

パラメータを含むマクロ定義の例を次に示します。この場合、マクロでは、所有者、表およびKEYCOLS列の名前に解決される入力パラメータを含むMAP文のベース構文を提供することによって、オブジェクトおよび列のマッピングのタスクを簡略化します。

MACRO #macro1
PARAMS ( #o, #t, #k )
BEGIN
MAP #o.#t, TARGET #o.#t, KEYCOLS (#k), COLMAP (USEDEFAULTS);
END;

パラメータを定義していないマクロの例を次に示します。頻繁に使用するパラメータのセットを実行します。

MACRO #option_defaults
BEGIN
GETINSERTS
GETUPDATES
GETDELETES
INSERTDELETES
END;

17.2.2 マクロの呼出し

この項では、マクロの呼出し方法について説明します(マクロを定義するには、「マクロの定義」を参照してください)。

マクロを呼び出すには、パラメータ・ファイル内のマクロの実行場所に次の構文を使用します。

構文

[target =] macro_name (val[, ...])

[target =] macro_name (val | {val, val, ...}[, ...])

表17-3 マクロを呼び出すための構文要素

引数

説明

target =

オプションです。マクロ処理の結果の割当て先またはマップ先のターゲットを指定します。たとえば、targetを使用して、COLMAP文でターゲット列を指定できます。次に示す#make_dateマクロの呼出しでは、列DATECOL1がターゲットであり、マクロ結果にマップされます。

DATECOL1 = #make_date (YR1, MO1, DAY1)

ターゲットがない場合、#make_dateを呼び出すための構文は次のとおりです。

#make_date (YR1, MO1, DAY1)

macro_name

呼び出されるマクロの名前(例: #make_date)。

( val[, ...])

パラメータ入力値。このコンポーネントは、マクロがパラメータを定義しているかどうかにかかわらず必須です。マクロがパラメータを定義している場合、MACROパラメータ内のパラメータ定義に対応する順序で入力値のカンマ区切りリストを指定し、リストをカッコで囲みます。マクロがパラメータを定義していない場合、中に何もない開きカッコと閉じカッコを指定します。この構文の詳細は、次を参照してください。

パラメータを含むマクロの呼出し

入力パラメータのないマクロの呼出し

( val | {val, val, ...} )[, ...]

パラメータ入力値。このコンポーネントは、マクロがパラメータを定義しているかどうかにかかわらず必須です。マクロがパラメータを定義している場合、MACROパラメータ内のパラメータ定義に対応する順序で入力値のカンマ区切りリストを指定し、リストをカッコで囲みます。複数の値を1つのパラメータに渡すには、それらをカンマで区切り、リストを中カッコで囲みます。マクロがパラメータを定義していない場合、中に何もない開きカッコと閉じカッコを指定します。この構文の詳細は、次を参照してください。

パラメータを含むマクロの呼出し

入力パラメータのないマクロの呼出し

17.2.2.1 パラメータを含むマクロの呼出し

パラメータを含むマクロを呼び出すには、call文で、マクロの実行時にこれらのパラメータを置換する入力値を指定する必要があります。表17-3の構文を参照してください。

マクロ・パラメータの有効な入力は、マクロ文字(デフォルトは#)で始まる次のいずれかです。

- プレーン・テキストまたは引用テキストの単一値(#macro (#name, #address, #phone)、#macro (#"name", #"address", #"phone")など)。

- 中カッコで囲まれたカンマ区切りの値リスト(#macro1 (SCOTT, DEPT, {DEPTNO1, DEPTNO2, DEPTNO3})など)。指定されたパラメータの値のブロックを置換できるようにすると、マクロ定義とOracle GoldenGate構成のユーザビリティの柔軟性が向上します。

- 他のマクロの呼出し(#macro (#mycalc (col2, 100), #total)など)。この例では、入力値がcol2および100で#mycalcマクロが呼び出されます。

Oracle GoldenGateでは、次のルールに従ってマクロ本体のパラメータ値が置換されます。

1. マクロ・プロセッサは、マクロ本体を読み取って、PARAMS文に指定されたパラメータ名のインスタンスを検索します。

2. パラメータ名が出現するたびに、呼出し時に指定された対応するパラメータ値が置換されます。

3. パラメータ名がPARAMS文に出現しない場合、マクロ・プロセッサは、その項目が別のマクロの呼出しになっているかどうかを評価します。(「マクロからの他のマクロの呼出し」を参照)。呼出しが成功した場合、ネストされたマクロが実行されます。失敗した場合、マクロ全体が失敗します。

例17-3 パラメータを使用したMAP文の移入

次のマクロ定義は、解決が必要な3つのパラメータを指定しています。これらのパラメータは、MAP文の表所有者名(パラメータ#o)、表名(パラメータ#t)およびKEYCOLS列名(パラメータ#k)を置換します。

MACRO #macro1  PARAMS ( #o, #t, #k )  BEGIN  MAP #o.#t, TARGET #o.#t, KEYCOLS (#k), COLMAP (USEDEFAULTS); END;

MAP文の表にKEYCOLS列が1つのみ必要である場合、次の構文を使用して#macro1を呼び出すことができます。この構文では、1つのみの値で#kパラメータを解決できます。

#macro1 (SCOTT, DEPT, DEPTNO1)

2つのKEYCOLS列が必要な表のマクロを呼び出すには、次のように中括弧を使用して、列名に必要な両方の値を囲みます。

#macro1 (SCOTT, DEPT, {DEPTNO1, DEPTNO2})

DEPTNO1値およびDEPTNO2値は、#tパラメータを解決するための1つの引数として渡されます。この方法で、中括弧の内側に追加の値を使用して、3つ以上のKEYCOLSのある表を処理できます。

例17-4 マクロを使用した変換の実行

この例では、マクロで#year、#monthおよび#dayの各パラメータを定義して、独自仕様の日付書式を変換します。

MACRO #make_date
PARAMS (#year, #month, #day)
BEGIN
@DATE ('YYYY-MM-DD', 'CC', @IF (#year < 50, 20, 19), 'YY', #year, 'MM', #month, 'DD', #day)
END;

マクロはCOLMAP句で呼び出されます。

MAP sales.acct_tab, TARGET sales.account,
COLMAP
(
targcol1 = sourcecol1,
datecol1 = #make_date(YR1, MO1, DAY1),
datecol2 = #make_date(YR2, MO2, DAY2)
);

マクロは次のように展開されます。

MAP sales.acct_tab, TARGET sales.account,
COLMAP
(
targcol1 = sourcecol1,
datecol1 = @DATE ('YYYY-MM-DD', 'CC', @IF (YR1 < 50, 20, 19),'YY', YR1, 'MM', MO1, 'DD', DAY1),
datecol2 = @DATE ('YYYY-MM-DD', 'CC', @IF (YR2 < 50, 20, 19),'YY', YR2, 'MM', MO2, 'DD', DAY2)
);

17.2.2.2 入力パラメータのないマクロの呼出し

入力パラメータのないマクロを呼び出すには、call文で入力値のない開きカッコと閉じカッコ(#macro ())を指定します。

次のマクロは、入力パラメータなしで定義されています。本体には頻繁に使用するパラメータが含まれています。

MACRO #option_defaults
BEGIN
GETINSERTS
GETUPDATES
GETDELETES
INSERTDELETES
END;

このマクロは次のように呼び出されます。

#option_defaults ()
IGNOREUPDATES
MAP owner.srctab, TARGET owner.targtab;

#option_defaults ()
MAP owner.srctab2, TARGET owner.targtab2;

マクロは次のように展開されます。

GETINSERTS
GETUPDATES
GETDELETES
INSERTDELETES
IGNOREUPDATES
MAP owner.srctab, TARGET owner.targtab;

GETINSERTS
GETUPDATES
GETDELETES
INSERTDELETES
MAP owner.srctab2, TARGET owner.targtab2;

17.2.3 マクロからの他のマクロの呼出し

マクロから他のマクロを呼び出すには、次のようなマクロ定義を作成します。この例では、#make_dateマクロが#assign_dateマクロ内にネストされ、#assign_dateの実行時に呼び出されます。

ネストされたマクロは、ベース・マクロに定義された同じパラメータの全部またはサブセットを定義している必要があります。つまり、ベース・マクロの呼出し時の入力値が両方のマクロのパラメータに解決される必要があります。

次では、#assign_dateを定義しています。

MACRO #assign_date
PARAMS (#target_col, #year, #month, #day)
BEGIN
#target_col = #make_date (#year, #month, #day)
END;

次では、#make_dateを定義しています。このマクロでは、2桁の入力日付の前に世紀値(19または20)を付ける必要があるかどうかを最初に判別した後、4桁の年を含む日付書式を作成します。#make_dateのPARAMS文には、#assign_dateマクロ内のパラメータのサブセットが含まれています。

MACRO #make_date
PARAMS (#year, #month, #day)
BEGIN
@DATE ('YYYY-MM-DD', 'CC', @IF (#year < 50, 20, 19), 'YY', #year, 'MM', #month, 'DD', #day)
END;

次の構文は#assign_dateを呼び出します。

#assign_date (COL1, YEAR, MONTH, DAY)

前の入力値および埋込み#make_dateマクロを想定すると、マクロは次のように展開されます。

COL1 = @DATE ('YYYY-MM-DD', 'CC', @IF (YEAR < 50, 20, 19),'YY', YEAR, 'MM', MONTH, 'DD', DAY)

17.2.4 マクロ・ライブラリの作成

1つ以上のマクロを含むマクロ・ライブラリを作成できます。マクロ・ライブラリを使用すると、マクロを1回定義するだけで、そのマクロを多くのパラメータ・ファイルで使用できます。

マクロ・ライブラリを作成する手順

1. テキスト・エディタで新規ファイルを開きます。

2. 必要に応じて、コメント行を使用してライブラリを説明します。

3. 「マクロの定義」に記載されている構文を使用して、各マクロの構文を入力します。

4. ファイルを次の形式でOracle GoldenGateディレクトリのdirprmサブディレクトリに保存します。

filename.mac

説明:

filenameは、ファイルの名前です。.mac拡張子によって、ファイルをマクロ・ライブラリとして定義します。

次のdatelibというサンプル・ライブラリには、#make_dateおよび#assign_dateという2つのマクロが含まれます。

-- datelib macro library
--
MACRO #make_date
PARAMS (#year, #month, #day)
BEGIN
@DATE ('YYYY-MM-DD', 'CC', @IF (#year < 50, 20, 19), 'YY', #year, 'MM', #month, 'DD', #day)
END;

MACRO #assign_date
PARAMS (#target_col, #year, #month, #day)
BEGIN
#target_col = #make_date (#year, #month, #day)
END;

マクロ・ライブラリを使用するには、パラメータ・ファイルの先頭でINCLUDEパラメータを使用します。次のサンプルのReplicatパラメータ・ファイルを参照してください。

INCLUDE /ggs/dirprm/datelib.mac
REPLICAT rep
ASSUMETARGETDEFS
USERIDALIAS ogg
MAP fin.acct_tab, TARGET fin.account;

パラメータ・ファイルに長いマクロ・ライブラリが含まれる場合、NOLISTパラメータを使用して、ExtractまたはReplicatのレポート・ファイルで各マクロがリスト表示されることを抑止できます。リスト表示の有効化と無効化を切り替えるには、パラメータ・ファイル内またはマクロ・ライブラリ・ファイル内の任意の場所にLISTパラメータおよびNOLISTパラメータを配置します。次の例では、NOLISTによって、hugelibマクロ・ライブラリに含まれる各マクロのリスト表示を抑止します。INCLUDE文の後にLISTを指定することで、レポート・ファイルを通常のリスト表示に戻します。

NOLIST
INCLUDE /ggs/dirprm/hugelib.mac
LIST
INCLUDE /ggs/dirprm/mdatelib.mac
REPLICAT REP

17.2.5 マクロ展開のトレース

CMDTRACEパラメータを使用して、マクロ展開をトレースできます。CMDTRACEを有効化すると、マクロ展開ステップがExtractまたはReplicatのレポート・ファイルに表示されます。

構文

CMDTRACE [ON | OFF | DETAIL]

説明:

- ONは、トレースを有効化します。

- OFFは、トレースを無効化します。

- DETAILは、マクロ展開の詳細表示を生成します。

次の例では、トレースが#testmacの呼出し前に有効化され、マクロの実行後に無効化されます。

REPLICAT REP
MACRO #testmac
BEGIN
COL1 = COL2,
COL3 = COL4,
END;
...
CMDTRACE ON
MAP test.table1, TARGET test.table2,
COLMAP (#testmac);
CMDTRACE OFF

17.3 ユーザー・イグジットを使用したOracle GoldenGate機能の拡張

ユーザー・イグジットは、Cプログラミング・コードで記述してExtractまたはReplicatの処理中にコールするカスタム・ルーチンです。ユーザー・イグジットによって、複雑さとリスクを最小限に抑えながらExtractプロセスとReplicatプロセスの機能を拡張およびカスタマイズできます。ユーザー・イグジットの使用により、本番プログラムを変更することなく、データベース・イベントの発生時にレスポンスすることができます。

17.3.1 ユーザー・イグジットを実装する場合

ユーザー・イグジットは、Oracle GoldenGate内で使用できる列変換関数のかわりとして、またはそれらと組み合せて使用できます。ユーザー・イグジットは、データを2回(データの抽出時に1回と変換の実行時に1回)処理するかわりに、データの抽出時に1回のみ処理するため、組込み関数の代用として適しています。

ユーザー・イグジットは次の用途で実装できます。

- ある表から別の表へのマップ時における算術演算、データ変換または表検索の実行。

- レコード・アーカイブ関数のオフライン実装。

- 通常とは異なるデータベース・イベントに対するカスタム形式でのレスポンス(出力値に基づいて電子メール・メッセージまたは通知を送信するなど)。

- 合計値の蓄積および統計値の収集。

- レコードの操作。

- 無効なデータの修復。

- 更新前後のレコードにおける正味の差異の計算。

- 複雑な基準に基づいた抽出またはレプリケーションのためのレコードの受入れまたは拒否。

- 変換時のデータベースの正規化。

17.3.2 Oracle GoldenGateレコード情報のルーチンへの使用可能化

ほとんどのユーザー・イグジット処理の基本となるのがEXIT_CALL_PROCESS_RECORD関数です。Extractでは、この関数はレコード・バッファが証跡に出力される直前にコールされます。Replicatでは、これはレコードがターゲットに適用される直前にコールされます。パラメータ・ファイルにソースとターゲットのマッピングが指定されている場合、EXIT_CALL_PROCESS_RECORDイベントはマッピングの実行後に発生します。

EXIT_CALL_PROCESS_RECORDがコールされると、コールバック・ルーチンを通じて、レコード・バッファとその他のレコード情報が利用可能になります。ユーザー・イグジットは、マッピング、変換、クリーンアップ、その他すべての操作をデータ・レコードに対して実行できます。操作が完了したら、ユーザー・イグジットは、ExtractまたはReplicatによってレコードを処理するのか、無視するのかを示すステータスを戻すことができます。

17.3.3 ユーザー・イグジットの作成

次の内容は、WindowsおよびUNIXシステムでユーザー・イグジットを作成する場合に役立ちます。それらの説明に記載されているパラメータや関数の詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

注意:

ユーザー・イグジットは、データベース・オブジェクト名の大/小文字を区別します。名前は、ホスト・データベースで定義されたとおりに戻されます。オブジェクト名は完全修飾名である必要があります。

ユーザー・イグジットを作成する手順

1. Cコードで、共有オブジェクト(UNIXシステム)またはDLL(Windows)を作成し、ExtractまたはReplicatからコールするルーチンを作成またはエクスポートします。このルーチンは、Oracle GoldenGateとユーザー独自のルーチン間の通信ポイントになります。このルーチンに任意の名前を付けます。ルーチンでは、次のOracle GoldenGateユーザー・イグジット・パラメータを受け入れる必要があります。

- EXIT_CALL_TYPE: 処理中にいつルーチンをコールするかを指定します。

- EXIT_CALL_RESULT: ルーチンにレスポンスを提供します。

- EXIT_PARAMS: ルーチンに情報を提供します。この関数を使用すると、TABLE文またはMAP文のEXITPARAMオプションを使用して、リテラル文字列のパラメータをユーザー・イグジットに渡すことができます。これは、特定のレコードを処理するイグジット・コール中にのみ有効です。この関数を使用すると、イグジット・コール起動時にCUSEREXITパラメータのPARAMSオプションで指定されたパラメータを渡すこともできます。

2. ソース・コードで、usrdecs.hファイルをインクルードします。usrdecs.hファイルは、ユーザー・イグジットAPI用のインクルード・ファイルです。型定義、戻りステータス値、コールバック関数コード、および多数の他の定義が含まれます。usrdecs.hファイルは、Oracle GoldenGateディレクトリ内にインストールされます。このファイルは変更しないでください。

3. 必要に応じてOracle GoldenGateコールバック・ルーチンをユーザー・イグジットに含めます。コールバック・ルーチンは、レコードおよびアプリケーション・コンテキスト情報を取得して、データ・レコードの内容を変更します。コールバック・ルーチンを実装するには、共有オブジェクトでERCALLBACK関数を使用します。ユーザー・コールバック・ルーチンは、コールバック・ルーチンに渡される関数コードに基づいて異なる動作をします。

ERCALLBACK (function_code, buffer, result_code);

説明:

- function_codeは、コールバック・ルーチンによって実行される関数です。

- bufferは、指定した関数コードに関連付けられた事前定義構造を含むバッファへのvoidポインタです。

- result_codeは、コールバック・ルーチンによって実行される関数のステータスです。コールバック・ルーチンによって戻される結果コードは、コールバック関数が成功したかどうかを示します。

- Windowsシステムでは、ExtractおよびReplicatによって、ユーザー・イグジット・ルーチンからコールされるERCALLBACK関数がエクスポートされます。ユーザー・イグジットでは、適切なWindows APIコールを使用して実行時にコールバック関数を明示的にロードする必要があります。

4. ExtractまたはReplicatのパラメータ・ファイルにCUSEREXITパラメータを含めます。このパラメータでは、共有オブジェクトまたはDLLの名前と、ExtractまたはReplicatからコールされるエクスポート・ルーチンの名前を使用します。共有オブジェクトまたはDLLのフルパスを指定するか、オペレーティング・システムの標準検索機能を使用して共有オブジェクトの場所を特定できます。

CUSEREXIT {DLL | shared_object} routine
[, INCLUDEUPDATEBEFORES]
[, PARAMS 'startup_string']

説明:

- DLLはWindows DLLで、shared_objectはユーザー・イグジット関数を含むUNIX共有オブジェクトです。

- INCLUDEUPDATEBEFORESは、UPDATE操作のために変更前イメージを取得します。

- PARAMS 'startup_string'は、起動文字列(起動パラメータなど)を指定します。

例17-5 ベース構文の例(UNIX)

CUSEREXIT eruserexit.so MyUserExit

例17-6 ベース構文の例(Windows)

CUSEREXIT eruserexit.dll MyUserExit

17.3.4 ユーザー・イグジットでのキャラクタ・セット変換のサポート

データ整合性を保つには、ユーザー・イグジットで、Oracle GoldenGateプロセスと交換する文字型データのキャラクタ・セットを認識する必要があります。Oracle GoldenGateユーザー・イグジットのロジックでは、次のものに対するグローバリゼーション・サポートが提供されます。

- 文字ベースのデータベース・メタデータ(カタログ、スキーマ、表および列の名前など)

- 文字型の列(CHAR、VARCHAR2、CLOB、NCHAR、NVARCHAR2、NCLOBなど)の値や文字列ベースの数値、日時および期間

キャラクタ・セット間での適切な変換によって、列データの比較、操作、変換およびあるタイプのデータベースとキャラクタ・セットから別のものへの適切なマップが可能になります。この処理の大半は、EXIT_CALL_PROCESS_RECORDコール・タイプがコールされると実行され、レコード・バッファと他のレコード情報がコールバック・ルーチンを介して使用可能になります。

ユーザー・イグジットは独自のセッション・キャラクタ・セットを持ちます。これは、GET_SESSION_CHARSETおよびSET_SESSION_CHARSETコールバック関数によって定義されます。ユーザー・イグジットのキャラクタ・セットがプロセスのホスト・コンテキストと異なる場合、コール元のプロセスでキャラクタ・セット間の変換が行われます。

ユーザー・イグジットでこのサポートを有効にするために、GET_DATABASE_METADATAコールバック関数コードがあります。この関数によって、ユーザー・イグジットは、ロケールやコール元プロセス(Extract、データ・ポンプ、Replicat)と交換する文字型データのキャラクタ・セットなどのデータベース・メタデータを取得できます。データベースでのオブジェクト名の大/小文字の区別、引用符付きおよび引用符なしの名前の処理およびオブジェクト名の格納方法も返されます。

これらのコンポーネントの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

17.3.5 名前のメタデータをチェックするマクロの使用

ユーザー・イグジットAPIによって渡されるオブジェクト名は、ユーザー・イグジット・セッション・キャラクタ・セットでエンコードされた正確な名前で、データベースから取得されたものと完全に同じ名前です。ユーザー・イグジットでオブジェクト名をリテラル文字列と比較する場合、ユーザー・イグジットでデータベースのロケールを取得し、文字列を正規化して同じエンコーディングでオブジェクト名と比較できるようにする必要があります。

Oracle GoldenGateには、ユーザー・イグジットでコールし、データベース・オブジェクト名のメタデータをチェックできる次のマクロが用意されています。たとえば、マクロを使用して、引用符で囲まれた名前で大/小文字が区別されるかどうかや、大/小文字混在でデータベース・サーバーに格納されているかどうかをチェックできます。これらのマクロは、usrdecs.hファイルで定義されています。

表17-4 メタデータ・チェック用のマクロ

マクロ

確認の対象

supportsMixedCaseIdentifiers( nameMeta, DbObjType )

大/小文字混在で引用符で囲まれていない、指定されたデータ型の名前を、データベースが大/小文字を区別して処理し、大/小文字混在で格納するかどうか。

supportsMixedCaseQuotedIdentifiers( nameMeta, DBObjType )

大/小文字混在で引用符で囲まれた、指定されたデータ型の名前を、データベースが大/小文字を区別して処理し、大/小文字混在で格納するかどうか。

storesLowerCaseIdentifiers( nameMeta, DbObjType )

大/小文字混在で引用符で囲まれていない、指定されたデータ型の名前を、データベースが大/小文字を区別せずに処理し、小文字で格納するかどうか。

storesLowerCaseQuotedIdentifiers( nameMeta, DbObjType )

大/小文字混在で引用符で囲まれた、指定されたデータ型の名前を、データベースが大/小文字を区別せずに処理し、小文字で格納するかどうか。

storesMixedCaseIdentifiers( nameMeta, DbObjType )

大/小文字混在で引用符で囲まれていない、指定されたデータ型の名前を、データベースが大/小文字を区別せずに処理し、大/小文字混在で格納するかどうか。

storesMixedCaseQuotedIdentifiers( nameMeta, DbObjType )

大/小文字混在で引用符で囲まれた、指定されたデータ型の名前を、データベースが大/小文字を区別せずに処理し、大/小文字混在で格納するかどうか。

storesUpperCaseIdentifiers( nameMeta, DbObjType )

大/小文字混在で引用符で囲まれていない、指定されたデータ型の名前を、データベースが大/小文字を区別せずに処理し、大文字で格納するかどうか。

storesUpperCaseQuotedIdentifiers( nameMeta, DbObjType )

大/小文字混在で引用符で囲まれた、指定されたデータ型の名前を、データベースが大/小文字を区別せずに処理し、大文字で格納するかどうか。

17.3.6 文字形式の説明

入力パラメータcolumn_value_modeは、処理されるデータの文字形式を表し、いくつかの関数コードで使用されます。次の表では、EXIT_FN_RAW_FORMAT、EXIT_FN_CHAR_FORMATおよびEXIT_FN_CNVTED_SESS_FORMAT形式コードの意味を、データ型ごとに説明します。

表17-5 column_value_mode_matrixの意味

データ型

EXIT_FN_RAW_FORMAT

EXIT_FN_CHAR_FORMAT

EXIT_FN_CNVTED_SESS_FORMAT

CHAR

"abc"

2バイトNULLインジケータ +

2バイトの長さ情報

+ 列値

0000 0004 61 62 63 20

ASCIIまたはEBCDICでエンコードされた"abc"。

NULL終端。

末尾の空白は切り捨てられます。

ユーザー・イグジット・セッションのキャラクタ・セットでエンコードされた"abc"。

NOT NULL終端。

GLOBALSパラメータのNOTRIMSPACESが指定されていない場合、デフォルトで末尾の空白は切り捨てられます。

NCHAR

0061 0062 0063 0020

2バイトNULLインジケータ +

2バイトの長さ情報 +

列値。

0000 0008 00 61 0062 0063 0020

NCHARがUTF-8として処理されるかどうかに応じて、"abc" (UTF8でエンコード)または最初のバイトで切捨て。

NULL終端。

末尾の空白は切り捨てられます。

ユーザー・イグジット・セッションのキャラクタ・セットでエンコードされた"abc"。

NOT NULL終端。

GLOBALSパラメータのNOTRIMSPACESが指定されていない場合、デフォルトで末尾の空白は切り捨てられます。

VARCHAR2

"abc"

2バイトNULLインジケータ +

2バイトの長さ情報 +

列値

ASCIIまたはEBCDICでエンコードされた"abc"。

NULL終端。

切捨てなし。

ユーザー・イグジット・セッションのキャラクタ・セットでエンコードされた"abc"。

NOT NULL終端。

切捨てなし。

NVARCHAR2

0061 0062 0063 0020

2バイトNULLインジケータ +

2バイトの長さ情報 +

列値

NVARCHAR2がUTF-8として処理されるかどうかに応じて、"abc" (UTF8でエンコード)または最初のバイトで切捨て。

NULL終端。

切捨てなし。

ユーザー・イグジット・セッションのキャラクタ・セットでエンコードされた"abc"。

NOT NULL終端。

切捨てなし。

CLOB

2バイトNULLインジケータ +

2バイトの長さ情報 +

列値

VARCHAR2と同様ですが、最大4Kバイトのみの出力。

NULL終端。

切捨てなし。

VARCHAR2と同様ですが、ユーザー・イグジット・セッションのキャラクタ・セットでリクエストされたデータのみ出力。

NOT NULL終端。

切捨てなし。

NCLOB

2バイトNULLインジケータ +

2バイトの長さ情報 +

列値

NVARCHAR2と同様ですが、最大4Kバイトのみの出力。

NULL終端。

切捨てなし。

NVARCHAR2と同様ですが、ユーザー・イグジット・セッションのキャラクタ・セットでリクエストされたデータのみ出力。

NOT NULL終端。

切捨てなし。

NUMBER

123.89

2バイトNULLインジケータ +

2バイトの長さ情報 +

列値

ASCIIまたはEBCDICでエンコードされた"123.89"。

NULL終端。

ユーザー・イグジット・セッションのキャラクタ・セットでエンコードされた"123.89"。

NOT NULL終端。

DATE

31-May-11

2バイトNULLインジケータ +

2バイトの長さ情報 +

列値

ASCIIまたはEBCDICでエンコードされた"2011-05-31"。

NULL終端。

ユーザー・イグジット・セッションのキャラクタ・セットでエンコードされた"2011-05-31"。

NOT NULL終端。

TIMESTAMP

31-May-11 12.00.00 AM

2バイトNULLインジケータ +

2バイトの長さ情報 +

列値

ASCIIまたはEBCDICでエンコードされた"2011-05-31 12.00.00 AM"。

NULL終端。

ユーザー・イグジット・セッションのキャラクタ・セットでエンコードされた"2011-05-31 12.00.00 AM"。

NOT NULL終端。

Interval Year to MonthまたはInterval Day to Second

2バイトNULLインジケータ +

2バイトの長さ情報 +

列値

NA

NA

RAW

2バイトNULLインジケータ +

2バイトの長さ情報 +

列値

2バイトNULLインジケータ +

2バイトの長さ情報 +

列値

2バイトNULLインジケータ +

2バイトの長さ情報 +

列値

17.3.7 ユーザー・イグジットのアップグレード

usrdecs.hファイルは、新しい機能や構造変更などの拡張またはアップグレードがOracle GoldenGateの新規リリースに追加された場合に、既存のユーザー・イグジットとの下位互換性に対応するためにバージョンが付けられています。usrdecs.hファイルのバージョンは、ReplicatまたはExtractの起動時にレポート・ファイルに出力されます。

ユーザー・イグジットの新しい機能を使用するには、独自のルーチンを再コンパイルして新しいusrdecsファイルをインクルードする必要があります。新しい機能を使用しないルーチンは、再コンパイルする必要はありません。

17.3.8 ユーザー・イグジット関数を使用する方法のサンプルの表示

Oracle GoldenGateでは、Oracle GoldenGateのインストール・ディレクトリのUserExitExamplesディレクトリに次のサンプル・ユーザー・イグジット・ファイルがインストールされます。

- exitdemo.cは、ユーザー・イグジットを初期化し、特定のイグジット・ポイントでコールバックを発行して、データを変更する方法を示しています。また、完全修飾の表名または特定のメタデータ部(カタログやコンテナの名前、スキーマ、または修飾されていない表名など)の取得方法も示しています。さらに、このデモはDDLデータがどのように処理されるかも示しています。このデモは、データベース・タイプに固有ではありません。

- exitdemo_utf16.cは、ユーザー・イグジットとコール元プロセスの間で交換される情報のコールバック構造で、UTF16エンコードのデータ(メタデータと列データの両方)を使用する方法を示しています。

- exitdemo_more_recs.cは、同じ入力レコードを複数回使用して複数のターゲット・レコードを生成する方法の例を示しています。

- exitdemo_lob.cは、LOBデータに対する読取りアクセスを取得する方法の例を示しています。

- exitdemo_pk_befores.cは、主キーの更新レコードの変更前および変更後イメージの一部と、通常の更新(キー以外の更新)の変更前イメージにアクセスする方法を示しています。また、競合検出の手段として、Replicatパラメータ・ファイルのSQLEXECを使用してターゲット行の値を取得する方法も示しています。ターゲットからフェッチされた値は、ユーザー・イグジットに取得された時点でターゲット・レコードとしてマップされます。

各ディレクトリには、.cファイルに加え、makefileおよびreadme.txtファイルが含まれます。

17.4 Oracle GoldenGateイベント・マーカー・システムを使用したデータベース・イベントの起動

Oracle GoldenGateでは、Oracle GoldenGateプロセスによって、(プロセスのデータソースに応じて)トランザクション・ログまたは証跡のイベント・レコードに基づいて定義済のアクションを実行できるイベント・マーカー・システムが提供されます。これはイベント・マーカー・インフラストラクチャ(EMI)とも呼ばれます。イベント・レコードは、アクションを実行するための特定のフィルタ基準に適合するレコードです。このシステムを使用して、データベース・イベントに基づいてOracle GoldenGate処理をカスタマイズできます。

たとえば、イベント・マーカー・システムを使用して、プロセスの起動、一時停止または停止、変換の実行、統計のレポートを行うことができます。イベント・マーカー・システムは、次の目的でも使用できます。

- SQLEXECまたはユーザー・イグジット関数を実行できる同期ポイントを確立する

- データ検証スクリプトを実行するか電子メールを送信するシェル・コマンドを実行する

- 特定のアカウント番号が検出されたときにトレースを有効化する

- ラグ履歴を取得する

- 1日の終わりにレポートまたはバッチ・プロセスを実行するプロセスを停止または一時停止する

イベント・マーカー機能は、データ変更のレプリケーションではサポートされていますが、初期ロードではサポートされていません。

このシステムは、次の入力コンポーネントを必要とします。

1. アクションを起動するイベント・レコードを、TABLE文またはMAP文のFILTER、WHEREまたはSQLEXECで指定できます。あるいは、Replicatパラメータ・ファイルに特別なTABLE文を指定すると、ソース表をターゲット表にマップせずにEVENTACTIONSアクションを実行できます。

2. イベント・レコードを指定するTABLE文またはMAP文に、プロセスで実行されるアクションを指定する適切なオプションとともにEVENTACTIONSパラメータを指定します。

EVENTACTIONSのオプションは、次の例に示すように組み合せることができます。

次の例では、プロセスでチェックポイントを発行し、情報メッセージを記録し、トランザクション全体を無視して(何も処理されません)、レポートを生成します。

EVENTACTIONS (CP BEFORE, REPORT, LOG, IGNORE TRANSACTION)

次の例では、破棄ファイルにイベント・レコードを書き込み、トランザクション全体を無視します。

EVENTACTIONS (DISCARD, IGNORE TRANS)

次の例では、情報メッセージを記録し、プロセスを正常に停止します。

EVENTACTIONS (LOG INFO, STOP)

次の例では、証跡ファイルをロールオーバーし、新規ファイルにイベント・レコードを書き込みません。

EVENTACTIONS (ROLLOVER, IGNORE)

構文の詳細や、その他の使用方法の詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

17.4.1 イベント・マーカー・システムの使用方法のケース・スタディ

次の各例では、イベント・マーカー・システムの使用方法に重点を置いて説明します。構文の詳細や、その他の使用方法の詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

17.4.1.1 日次処理の起動

この例では、ソース・データベースのevent_tableという特別な表に実行される操作の取得を指定します。この表は、決められた時刻(毎日午後5:00など)に挿入操作を受信するためにのみ存在します。Replicatは、この操作のトランザクション・レコードを受信すると、オペレータが日次処理ジョブを開始できるように正常に停止します。毎日event_table表に対して行われる挿入を使用することで、オペレータは、Replicatによって5:00までのすべてのコミット済トランザクションが適用されたことを確認します。IGNOREによって、Replicatは、ターゲット・データベースでの用途がないイベント・レコード自体を無視します。LOG INFOによって、Replicatは、操作に関する情報メッセージを記録します。

TABLE source.event_table, EVENTACTIONS (IGNORE, LOG INFO, STOP);

17.4.1.2 初期ロードから変更同期への移行の簡略化

イベント・アクションおよびイベント表を使用して、初期ロードから進行中の変更レプリケーションへの移行を支援できます。たとえば、データが移入された既存のソース表をOracle GoldenGate構成に追加する必要があるとします。この表をターゲットに作成してから、エクスポートおよびインポートを使用して2つの表を同期する必要があります。この例では、source.event_tableというイベント表がソース・データベースに存在しており、ReplicatのTABLE文で指定されると仮定します。

TABLE source.event_table, EVENTACTIONS (IGNORE, LOG INFO, STOP);

ユーザーが新しいソース表で作業を継続できるように、そのソース表をReplicatのパラメータ・ファイルではなくExtractのパラメータ・ファイルに追加します。Extractは、この表から証跡へのデータの取得を開始し、データは証跡に格納されます。

エクスポート後にソースとターゲットの読取り一貫性が確保された時点で、ソースのイベント表にイベント・レコードが挿入され、その内容がターゲットに伝播されます。Replicatが(読取り一貫性ポイントを示す)イベント・レコードを受信すると、プロセスは、EVENTACTIONS STOPの指示に従って停止します。これにより、新規表がReplicatのMAP文に追加されます。Replicatは、イベント・レコードのタイムスタンプからレプリケーションを開始するように設定できるため、HANDLECOLLISIONSパラメータを使用する必要がなくなります。証跡内の操作のうちイベント・レコードより前のものは、エクスポートで適用されていることが確認されているため、無視できます。

イベント・レコード自体はReplicatによって無視されますが、情報メッセージが記録されます。

17.4.1.3 データ異常値が検出された場合の処理の停止

この例では、ABORTを使用して、銀行レコードで異常値が検出された場合(顧客が口座残高より多くの現金を引き出そうとした場合)、致命的エラーとともにReplicatを即座に終了します。この場合、ソース表は、ターゲットに対する実際のレプリケーションを目的とするReplicatのMAP文でターゲット表にマップされます。ソース表にはTABLE文も使用され、ABORTアクションによって、Replicatは異常値をターゲット・データベースに適用する前に停止されます。ABORTは、レコードの処理に優先します。

MAP source.account, TARGET target.account;
TABLE source.account, FILTER (withdrawal > balance), EVENTACTIONS (ABORT);

17.4.1.4 特定の注文番号のトレース

次の例では、特定の注文番号(order_no = 1)に対する挿入操作を含む注文トランザクションのみを対象にReplicatのトレースを有効化します。トレース情報は、order_1.trcトレース・ファイルに書き込まれます。MAPパラメータでは、ソース表とターゲット表のマッピングを指定します。

MAP sales.order, TARGET rpt.order;
TABLE source.order,
FILTER (@GETENV ('GGHEADER', 'OPTYPE') = 'INSERT' AND order_no = 1), &
EVENTACTIONS (TRACE order_1.trc TRANSACTION);

17.4.1.5 バッチ・プロセスの実行

この例では、バッチ・プロセスを1か月に1回実行して、ソース・データベースから蓄積されたデータを消去します。トランザクション(通常はバッチ・トランザクション)の開始時に、レコードが特別なjob表に書き込まれ、バッチ・ジョブが開始したことが示されます。ターゲット・システムには削除されたレコードを反映する必要がないため、TRANSACTIONをIGNOREとともに使用して、トランザクション全体をExtractで無視するように指定します。Extract側の作業を無視することで、不要な証跡およびネットワーク・オーバーヘッドが排除されます。

TABLE source.job, FILTER (@streq (job_type = 'HOUSEKEEPING')=1), &
EVENTACTIONS (IGNORE TRANSACTION);

注意:

論理バッチ削除が複数のより小さいバッチで構成される場合、それらのより小さいバッチごとに、トランザクションの最初のレコードとしてジョブ表に挿入する操作が必要です。

17.4.1.6 結果となる操作を除くSQL文のみの伝播

この例では、ソースとターゲットで異なるEVENTACTIONS句を組み合せて使用し、SQL文の結果となる操作ではなく、そのSQL文のみをレプリケートする方法を示します。この例では、INSERT INTO...SELECTトランザクションです。このようなトランザクションでは、伝播する必要のある大量の行が生成される可能性がありますが、この方法であれば、初期SQL文のみが伝播されるため、証跡およびネットワーク・オーバーヘッドを削減できます。各SELECT文は、すべてターゲットに対して実行されます。この構成では、データ整合性を保持するためにソース表とターゲット表を完全に同期する必要があります。

Extract:

TABLE source.statement, EVENTACTIONS (IGNORE TRANS INCLUDEEVENT);

Replicat:

TABLE source.statement, SQLEXEC (execute SQL statement), &
EVENTACTIONS (INFO, IGNORE);

この構成を使用するため、statement表にトランザクションの最初の操作(イベント・レコードとなるINSERT INTO...SELECT)を移入します。

注意:

サイズの大きいSQL文の場合、文を表の複数の列に書き込むことができます。たとえば、8つのVARCHAR (4000)列を使用して、最大32KBの長さのSQL文を格納できます。

IGNORE TRANS INCLUDEEVENTがあるため、Extractでは、文のSELECT部分に関連する後続の挿入はすべて無視されますが、SQLテキストを含むイベント・レコードは証跡に書き込まれます。TABLE文の使用により、Replicatは、必要に応じてSQLテキスト列を連結するSQLEXEC文にイベント・レコードを渡し、SELECT副問合せの入力としてターゲット表を使用してINSERT INTO...SELECT文を実行します。

17.4.1.7 長時間実行トランザクション開始前の他のトランザクションのコミット

このEVENTACTIONSの使用によって、Replicatで処理されているすべてのオープン・トランザクションが、長時間実行トランザクションの開始前にターゲットにコミットされることが保証されます。この場合、Replicatによって、大規模トランザクションの作業開始前に強制的にチェックポイントが書き込まれます。チェックポイントを強制することで、リカバリの対象を長時間実行トランザクションのみに制限します。Replicatのチェックポイントは暗黙的にはデータベースに対するコミットであるため、未処理のロックが解放され、保留中の変更を他のセッションで認識できるようになります。

TABLE source.batch_table, EVENTACTIONS (CHECKPOINT BEFORE);

17.4.1.8 データ検証のためのシェル・スクリプトの実行

この例では、シェル・スクリプトを実行して、Replicatがテスト実行の最後のトランザクションを適用した後にデータ検証を行う別のスクリプトを実行します。ソースでは、イベント・レコードがsource.eventというイベント表に書き込まれます。レコードによって、値COMPAREがイベント表のevent_type列に挿入されます。このレコードは、他のテスト・データの最後にレプリケートされます。Replicatパラメータ・ファイルのTABLE文で、FILTER句によってレコードを限定し、EVENTACTIONS句のSHELLの指定によってシェル・スクリプトcompare_db.shをトリガーします。その後、FORCESTOPの指定によってReplicatは即座に停止します。

Extract:

TABLE src.*;
TABLE test.event;

Replicat:

MAP src.*, TARGET targ.*;
MAP test.event, TARGET test.event, FILTER (@streq (event_type, 'COMPARE')=1), &
EVENTACTIONS (SHELL 'compare_db.sh', FORCESTOP);

18 Oracle GoldenGate処理の監視

この章では、Oracle GoldenGate処理を監視する方法について説明します。

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

- GGSCIでの情報コマンドの使用

- Extractリカバリの監視

- ラグの監視

- 自動ハートビート表を使用した監視

- 処理量の監視

- エラー・ログの使用

- プロセス・レポートの使用

- 破棄ファイルの使用

- 破棄ファイルとレポート・ファイルの維持

- システム・ログの使用

- 時間の差異の調整

- NonStopシステムへのイベント・メッセージの送信

- パフォーマンス・チューニングに関するヘルプ情報の取得

18.1 GGSCIでの情報コマンドの使用

処理情報を表示する主な方法は、GGSCIを使用することです。これらのコマンドの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

表18-1 プロセス情報を表示するコマンド

コマンド

表示内容

INFO {EXTRACT | REPLICAT} group [DETAIL]

実行ステータス、チェックポイント、ラグ概算および環境情報

INFO MANAGER

実行ステータスおよびポート番号

INFO ALL

システム上のすべてのOracle GoldenGateプロセスに関するINFO出力

STATS {EXTRACT | REPLICAT} group

処理量に関する統計(実行した操作の数など)。

STATUS {EXTRACT | REPLICAT} group

実行ステータス(起動中、実行中、停止済、異常終了済)

STATUS MANAGER

実行ステータス

LAG {EXTRACT | REPLICAT} group

処理された最新レコードとデータソースのタイムスタンプとの間のレイテンシ

INFO {EXTTRAIL | RMTTRAIL} trail

関連プロセスの名前、最後に処理されたデータの位置、最大ファイル・サイズ

SEND MANAGER

実行ステータス、子プロセスに関する情報、ポート情報、証跡消去設定

SEND {EXTRACT | REPLICAT} group

プロセスと選択したオプションに応じて、メモリー・プール、ラグ、TCP統計、長時間実行トランザクション、プロセス・ステータス、リカバリ進行状況などに関する情報が戻されます。

VIEW REPORT group

破棄ファイルとプロセス・レポートの内容

VIEW GGSEVT

Oracle GoldenGateエラー・ログの内容

COMMAND ER wildcard

COMMANDタイプに応じた次の情報:

INFO

LAG

SEND

STATS

STATUS

wildcardは、影響を受けるプロセス・グループに応じたワイルドカードの指定です。次に例を示します。

INFO ER ext*
STATS ER *

INFO PARAM

静的情報を問い合せて表示します。

GETPARAMINFO

現在実行中のパラメータ値を表示します。

18.2 Extractリカバリの監視

長時間実行トランザクションがオープンしているときにExtractが異常終了すると、Extractの再起動時のリカバリに時間がかかることがあります。処理状態をリカバリするため、Extractは、必要に応じて以前のオンライン・ログとアーカイブ・ログを検索し、その長時間実行トランザクションの最初のログ・レコードを検出する必要があります。トランザクションの開始時点が古いほど、一般的にリカバリにかかる時間も長くなり、Extractは停止したように見えることがあります。

Extractのリカバリ状況が適切であることを確認するには、SEND EXTRACTコマンドをSTATUSオプション付きで使用します。次のステータス記録のいずれかが表示されるため、リカバリの実行中にExtractがそのログ読取り位置を変更するのに応じて、作業の進行状況を追跡できます。

- In recovery[1] – Extractは、トランザクション・ログのチェックポイントにリカバリ中です。つまり、次のいずれかから読み取っています。
a) BRチェックポイント・ファイル、次にアーカイブ/オンライン・ログから読取り中、

または

b) アーカイブ/オンライン・ログのリカバリ・チェックポイントから読取り中。

- In recovery[2] – Extractは、チェックポイントから証跡の末尾にリカバリ中です。つまり、最後のトランザクションが完全には書き込まれず、トランザクションを再書込みしているときにリカバリ・マーカーが出力証跡に付加されます。

- Recovery complete – リカバリは終了し、通常の処理が再開されます。

18.3 ラグの監視

ラグ統計は、Oracle GoldenGateプロセスが、ビジネス・アプリケーションによって生成されたデータの量に後れを取らず適切に処理を進めているかどうかを示します。この情報によって、潜在的な問題を診断し、Oracle GoldenGateプロセスのパフォーマンスをチューニングしてソース・データベースとターゲット・データベース間のレイテンシを最小化できます。Oracle GoldenGateをチューニングしてラグを最小化する方法の詳細は、「Oracle GoldenGateのパフォーマンスのチューニング」を参照してください。

18.3.1 ラグについて

Extractのラグとは、(システム・クロックに基づく)Extractがレコードを処理した時刻と、データ・ソース内のそのレコードのタイムスタンプとの差(秒)です。

Replicatのラグとは、(システムクロックに基づく)Replicatが最後のレコードを処理した時刻と、証跡内のそのレコードのタイムスタンプとの差(秒)です。

ラグの統計を表示するには、GGSCIでLAGコマンドかSENDコマンドを使用します。詳細は、『Oracle GoldenGate for Windows and UNIXリファレンス』を参照してください。

注意:

INFOコマンドでもラグ統計は戻されますが、この統計は、処理中の現在のレコードではなく、チェックポイントが指定された最後のレコードから取得された統計です。LAGやINFOと比較して正確性の点で劣ります。

18.3.2 ラグのレポート方法の制御

LAGREPORTMINUTESまたはLAGREPORTHOURSパラメータでは、ManagerがExtractおよびReplicatのラグを確認する間隔を指定します。Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

LAGCRITICALSECONDS、LAGCRITICALMINUTES、またはLAGCRITICALHOURSパラメータでは、クリティカルとみなすラグしきい値を指定し、しきい値に達したときにエラー・ログに警告メッセージを書き込みます。このパラメータは、ローカル・システムのExtractおよびReplicatプロセスに影響します。Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

LAGINFOSECONDS、LAGINFOMINUTESまたはLAGINFOHOURSパラメータでは、ラグしきい値を指定します。ラグが指定した値を超えると、Oracle GoldenGateはエラー・ログにラグ情報をレポートします。ラグがLAGCRITICALパラメータで指定した値を超えると、Managerはこのラグをクリティカルとしてレポートし、それ以外の場合は情報メッセージとしてレポートします。値ゼロ(0)を指定すると、LAGREPORTMINUTESまたはLAGREPORTHOURSパラメータで指定した間隔でメッセージがレポートされます。Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

18.4 自動ハートビート表を使用した監視

デフォルトの自動ハートビート表機能を使用してエンドツーエンドのレプリケーション遅延を監視できます。自動ハートビートは、ハートビート・シード表およびハートビート表のレコードを更新し、ハートビート履歴表を構築することにより、各ソース・データベースからレプリケーション・ストリームに送信されます。レプリケーション・パスの各レプリケーション・プロセスがこれらのハートビート・レコードを処理して、その情報を更新します。これらのハートビート・レコードは、ターゲット・データベースでハートビート表に挿入されるか、更新されます。

ハートビート表には次の情報が含まれます。

- ソース・データベース

- 宛先データベース

- 送信レプリケーション・ストリームに関する情報:

- パス内のExtract、ポンプ/分散サーバー、およびReplicatプロセスの名前

- ハートビート・レコードがレプリケーション・プロセスによって処理されたときのタイムスタンプ。

- 受信レプリケーション・ストリームに関する情報:

- パス内のExtract、ポンプ/分散サーバー、およびReplicatプロセスの名前

- ハートビート・レコードがレプリケーション・プロセスによって処理されたときのタイムスタンプ。

ハートビート表とハートビート履歴表の情報を使用して、各レプリケーションの現在と過去の遅延を計算できます。

双方向のGoldenGate構成では、データベースに含まれる近隣へのレプリケーション・パスと同数のエントリがハートビート表にあり、片方向設定ではソース側の表は空です。送信列には、タイムスタンプと送信パス、ローカルExtractおよびダウンストリームのGoldenGateプロセスが含まれます。受信列には、タイムスタンプ、アップストリームのGoldenGateプロセスのパスおよびローカルReplicatが含まれます。

片方向構成では、ターゲット・データベースはハートビート表の受信列のみに移入します。

注意:

自動ハートビート機能はMySQLバージョン5.5ではサポートされていません。

18.4.1 ハートビート表のエンドツーエンド・レプリケーション・フローの理解

ハートビート表に関連するエンドツーエンド・レプリケーションのフローは、Oracle GoldenGate 12.2.0.1の証跡フォーマットの使用に依存し、次のようになります。

タスク

自己記述型の証跡ファイル機能が有効化されていることを確認します(13.4.2項「自己記述型の証跡ファイルの使用方法」を参照)。

ENABLE_HEARTBEAT_TABLEパラメータを使用して、ハートビート機能を有効にします。これはデフォルトです。

ADD HEARTBEATTABLEコマンドを使用して、各データベースにハートビート表を追加します。すべてのインスタンスにハートビート表を追加すると、Replicatのバウンスがハートビート機能に十分になります。自動的に移入されるため、表のいずれにも移入しないでください。

ハートビート表およびハートビート・シード表のハートビート・タイムスタンプを更新は、バックグラウンド・ジョブで自動的に行われる必要があります。

(オプション) Oracle Databaseの場合、ハートビート更新はOracle DBMS_SCHEDULERに依存しているので、これが適切に動作していることを確認する必要があります。DBMS_SCHEDULERを問い合せるには、次を発行します。

select START_DATE, LAST_START_DATE, NEXT_RUN_DATE
from dba_scheduler_jobs

Where job_name ='GG_UPDATE_HEARTBEATS';

次に、NEXT_RUN_DATE (スケジューラを次回実行する日時)の有効な値を探します。これが過去のタイムスタンプである場合、ジョブは実行されないので修正する必要があります。

スケジューラが機能しない一般的な理由は、パラメータjob_queue_processesの設定値が低すぎる(通常はゼロ)場合です。ALTER SYSTEM SET JOB_QUEUE_PROCESSES = ##; (##はジョブ・キュー・プロセス数)コマンドを使用して、データベースに構成されたjob_queue_processesの数を増やします。

Extractを実行します。これにより、論理変更レコード(LCR)を受信時に、OUTGOING_EXTRACT列の値がチェックされます。

- Extract名がこの値に一致すると、OUTGOING_EXTRACT_TS列が更新され、レコードが証跡に入力されます。

- Extract名が一致しない場合、LCRは破棄されます。

- OUTGOING_EXTRACT値がNULLの場合、OUTGOING_EXTRACT_TSとともに移入され、レコードが証跡に入力されます。

ポンプまたは分散サーバーは、レコードの読取り時にOUTGOING_ROUTING_PATH列の値をチェックします。この列には分散パスのリストが含まれています。

値がNULLの場合、列は現在のグループ名(およびパス、ただしこれが分散サーバーの場合) "*"で更新され、OUTGOING_ROUTING_TS列を更新して、レコードがそのターゲット証跡ファイルに書き込まれます。

値のリストに"*"が含まれている場合は、それをgroup name[:pathname],"*"'で置換して、OUTGOING_ROUTING_TS列を更新し、レコードがそのターゲット証跡ファイルに書き込まれます。リストの値にアスタリスク(*)が含まれていない場合、ポンプ名がリストにあると、リスト内の関連するgroup name[:pathname],"*"'ペアに指定されたパスにレコードが送信されます。ポンプ名がリストにない場合は、レコードが破棄されます。

Replicatを実行します。これによりレコードの受信時に、OUTGOING_REPLICA列の値がチェックされます。

- Replicat名が値に一致すると、ハートビート表の行が更新され、レコードが履歴表に挿入されます。

- Replicat名が一致しない場合は、レコードが破棄されます。

- 値がNULLの場合、Replicatの列マッピングを暗黙的に起動して、ハートビート表とハートビート履歴表の行が更新されます。
Replicatの自動列マッピング

REMOTE_DATABASE         = LOCAL_DATABASE
INCOMING_EXTRACT        = OUTGOING_EXTRACT
INCOMING_ROUTING_PATH      = OUTGOING_ROUTING_PATH with "*"    removed
INCOMING_REPLICAT        = @GETENV ("GGENVIRONMENT", "GROUPNAME")
INCOMING_HEARTBEAT_TS    = HEARTBEAT_TIMESTAMP
INCOMING_EXTRACT_TS    = OUTGOING_EXTRACT_TS
INCOMING_ROUTING_TS    = OUTGOING_ROUTING_TS
INCOMING_REPLICAT_TS          = @DATE ('UYYYY-MM-DD HH:MI:SS.FFFFFF','JTSLCT',@GETENV ('JULIANTIMESTAMP'))
LOCAL_DATABASE    = REMOTE_DATABASE
OUTGOING_EXTRACT    = INCOMING_EXTRACT
OUTGOING_ROUTING_PATH    = INCOMING_ROUTING_PATH
OUTGOING_HEARTBEAT_TS     = INCOMING_HEARTBEAT_TS
OUTGOING_REPLICAT    = INCOMING_REPLICAT
OUTGOING_HEARTBEAT_TS    = INCOMING_HEARTBEAT_TS

OUTGOING_ROUTING_TSの1列しかありません。レコードが複数のポンプをパス・スルーしてからReplicatによって適用される場合、各ポンプではOUTGOING_ROUTING_TS列を上書きして、計算するポンプ遅延を1つのポンプに限定せずに、PUMP_PATHで指定されたすべてのポンプの遅延を参照するようにします。

その他の考慮事項:

ハートビートがシステムを流れる際の遅延の計算は、ソース・システムとターゲット・システムのクロックが正確に設定されているかどうかに依存します。ターゲット・システムがソース・システムよりも進んでいると、遅延が負の値になる可能性があります。クロックの差異に気付いて修正する措置を取れるよう、遅延は負の数値として表示されます。

システムを流れるタイムスタンプはUTCで設定されています。タイムスタンプにはタイムゾーンが関連付けられていないので、各コンポーネントが異なるタイムゾーンに設定されている場合でも、ハートビート表を表示するときは、すぐに遅延を表示できます。基礎となる表を基に必要なビューを書き込むことができます。UTCが推奨されます。

すべてのハートビート・エントリはUTF-8で証跡に書き込まれます。

送信パスと受信パスを組み合せて一意に行が特定されます。つまり、送信パスが同じで受信パスが異なる2つの行がある場合、2つの一意のエントリとみなされます。

ハートビート表の列を示します。

名前

NULLかどうか

タイプ

LOCAL_DATABASE

VARCHAR2(512)

HEARTBEAT_TIMESTAMP

TIMESTAMP(6)

REMOTE_DATABASE

VARCHAR2(512)

INCOMING_EXTRACT

VARCHAR2(128)

INCOMING_ROUTING_PATH

VARCHAR2(4000)

INCOMING_REPLICAT

VARCHAR2(128)

INCOMING_HEARTBEAT_TS

TIMESTAMP(6)

INCOMING_EXTRACT_TS

TIMESTAMP(6)

INCOMING_ROUTING_TS

TIMESTAMP(6)

INCOMING_REPLICAT_TS

TIMESTAMP(6)

OUTGOING_EXTRACT

VARCHAR2(128)

OUTGOING_ROUTING_PATH

VARCHAR2(4000)

OUTGOING_REPLICAT

VARCHAR2(128)

OUTGOING_HEARTBEAT_TS

TIMESTAMP(6)

OUTGOING_EXTRACT_TS

TIMESTAMP(6)

OUTGOING_ROUTING_TS

TIMESTAMP(6)

OUTGOING_REPLICAT_

TIMESTAMP(6)

18.4.2 ハートビート表の更新

ハートビート・シード表のHEARTBEAT_TIMESTAMP列は、データベース・ジョブで定期的に更新する必要があります。デフォルトのハートビート間隔は1分で、この間隔はGGSCIまたは管理サーバー・コマンドを使用して指定またはオーバーライドできます。Oracle Databaseの場合、データベース・ジョブは自動的に作成されます。他のすべてのサポート対象データベースでは、データベース固有のスケジューラ機能を使用してハートビート・タイムスタンプを更新するバックグラウンド・ジョブを作成する必要があります。

18.4.3 ハートビート履歴表のパージ

ハートビート履歴表はジョブを使用して定期的にパージされます。デフォルトの間隔は30日で、この間隔はGGSCIまたは管理サーバー・コマンドを使用して指定またはオーバーライドできます。Oracle Databaseの場合、データベース・ジョブは自動的に作成されます。他のすべてのサポート対象データベースでは、データベース固有のスケジューラ機能を使用してハートビート履歴表をパージするバックグラウンド・ジョブを作成する必要があります。

18.4.4 ベスト・プラクティス

次のことをお薦めします。

- すべてのデータベースで同じハートビート頻度を使用して診断を容易にします。

- 容量に問題がある場合は保存時間を調整します。

- デフォルトのハートビート表の頻度を保持します。頻度を30から60秒に設定すると、ほとんどのワークロードで最適な結果をもたらします。

- 遅延履歴統計を使用して遅延および期間の情報を収集します。

18.4.5 自動ハートビート・コマンドの使用方法

ハートビート表コマンドを使用して、次のようにOracle GoldenGateの自動ハートビート機能を制御できます。

表18-2 ハートビート表コマンド

コマンド

説明

ADD HEARTBEATTABLE

自動ハートビート機能に必要なオブジェクトを作成します。

ALTER HEARTBEATTABLE

既存のハートビート・オブジェクトを変更します。

DELETE HEARTBEATTABLE

既存のハートビート・オブジェクトを削除します。

DELETE HEARTBEATENTRY

ハートビート表内のエントリを削除します。

INFO HEARTBEATTABLE

ハートビート表情報を表示します。

詳細は、Oracle GoldenGate Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

18.5 処理量の監視

GGSCIでSTATSコマンドを使用すると、Oracle GoldenGateプロセスによって処理されているデータ量と、そのデータ量がOracle GoldenGateシステムを通じて移動されている速度を表示できます。この情報によって、潜在的な問題を診断し、Oracle GoldenGateプロセスのパフォーマンスをチューニングできます。それらのコマンドには、出力の選択やフィルタリングに使用できる様々なオプションがあります。

STATSコマンドには、STATS EXTRACT、STATS REPLICAT、STATS ERの各コマンドがあります。Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

SEND EXTRACTまたはSEND REPLICATコマンドにREPORTオプションを指定することで、いつでもレポート・ファイルに仮統計を送信できます。Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

18.6 エラー・ログの使用

Oracle GoldenGateのエラー・ログを使用して、次の情報を表示できます。

- GGSCIコマンドの履歴

- 起動および停止したOracle GoldenGateプロセス

- 実行された処理

- 発生したエラー

- 情報メッセージおよび警告メッセージ

エラー・ログにはイベントが発生順に記録されているため、エラーの(1つ以上の)原因を検出する場合に役立ちます。たとえば、次の情報を検索できます。

- ユーザーがプロセスを停止したこと

- プロセスがTCP/IPまたはデータベース接続の確立に失敗したこと

- プロセスがファイルを開くことに失敗したこと

エラー・ログを表示するには、次のいずれかの方法を使用します。

- 標準のシェル・コマンドによるOracle GoldenGateのルート・ディレクトリに含まれるggserr.logファイルの表示

- Oracle GoldenGate DirectorまたはOracle GoldenGate Monitor

- GGSCIのVIEW GGSEVTコマンド。Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

エラー・ログのサイズは、Oracle GoldenGateの使用に従って継続的に増加するため、ファイル内の最も古いエントリは、アーカイブして削除することを検討してください。

18.7 プロセス・レポートの使用

プロセス・レポートを使用して、(プロセスに応じて)次の情報を表示できます。

- 使用中のパラメータ

- 表および列マッピング

- データベース情報

- 実行時メッセージおよびエラー

- 処理された操作の数に関する実行時統計

Extract、ReplicatおよびManagerのすべてのプロセスで、レポート・ファイルが生成されます。このレポートは、実行中に発生した問題(無効なマッピング構文、SQLエラー、接続エラーなど)を診断する場合に役立ちます。

プロセス・レポートを表示するには、次のいずれかの方法を使用します。

- 標準のシェル・コマンドによるテキスト・ファイルの表示

- Oracle GoldenGate DirectorまたはOracle GoldenGate Monitor

- GGSCIのVIEW REPORTコマンド。Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

- プロセスがレポートを生成せずに異常終了した場合に情報を表示するには、次のコマンドを使用して、(GGSCIでなく)オペレーティング・システムのコマンド・シェルからプロセスを実行し、端末に情報を送信します。

process paramfile path.prm

説明:

- processの値は、extractまたはreplicatです。

- path.prmの値は、パラメータ・ファイルの完全修飾名です。例:

replicat paramfile /ogg/dirdat/repora.prm

デフォルトでは、レポートのファイル拡張子は.rptです(EXTORA.rptなど)。デフォルトの場所は、Oracle GoldenGateディレクトリのdirrptサブディレクトリです。ただし、これらのプロパティは、グループを作成するときに変更できます。レポート・ファイルは、一度作成したら、処理の開始後にOracle GoldenGateを適切に動作させるため、元の場所から移動しないでください。

プロセス・レポートの名前と場所を確認するには、GGSCIでINFO EXTRACT、INFO REPLICAT、INFO MANAGERのいずれかのコマンドを使用します。Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

18.7.1 プロセス・レポートの実行時統計のスケジュール

デフォルトでは、実行時統計は、各実行の終了時に1回のみレポートに書き込まれます。長時間の実行や継続的な実行では、オプション・パラメータを使用することで、各実行の終了を待機せずにこれらの統計を定期的に表示できます。

実行時統計をレポートするスケジュールを設定するには、ExtractまたはReplicatのパラメータ・ファイルでREPORTパラメータを使用して、レポートで実行時統計を生成する日時を指定します。Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

レポートにオン・デマンドで実行時統計を送信するには、必要に応じてその時点の実行時統計を表示するREPORTオプションを付けてSEND EXTRACTまたはSEND REPLICATコマンドを実行します。Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

18.7.2 プロセス・レポートのレコード数の表示

REPORTCOUNTパラメータでは、ExtractまたはReplicatが起動以降に処理したトランザクション・レコード数をレポートします。各トランザクション・レコードは、Oracle GoldenGateによって取得されたトランザクション内で実行された論理データベース操作を表します。レコード数は、レポート・ファイルおよび画面に出力されます。詳細は、『Oracle GoldenGate for Windows and UNIXリファレンス』を参照してください。

18.7.3 ReplicatレポートがSQLエラーで一杯になることを防止する方法

WARNRATEパラメータでは、プロセス・レポートまたはエラー・ログにレポートされるまでの、ターゲット表で許容されるSQLエラー数のしきい値を設定します。エラーは警告としてレポートされます。お使いの環境で、多数のエラーを許容できるときは、WARNRATEの値を増やすことによってこれらのファイルのサイズを最小限に抑えられます。詳細は、『Oracle GoldenGate for Windows and UNIXリファレンス』を参照してください。

18.8 破棄ファイルの使用

デフォルトでは、プロセスがGGSCIのSTARTコマンドによって開始されると常に破棄ファイルが生成されます。破棄ファイルは、失敗したOracle GoldenGate操作に関する情報を取得します。この情報は、データ・エラー(無効な列マッピングに関連するエラーなど)を解決する場合に役立ちます。

破棄ファイルでは、次のような情報がレポートされます。

- データベースのエラー・メッセージ

- データソースまたは証跡ファイルの順序番号

- データソースまたは証跡ファイルのレコードの相対バイト・アドレス

- 破棄された操作の詳細(DML文の列値やDDL文のテキストなど)

破棄ファイルを表示するには、テキスト・エディタを使用するか、GGSCIでVIEW REPORTコマンドを使用します。Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

デフォルトの破棄ファイルには、次のプロパティがあります。

- ファイル名は、ファイルを作成したプロセスの名前に、デフォルトの拡張子.dscを付けたものです。例: finance.dsc。

- ファイルは、Oracle GoldenGateインストール・ディレクトリのdirrptサブディレクトリに作成されます。

- ファイルの最大サイズは50MBです。

- 起動時に破棄ファイルが存在する場合、消去してから新しいデータが書き込まれます。

これらのプロパティを変更するには、DISCARDFILEパラメータを使用します。NODISCARDFILEパラメータを使用すると、破棄ファイルの使用を無効にできます。Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

オペレーティング・システムのコマンドラインを使用してプロセスを開始した場合、デフォルトでは破棄ファイルは生成されません。DISCARDFILEパラメータを使用して、破棄ファイルを使用するかどうかと、そのプロパティを指定できます。

破棄ファイルは、一度作成したら、処理の開始後にOracle GoldenGateを適切に動作させるため、元の場所から移動しないでください。

18.9 破棄ファイルとレポート・ファイルの維持

デフォルトでは、破棄ファイルとレポート・ファイルは同じ方法でエージングされます。新しい破棄ファイルまたはレポート・ファイルは、新しいプロセス実行の開始時に作成されます。古いファイルは、名前に0(最新)から9(最も古い)までの順序番号を付加してエージングされます。

アクティブなレポートまたは破棄ファイルが、ある実行の終了前に(または、連続実行の最中に)最大ファイル・サイズに到達した場合、有効なエージング・スケジュールがなければ、そのプロセスは異常終了します。破棄ファイルやレポート・ファイルのエージング・スケジュールを設定するには、それぞれ、DISCARDROLLOVERパラメータおよびREPORTROLLOVERパラメータを使用します。これらのパラメータにより、プロセスの開始時に加え、定期的にファイルをロールオーバーするように指定されます。これは、ファイルのサイズを制御し、プロセスの停止を防止するだけでなく、アーカイブ・ルーチンに含めることができるアーカイブのセットが予測可能になります。詳細は、次のドキュメントを参照してください。

- Oracle GoldenGateリファレンスfor Windows and UNIX

- Oracle GoldenGateリファレンスfor Windows and UNIX

プロセスは、最大10個のエージングされたレポートまたは破棄ファイルと1個のアクティブなレポートまたは破棄ファイルを保持できます。10個目のファイルがエージングされると、新規レポートの作成時に最も古いレポートが削除されます。サービス・リクエストの解決に必要とされる場合に備えて、エージングされたレポート・ファイルおよび破棄ファイルのアーカイブ・スケジュールを設定することをお薦めします。

表18-3 ExtractおよびManagerの現行レポートとエージングされたレポート

権限

X

日付

レポート

-rw-rw-rw-

1 ggs ggs

1193 Oct 11 14:59

MGR.rpt

-rw-rw-rw-

1 ggs ggs

3996 Oct 5  14:02

MGR0.rpt

-rw-rw-rw-

1 ggs ggs

4384 Oct 5  14:02

TCUST.rpt

-rw-rw-rw-

1 ggs ggs

1011 Sep 27 14:10

TCUST0.rpt

-rw-rw-rw-

1 ggs ggs

3184 Sep 27 14:10

TCUST1.rpt

-rw-rw-rw-

1 ggs ggs

2655 Sep 27 14:06

TCUST2.rpt

-rw-rw-rw-

1 ggs ggs

2655 Sep 27 14:04

TCUST3.rpt

-rw-rw-rw-

1 ggs ggs

2744 Sep 27 13:56

TCUST4.rpt

-rw-rw-rw-

1 ggs ggs

3571 Aug 29 14:27

TCUST5.rpt

18.10 システム・ログの使用

Oracle GoldenGateは、オペレーティング・システムのレベルで生成されたエラーを、Windowsのイベント ビューアまたはUNIXおよびLinuxのsyslogに書き込みます。Oracle GoldenGateイベントの形式は、基本的にUNIX、LinuxおよびWindowsのシステム・ログで同じです。システム・ログに出力されるOracle GoldenGateエラーは、Oracle GoldenGateエラー・ログにも出力されます。

UNIXおよびLinuxの場合、syslogに対するOracle GoldenGateメッセージ機能は、デフォルトで有効です。Windowsの場合、イベント ビューアに対するOracle GoldenGateメッセージ機能は、インストール・プロセスでOracle GoldenGateメッセージDLLを登録することによってインストールする必要があります。この機能は、addeventsオプションを付けてinstallプログラムを実行することによって、いつでも追加できます。このプログラムは、Oracle GoldenGateディレクトリのルートに格納されます。

SYSLOGパラメータを使用して、Oracle GoldenGateがWindowsまたはUNIXシステムのシステム・ログに送信するメッセージのタイプを制御します。次の処理を実行できます。

- すべてのOracle GoldenGateメッセージを含める

- すべてのOracle GoldenGateメッセージを抑止する

- 情報、警告、エラーのいずれかのメッセージを記録するか、これらのタイプの任意の組合せを記録するためのフィルタ処理

SYSLOGは、GLOBALSまたはManagerパラメータ(あるいはその両方)として使用できます。詳細は、『Oracle GoldenGate for Windows and UNIXリファレンス』を参照してください。

18.11 時間の差異の調整

ソース・システムとターゲット・システム間の時間の差異に対応するには、Extractパラメータ・ファイルでTCPSOURCETIMERパラメータを使用します。このパラメータにより、レプリケートされたレコードのタイムスタンプがレポート目的で調整されるため、同期ラグの解析が容易になります。詳細は、『Oracle GoldenGate for Windows and UNIXリファレンス』を参照してください。

18.12 NonStopシステムへのイベント・メッセージの送信

WindowsまたはUNIXシステムのCollectorプロセスおよびReplicatプロセスで作成されたイベント・メッセージは、取得してNonStopシステムのEMSに送信できます。この機能によって、複数のプラットフォームにわたるOracle GoldenGateメッセージの集約表示が可能になります。この機能を使用するには、次の2つの手順を実行します。

- WindowsまたはUNIXシステムでEMSクライアントを実行します。

- NonStopシステムでCollectorプロセスを起動します。

18.12.1 WindowsまたはUNIXシステムでのEMSCLNTの実行

EMSCLNTユーティリティによって、WindowsまたはUNIXシステムで生成されたOracle GoldenGateイベント・メッセージを取得し、それらのメッセージをNonStopシステムのTCP/IP Collectorプロセスに送信します。EMSCLNTは、指定されたエラー・ログを読み取り、別のメッセージの送信を待機しながら無制限に実行されます。

WindowsまたはUNIXシステムのOracle GoldenGateディレクトリからemsclntを実行するには、次の構文を使用します。

emsclnt -h host_name | IP_address
-p port_number
-f file_name
-c Collector

説明:

- -h host_name | IP_addressは、EMSメッセージの送信先となるNonStop Serverの名前またはIPアドレスです。

- -p port_numberは、NonStop Collectorプロセスのポート番号です。

- -f file_nameは、エラー・メッセージの配信元となるローカル・ファイルの名前です。ファイルがOracle GoldenGateディレクトリ以外の場所に存在する場合、フルパス名を使用してください。

- -c Collectorは、このクライアントのEMS Collectorです。

次のWindowsの例では、DOSプロンプトからコマンドを実行し、エラー・メッセージのファイルD:\ogg\ggserr.logを読み取ります。エラー・メッセージは、ポート9876でリスニングしているNonStopホストmyhost.us.example.comのCollectorに送信されます。NonStopのCollectorプロセスは、フォーマットされたメッセージをEMS Collector $0に書き込みます。

次のUNIXの例では、エラー・メッセージのファイルggserr.logを読み取ります。エラー・メッセージは、ポート7850でリスニングしているIPアドレスが10.0.0.0のNonStop ServerのCollectorに送信されます。NonStopのCollectorは、フォーマットされたメッセージをems Collector $0に書き込みます。

注意:

UNIXではドル記号は変数を示すため、$0は一重引用符で囲む必要があります。

例18-1 エラー・メッセージのログ・ファイルの読取り(Windows)

> emsclnt –h myhost.us.example.com –p 9876 –f d:\ogg\ggserr.log –c $0

例18-2 エラー・メッセージのログ・ファイルの読取り(UNIX)

emsclnt –h 10.0.0.0 –p 7850 –f ggserr.log –c '$0'

18.12.2 NonStopでのCollectorの実行

NonStopシステムのCollector(このプラットフォームではServer-Collectorと呼ばれます)は、emsメッセージを収集して配信します。Collectorを起動するには、serverプログラムを実行します。WindowsまたはUNIXシステムで実行するEMSCLNTプロセスごとに、1つのserverプロセスをNonStopシステムで起動します。

たとえば、次の例では、serverを実行してメッセージを$DATA1.GGSERRS.SERVLOGに出力します。

> ASSIGN STDERR, $DATA1.GGSERRS.SERVLOG
> RUN SERVER /NOWAIT/ –p 7880

NonStop上でのCollectorの実行の詳細は、Oracle GoldenGateの管理for HP NonStop (Guardian)を参照してください。

18.13 パフォーマンス・チューニングに関するヘルプ情報の取得

Oracle GoldenGateのパフォーマンスをチューニングする方法の詳細は、Oracle GoldenGateのパフォーマンスのチューニングを参照してください。

19 Oracle GoldenGateのパフォーマンスのチューニング

この章では、Oracle GoldenGateコンポーネントのパフォーマンスを向上するための推奨事項について説明します。

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

- 複数のプロセス・グループの使用

- 行範囲によるプロセス・グループ間での表の分割

- ネットワークを効率的に使用するためのOracle GoldenGateの構成

- ディスクI/Oボトルネックの除外

- 仮想メモリーとページングの管理

- データのフィルタリングおよび変換の最適化

- Replicatトランザクションのチューニング

19.1 複数のプロセス・グループの使用

データベースから効率的に取得するために必要なExtractグループは、通常1つのみです。ただし、REDO (トランザクション)の値、またはデータと操作のタイプによっては、1つ以上のExtractグループを構成に追加する必要がある場合があります。

同様に、Replicatを調整モードで使用する場合、ターゲット・データベースにデータを適用するために必要なReplicatグループは、通常1つのみです。(詳細は、「調整Replicatモードについて」を参照してください。)ただし、Replicatを調整モードで使用する場合でも、複数のReplicatグループが必要な場合があります。Replicatをクラシック・モードで使用し、アプリケーションで大量のトランザクションが生成される場合、パラレルReplicatグループを使用する必要がある場合があります。

各Oracle GoldenGateコンポーネント(Extract、データ・ポンプ、証跡、Replicat)は独立したモジュールのため、必要に応じた組合せが可能です。複数の証跡とパラレルのExtractおよびReplicatプロセスを使用すると(データ・ポンプは使用しても使用しなくてもよい)、大量のトランザクションの処理、パフォーマンスの向上、ボトルネックの解消、レイテンシの削減または特定のデータの処理の分離を行えます。

図19-1に、処理速度を高め、ネットワーク帯域幅の問題を解決するようOracle GoldenGateを構成する方法をいくつか示します。

図19-1 パフォーマンスを向上させるロードバランシング構成

19.1.1 複数のプロセス・グループの使用に関する考慮事項

複数の処理グループを構成する前に、次の考慮事項に目を通し、望んだ結果が得られ、データ整合性が保てる構成であることを確認します。

19.1.1.1 データ整合性の維持

すべてのワークロードが、複数のグループにパーティション化されても元のトランザクション原子性を維持できるというわけではありません。1つのグループのオブジェクトが他のいずれかのグループのオブジェクトに対して、トランザクションまたはそれ以外の依存関係を持つことがあるかどうかを判断する必要があります。たとえば、ワークロードが主キーを定期的に更新する表は、この方法で簡単にパーティション化することはできません。このモードでは、DDLレプリケーション(データベースに対してサポートされている場合)も、アクションが特定のレコードに基づいているような一部のSQLEXECまたはEVENTACTIONS機能の使用も、有効ではありません。

表に外部キー依存性や主キーの更新がない場合、複数プロセスを使用できます。関連するDMLを同じプロセス・ストリームに保持し、データ整合性を保ちます。

19.1.1.2 グループの数

システムで実行できる同時ExtractおよびReplicatプロセス・グループの数は、使用可能なシステム・メモリー・サイズに応じて異なります。ExtractおよびReplicatの各プロセスでは、約25から55MBのメモリーが必要であり、トランザクションのサイズと同時トランザクション数によってはそれ以上のメモリーが必要です。

Oracle GoldenGate GGSCIコマンド・インタフェースでは、Oracle GoldenGate Managerのインスタンス当たり、最大で5,000の同時ExtractおよびReplicatグループがサポートされます。サポートされているレベルで、INFO、STATUSなどのGGSCIコマンドですべてのグループを完全に制御および表示できます。サポートされているレベルを超えると、グループ情報は表示されず、エラーが発生する可能性があります。Oracle GoldenGateでは、環境を効果的に管理するために、ExtractおよびReplicatグループの数(合計)をデフォルト・レベルの300以下に保つことが推奨されます。グループの数は、MAXGROUPSパラメータで制御されます。

注意:

グループを作成する場合、相互に関係制約のある表を同じグループにします。

19.1.1.3 メモリー

システムは、今後実行する各Oracle GoldenGate ExtractおよびReplicatプロセスのために、十分なスワップ領域を確保している必要があります。必要なスワップ領域を特定するには、次の手順を実行します。

1. 1つのExtractまたはReplicatを起動します。

2. GGSCIを実行します。

3. レポート・ファイルを表示し、PROCESS VM AVAIL FROM OS (min)行を探します。

4. 必要に応じて、値を次の整数(GB)に切り上げます。たとえば、1.76GBの場合は2GBに切り上げます。

5. その値に、実行されるExtractおよびReplicatプロセスの数を掛けます。その結果が、必要となる可能性のあるスワップ領域の最大量です。

メモリーの管理方法の詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXのCACHEMGRパラメータに関する項を参照してください。

19.1.1.4 処理が集中している表の分離

複数のプロセス・グループを使用して、通常の処理を妨げ、ターゲットでレイテンシを発生させるような表をサポートできます。次に例を示します。

- 列のデータ型またはパラメータの指定によって、あるいはSQLプロシージャを実行するために、Extractでデータベースからフェッチを行う必要がある場合があります。データベースからデータをフェッチする必要がある場合、Extractのパフォーマンスに影響します。Extractのパラメータ・ファイルにSTATOPTIONS REPORTFETCHパラメータが含まれている場合、STATS EXTRACTコマンドでフェッチ統計を取得できます。トランザクションの整合性が保てるのであれば、それらの表を独自のExtractグループに分離できます。

- クラシック・モードでは、Replicatプロセスがパフォーマンス・ボトルネックの原因となることがあります。それは、Replicatが単一スレッドのプロセスで、通常のSQLを使用して適用する操作が一度に1つであるためです。BATCHSQLを有効にしても(Oracle GoldenGateリファレンスfor Windows and UNIXを参照)、Replicatで大規模または長時間実行トランザクション、大量で多数の変更列およびLOBデータが含まれる表の処理に時間がかかる場合があります。その場合、トランザクションの整合性が保てるのであれば、それらの表を独自のReplicatグループに分離できます。

19.1.2 ターゲット・システムでのパラレルReplicatグループの使用

この項には、1つのExtractグループを複数のReplicatグループと組み合せる構成を作成する手順を示します。複数のReplicatプロセスで1つの証跡を読み取ることはできます(ディスクの競合を避けるため、3個以下)が、各Replicatを独自の証跡および対応するプロセスと対にすることをお薦めします。

- コマンドとパラメータの構文については、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

- 変更同期の構成手順の詳細は、オンライン変更同期の構成を参照してください。

19.1.2.1 Extractグループの作成

注意:

この構成には、Extractデータ・ポンプが含まれます。

1. ソースでADD EXTRACTコマンドを使用して、プライマリExtractグループを作成します。

2. ソースでADD EXTTRAILコマンドを使用して、作成するReplicatグループと同じ数のローカル証跡を指定します。すべての証跡をプライマリExtractグループに関連付ける必要があります。

3. ソースで、データ・ポンプExtractグループを作成します。

4. ソースでADD RMTTRAILコマンドを使用して、作成するReplicatグループと同じ数のリモート証跡を指定します。すべての証跡をデータ・ポンプExtractグループに関連付ける必要があります。

5. ソースでEDIT PARAMSコマンドを使用して、データベース環境に必要なパラメータを含むExtractパラメータ・ファイルをプライマリExtract用に1つ、データ・ポンプ用に1つ作成します。Extractを構成する際、次のようにします。

- ソース表を異なるTABLEパラメータに分割します。

- 各TABLE文を異なる証跡にリンクします。これは、証跡を指定するEXTTRAILまたはRMTTRAILパラメータの後にこの証跡と関連付けるTABLE文を配置することで行います。

19.1.2.2 Replicatグループの作成

1. ターゲットで、Replicatチェックポイント表を作成します。手順については、「チェックポイント表の作成」を参照してくださいすべてのReplicatグループで同じチェックポイント表を使用できます。

2. ターゲットでADD REPLICATコマンドを使用して、作成した各証跡に対するReplicatグループを作成します。ADD REPLICATのEXTTRAIL引数を使用して、Replicatグループを適切な証跡にリンクします。

3. ターゲットでEDIT PARAMSコマンドを使用して、データベース環境に必要なパラメータを含むReplicatパラメータ・ファイルを各Replicatグループ用に作成します。特定のReplicatグループに対するすべてのMAP文では、そのグループにリンクされた証跡に含まれる同じオブジェクトを指定する必要があります。

4. ターゲット・システムのManagerのパラメータ・ファイルで、PURGEOLDEXTRACTSパラメータを使用して、証跡からのファイルの消去を制御します。

19.1.3 複数のExtractグループと複数のReplicatグループの使用

複数のExtractグループは独自の証跡に書き込みます。各証跡は、専用のReplicatグループによって読み取られます。

- コマンドとパラメータの構文については、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

- 変更同期の構成手順の詳細は、オンライン変更同期の構成を参照してください。

19.1.3.1 Extractグループの作成

注意:

この構成には、データ・ポンプが含まれます。

1. ソースでADD EXTRACTコマンドを使用して、プライマリExtractグループを作成します。

2. ソースでADD EXTTRAILコマンドを使用して、作成した各Extractグループに対するローカル証跡を指定します。

3. ソースで、作成した各ローカル証跡を読み取るデータ・ポンプExtractグループを作成します。

4. ソースでADD RMTTRAILコマンドを使用して、作成した各データ・ポンプに対するリモート証跡を指定します。

5. ソースでEDIT PARAMSコマンドを使用して、各プライマリExtractグループおよび各データ・ポンプExtractグループに対するExtractパラメータ・ファイルを作成します。

19.1.3.2 Replicatグループの作成

1. ターゲットで、Replicatチェックポイント表を作成します。手順については、「チェックポイント表の作成」を参照してくださいすべてのReplicatグループで同じチェックポイント表を使用できます。

2. ターゲットでADD REPLICATコマンドを使用して、各証跡に対するReplicatグループを作成します。ADD REPLICATのEXTTRAIL引数を使用して、グループを証跡にリンクします。

3. ターゲットでEDIT PARAMSコマンドを使用して、各Replicatグループに対するReplicatパラメータ・ファイルを作成します。特定のReplicatグループに対するすべてのMAP文では、そのグループにリンクされた証跡に含まれる同じオブジェクトを指定する必要があります。

4. ソース・システムおよびターゲット・システムのManagerのパラメータ・ファイルで、PURGEOLDEXTRACTSパラメータを使用して、証跡からのファイルの消去を制御します。

19.2 行範囲によるプロセス・グループ間での表の分割

@RANGE関数を使用して、表の行を複数のOracle GoldenGateプロセスで分割できます。これを使用して大規模でアクセスの多い表のスループットを向上でき、データをセットに分割して異なる宛先に分散させることもできます。各範囲は、TABLE文またはMAP文のFILTER句で指定します。

@RANGEは、安全で拡張性あるファンクションです。同じ行は同じプロセス・グループによって必ず処理されることが保証されるため、データ整合性が保たれます。

Replicatを使用するよりも、プライマリExtractまたはデータ・ポンプを使用して範囲を計算する方が効率的な場合があります。範囲を計算するには、Replicatが証跡全体をフィルタし、範囲の指定を満たすデータを見つける必要があります。ただし、ビジネス・ケースに応じて、このフィルタリングをどこで行うかを判断します。

図19-2 2つのExtractグループでの表の行の分割

図19-3 2つのReplicatグループでの表の行の分割

19.3 ネットワークを効率的に使用するためのOracle GoldenGateの構成

ネットワーク間のデータの転送が非効率であると、Extractプロセスの遅延やターゲットでのレイテンシが生じます。これを修正しないと、最終的にはプロセスの障害が生じることがあります。

最初に新しいOracle GoldenGate構成を開始する際には、次のことを行います。

1. ExtractおよびReplicatで許容可能とみなされる遅延およびスループット・ボリュームのベンチマークを確立します。それぞれが実行するタスクの種類により、通常、ExtractはReplicatより高速であることに注意してください。時間の経過とともに、この違いが通常であるか、チューニングやトラブルシューティングが必要であるかがわかるようになります。

2. ベンチマークと比較して、定期的なスケジュールを設定して、遅延およびボリュームについてこれらのプロセスを監視します。ときどき急に発生する遅延ではなく、一定または増加中の遅延を探します。継続的な過度の遅延は、Oracle GoldenGate構成のいずれかの場所でボトルネックがあることを示します。これは、Oracle GoldenGateでチューニングが必要であること、またはエラー状態が存在することを示す重大な最初の指標です。

ボリューム統計を表示するには、STATS EXTRACTまたはSTATS REPLICATコマンドを使用します。遅延統計を表示するには、LAG EXTRACTまたはLAG REPLICATコマンドを使用します。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

19.3.1 Oracle GoldenGateに影響するネットワーク・ボトルネックの検出

Oracle GoldenGateのスループットに影響するネットワーク・ボトルネックを検出するには、次の手順に従います。

1. 次のコマンドを発行して、最新の10個のExtractチェックポイントを表示します。ソース・システムでデータ・ポンプExtractを使用している場合、プライマリExtractに対して、またデータ・ポンプに対してもコマンドを発行します。

INFO EXTRACT group, SHOWCH 10

2. Write Checkpoint統計を探します。これが、Extractが証跡に書き込む場所です。

Write Checkpoint #1

GGS Log Trail
Current Checkpoint (current write position):
Sequence #: 2
RBA: 2142224
Timestamp: 2011-01-09 14:16:50.567638
Extract Trail: ./dirdat/eh

3. プライマリExtractとデータ・ポンプの両方に対して、次を行います。

- 1つか2つより多いチェックポイントがあるかどうかを確認します。最大で10個あります。

- 最大の増分番号を持つWrite Checkpoint n見出し(たとえばWrite Checkpoint #8)を探し、Sequence、RBAおよびTimestampの値をメモします。これが、最新のチェックポイントです。

4. メモした情報を参照し、次の検証を行います。

- プライマリExtractは一連のチェックポイントを生成していますか。または最初のチェックポイントのみを生成していますか。

- データ・ポンプが使用中の場合、それは一連のチェックポイントを生成していますか。または1つのチェックポイントのみを生成していますか。

5. プライマリおよびデータ・ポンプのExtractプロセスに対して、再度INFO EXTRACTを発行します。

- 最新の書込みチェックポイントは増加していますか。前回のINFO EXTRACTコマンド以降、値が増加した場合、表示する最新のSequence、RBAおよびTimestampの値を探します。

6. 次のコマンドを発行して、Replicatプロセスのステータスを表示します。

SEND REPLICAT group, STATUS

- ステータスは、Replicatが、遅延(処理するデータを待機中)、データの処理中、または証跡の最後(EOF)であるかどうかを示します。

Replicatのステータスが遅延モードまたは証跡ファイルの最後であり、次のいずれかがtrueである場合、ネットワーク・ボトルネックが存在します。

- プライマリExtractのみを使用していて、その書込みチェックポイントが増加していないか、増加が非常に遅い場合。このExtractプロセスはネットワーク全体のデータを送信する役割を持つため、最終的に、抽出されたデータのバックログを格納するメモリーを使い果して異常終了します。

- データ・ポンプを使用していて、その書込みチェックポイントが増加していないが、プライマリExtractの書込みチェックポイントは増加している場合。この場合、プライマリExtractはローカル証跡に書き込むことができますが、データ・ポンプはリモート証跡に書き込むことができません。抽出されたデータのバックログを格納するメモリーを使い果すと、データ・ポンプは異常終了します。プライマリExtractは、証跡順序の最後のファイルに到達するまで実行され、チェックポイントを作成できなくなるため異常終了します。

注意:

ネットワークが停止している場合でも、Replicatは、証跡の残りのデータのすべてをターゲットに適用するまで、通常の方法で処理を行います。最終的に、証跡ファイルの最後に到達したことが報告されます。

19.3.2 データ・ポンプの使用による帯域幅の制限の回避

並列のデータ・ポンプを使用すると、ネットワーク構成のプロセスごとに課せられている帯域幅の制限を回避できます。並列のデータ・ポンプを使用して、同じターゲット・システムや別のターゲット・システムにデータを送信できます。また、データ・ポンプはプライマリExtractからTCP/IPの役割を除去し、そのローカル証跡によりフォルト・トレランスが提供されます。

19.3.3 Oracle GoldenGateの帯域幅の要件の削減

RMTHOSTパラメータの圧縮オプションを使用して、データを圧縮してからネットワーク全体に送信します。圧縮によるメリットと、圧縮を実行するのに必要なCPUリソースを比較検討します。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

19.3.4 TCP/IPパケット・サイズの増加

RMTHOSTパラメータのTCPBUFSIZEオプションを使用して、Extractが保持するTCPソケット・バッファのサイズを制御します。バッファ・サイズを増やすと、ターゲット・システムにより大きなパケットを送信できます。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

ネットワークに最適なバッファ・サイズを決定するためのガイドラインとして、次の手順を使用します。

1. コマンド・シェルからpingコマンドを実行し、次の例に示すような平均ラウンド・トリップ時間(RTT)を取得します。

C:\home\ggs>ping ggsoftware.com
Pinging ggsoftware.com [192.168.116.171] with 32 bytes of data:
Reply from 192.168.116.171: bytes=32 time=31ms TTL=56
Reply from 192.168.116.171: bytes=32 time=61ms TTL=56
Reply from 192.168.116.171: bytes=32 time=32ms TTL=56
Reply from 192.168.116.171: bytes=32 time=34ms TTL=56
Ping statistics for 192.168.116.171:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 31ms, Maximum = 61ms, Average = 39ms

2. この値にネットワーク帯域幅を掛けます。たとえば、平均RTTが0.08秒で帯域幅が100MB/秒の場合の最適なバッファ・サイズは次のようになります。

0.08 second * 100 megabits per second = 8 megabits

3. この結果を8で割り、バイト数を決定します(8ビットから1バイトに変換します)。例:

8 megabits / 8 = 1 megabyte per second

TCPBUFSIZEで必要な単位はバイトなので、この値を1000000に設定します。

Windows以外のシステムの最大ソケット・バッファ・サイズは、通常デフォルトで制限されています。Oracle GoldenGateがTCPBUFSIZEで構成するバッファ・サイズを増やすことができるように、システム管理者にソースおよびターゲット・システムのデフォルト値を増やすように依頼してください。

19.4 ディスクI/Oボトルネックの除外

I/Oアクティビティによって、ExtractとReplicatの両方にボトルネックが発生することがあります。

- 標準Extractでは、証跡へのディスク書込みおよびデータソースからのディスク読取りが生成されます。

- データ・ポンプおよびReplicatでは、ローカル証跡からのディスク読取りが生成されます。

- 各プロセスは、定期的なスケジュールで、リカバリ・チェックポイントをそのチェックポイント・ファイルに書き込みます。

19.4.1 システム構成内のI/Oパフォーマンスの向上

証跡ファイルを含むディスク・サブシステムでI/O待機が発生している場合、実行可能な最速のディスク・コントローラにその証跡を配置します。

RAID構成を確認します。Oracle GoldenGateはデータを順次書き込むため、I/Oの速度が低下しこれらのタイプのファイルには不要なチェックサムを使用するRAID 5よりも、RAID 0+1 (ストライピングおよびミラーリング)をお薦めします。

19.4.2 Oracle GoldenGate構成内のI/Oパフォーマンスの向上

Oracle GoldenGate内で構成の変更を行うことによって、I/Oパフォーマンスを向上させることができます。次のパラメータの値を増加してみてください。

- CHECKPOINTSECSパラメータでは、ExtractおよびReplicatがルーチンのチェックポイントを作成する頻度を制御します。

注意:

CHECKPOINTSECSは、Oracleデータベース・システムの統合Replicatには無効です。

- GROUPTRANSOPSパラメータでは、標準モードでの動作時に1つのReplicatトランザクションに含まれるSQL操作数を制御します。Replicatトランザクションに含まれる操作数を増やすと、Replicatが実行するトランザクション数の削減、およびチェックポイント・ファイルと(使用されている場合)チェックポイント表へのI/Oアクティビティの削減によって、Oracle GoldenGateのパフォーマンスが向上します。Replicatは、定期的なチェックポイントに加えて、ターゲットにトランザクションを適用するたびにチェックポイントを発行します。

注意:

インバウンド・サーバー・パラメータparallelismが1に設定されていないかぎり、GROUPTRANSOPSは、Oracleデータベース・システムの統合Replicatには無効です。

- EOFDELAYまたはEOFDELAYCSECSパラメータでは、Extract、データ・ポンプまたはReplicatが、データ・ソース内の現在のデータの末尾に到達した後に、新しいデータを確認する間隔を制御します。このパラメータの値を増やすと、新しいデータの読取りによるシステムI/Oのオーバーヘッドを低減できます。

注意:

これらのパラメータの値を増やすと、パフォーマンスは向上しますが、プロセスが失敗したときに再処理が必要なデータ量も増加します。これは、ソースとターゲット間のレイテンシ全体に影響を及ぼします。一部のテストは、リカバリとパフォーマンスとの間の最適なバランスを決定するのに役立ちます。

19.5 仮想メモリーとページングの管理

Oracle GoldenGateはコミットされたトランザクションのみをレプリケートするため、トランザクションのコミットまたはロールバックを受信するまで、キャッシュと呼ばれる管理仮想メモリー・プールに各トランザクションの操作を保持します。1つのグローバル・キャッシュが1つのExtractまたはReplicatプロセスの共有リソースとして機能します。Oracle GoldenGateキャッシュ・マネージャは、オペレーティング・システムのメモリー管理機能を利用して、Oracle GoldenGateプロセスを持続的かつ効率的に機能させます。CACHEMGRパラメータでは、Oracle GoldenGateによって処理中のコミットされていないトランザクション・データのキャッシュに使用可能な仮想メモリーおよび一時ディスク領域の量を制御します。

プロセスの起動時、次の例に示すように、キャッシュ・マネージャによって仮想メモリーのリソースの可用性が確認されます。

CACHEMGR virtual memory values (may have been adjusted)CACHESIZE: 32GCACHEPAGEOUTSIZE (normal): 8M PROCESS VM AVAIL FROM OS (min): 63.97GCACHESIZEMAX (strict force to disk): 48G

現在のリソースでは不十分な場合、次のようなメッセージが返されます。

2013-11-11 14:16:22 WARNING OGG-01842 CACHESIZE PER DYNAMIC DETERMINATION (32G) LESS THAN RECOMMENDED: 64G (64bit system)vm found: 63.97GCheck swap space. Recommended swap/extract: 128G (64bit system).

システムでページングが過度に発生し、クリティカルなプロセスのパフォーマンスに影響する場合、CACHEMGRパラメータのCACHESIZEオプションの値を小さくします。スワップ・ディレクトリに割り当てられるディスク領域の最大量をCACHEDIRECTORYオプションで制御することもできます。CACHEMGRの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

19.6 データのフィルタリングおよび変換の最適化

大量のデータ・フィルタリングまたはデータ変換によって、処理のオーバーヘッドが追加されます。システム上の他のプロセスにおけるこのオーバーヘッドの影響を最小限にするための推奨事項を、次に示します。

- プライマリExtractをデータのフィルタおよび変換に使用しないでください。データ取得専用にします。これにより、パフォーマンスは向上し、それらのアクティビティによって生じるプロセスの障害に対して脆弱ではなくなります。目的は、プライマリExtractプロセスが実行中であり、トランザクション・ボリュームに対応していることを確認することです。

- フィルタリングおよび変換を実行するために、Replicatまたはデータ・ポンプを使用します。次のいずれかの構成を考慮します。

- システムがオーバーヘッドを許容できる場合、ソースでデータ・ポンプを使用します。この構成は、使用されるネットワーク帯域幅が少ないため、フィルタリングされるデータのボリュームが大きい場合に適しています。フィルタリングされたデータのみがターゲットに送信され、これはセキュリティの考慮事項にも役立ちます。

- 中間システムでデータ・ポンプを使用します。この構成はソース・システムおよびターゲット・システムにオーバーヘッドがない状態を保持しますが、フィルタリングされていないデータがソース・システムから中間システムに送信されるため、ネットワーク帯域幅が多く使用されます。

- システムがオーバーヘッドを許容できる場合、および大量のフィルタリングされていないデータを送信するのに十分なネットワーク帯域幅がある場合、ターゲットでデータ・ポンプまたはReplicatを使用します。

- システム・リソースに制限がある場合、最も適切ではない選択肢は、ExtractとReplicat間でフィルタリングと変換の操作を分けることです。

19.7 Replicatトランザクションのチューニング

Replicatは標準SQLを使用するため、そのパフォーマンスは、ターゲット・データベースのパフォーマンスおよび適用されるSQLのタイプ(挿入、または更新や削除)に依存します。ただし、特定の手順を実行して、Replicatの効率を最大限にすることができます。

19.7.1 バリア・トランザクションに対する調整パフォーマンスのチューニング

調整Replicat構成で、主キーへの更新などのバリア・トランザクションにより、データベースへのコミット数が増加し、ReplicatのGROUPTRANSOPS機能のメリットが妨げられます。調整Replicatのワークロード全体でバリア・トランザクションの数が多い場合、多数のスレッドを使用すると、実際にReplicatのパフォーマンスが低下します。

多数のバリア・トランザクションが予想される場合に高いパフォーマンスを維持するために、次を実行できます。

- グループ内のアクティブなスレッド数を減らします。これにより、Replicatが実行する全体のコミット数が削減されます。

- バリア・トランザクションの大部分を占める表、およびそれと依存関係がある任意の表を、スレッド数が少ない別の調整Replicatグループに移動します。バリア・トランザクションに妨げられずに並列パフォーマンスを維持するように、より多数のスレッドを持つ元のReplicatグループに最小限のバリア・トランザクションがある表を保持します。

- (Oracle RAC)新しいReplicat構成で、Replicatチェックポイント表のPCTFREE属性を増やすことができます。ただし、最初にReplicatを起動する前にこれを実行する必要があります。PCTFREEの推奨値は90です。

19.7.2 配列での同様のSQL文の適用

BATCHSQLパラメータでは、Replicatのパフォーマンスを向上させます。BATCHSQLを使用すると、Replicatは同様のSQL文を配列にまとめてより高速に適用します。標準モードでは、Replicatは1回に1つのSQL文を適用します。

ReplicatがBATCHSQLモードの場合、小さな行の変更は大きな行の変更よりも高いパフォーマンスの向上を示します。行変更当たりのデータ量が100バイトの場合、BATCHSQLを使用することによってReplicatのパフォーマンスが最大で300%向上することがわかっていますが、実際のパフォーマンス向上は、混在する操作に応じて異なります。行変更当たりのデータ量が約5,000バイトの場合、BATCHSQLを使用するメリットは低下します。

SQL文をバッチにまとめると、効率性は向上しますが、メモリーも消費します。最適なパフォーマンスを維持するために、次のBATCHSQLオプションを使用してください。

BATCHESPERQUEUE
BYTESPERQUEUE
OPSPERBATCH
OPSPERQUEUE

値を設定するベンチマークとして、それぞれ500バイトの1,000のSQL文をまとめた1つのバッチが必要とするメモリーは10MB未満であると想定してください。

BATCHSQLをBATCHTRANSOPSオプションとともに使用して、配列のサイズを調整できます。BATCHTRANSOPSは、コミットが必要になる前に1つのトランザクションにグループ化可能な最大バッチ操作数を制御します。非統合Replicatのデフォルトは1000です。統合Replicatのデフォルトは50です。統合Replicatを使用する際に多くの待機依存性がある場合、BATCHTRANSOPSの値を減らしてみてください。待機依存性の数を確認するには、OracleデータベースのV$GG_APPLY_COORDINATORデータベース・ビューのTOTAL_WAIT_DEPS列を表示します。

追加の使用方法の考慮事項および構文は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

19.7.3 キーがない場合の完全な表スキャンの防止

ターゲット表に主キー、一意キーまたは一意索引がない場合、Replicatはすべての列を使用してWHERE句を構築します。これは本質的に完全な表スキャンです。

行選択をより効率的に行うには、TABLE文およびMAP文のKEYCOLS句を使用して、1つ以上の列を一意と識別します。Replicatは指定された列をキーとして使用します。次の例は、TABLE文のKEYCOLS句を示しています。

TABLE hr.emp, KEYCOLS (FIRST_NAME, LAST_NAME, DOB, ID_NO);

使用方法のガイドラインおよび構文は、Oracle GoldenGateリファレンスfor Windows and UNIXのTABLEパラメータおよびMAPパラメータに関する項を参照してください。

19.7.4 大規模トランザクションの分割

ソース・データベースの大規模なトランザクションをターゲット・データベースで処理できない場合、ReplicatパラメータMAXTRANSOPSを使用して、一連の小さいトランザクションに分割できます。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

注意:

MAXTRANSOPSは、Oracleデータベース・システムの統合Replicatには無効です。

19.7.5 オープン・カーソルの調整

Replicatプロセスは、キャッシュされたSQL文およびSQLEXEC操作のためにカーソルを保持します。十分なカーソルがないと、Replicatはより多くの文をエージングする必要があります。デフォルトでは、ReplicatはMAXSQLSTATEMENTSパラメータで許可されているのと同じ数のカーソルを保持します。このパラメータの値を増やす必要がある場合があります。その場合、データベースで許可されているオープン・カーソルの最大数も調整する必要があります。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

19.7.6 更新速度の向上

ブロックの断片化を過度に行うと、ReplicatがSQL文を適用する速度が通常より遅くなります。過度に断片化された表を再編成し、Replicatを停止および起動して、新しいオブジェクトIDを登録します。

19.7.7 Replicatトランザクション・タイムアウトの設定

TRANSACTIONTIMEOUTパラメータでは、コミットされていないReplicatターゲット・トランザクションによる、ターゲット・データベースのロックおよびリソースの無駄な消費を防止します。Replicatが既存のアプリケーション・タイムアウト、およびターゲットのその他のデータベース要件内で動作できるように、このパラメータの値を変更できます。

TRANSACTIONTIMEOUTでは、Replicatがターゲット・トランザクション内の最後のソース・トランザクションのトランザクション終了レコードを受信していない場合に、ターゲット・トランザクションをオープンしておくことができる時間を制限します。デフォルトでは、Replicatは複数のソース・トランザクションを1つのターゲット・トランザクションにグループ化してパフォーマンスを向上させますが、ソース・トランザクションの一部のみのコミットは行わず、最後のレコードが到着するまで無制限に待ちます。ReplicatパラメータのGROUPTRANSOPSでは、グループ化されるターゲット・トランザクションの最小サイズを制御します。

次のイベントは、長期化してTRANSACTIONTIMEOUTをトリガーする場合があります。

- ネットワークの問題によって、トレイル・データがターゲット・システムに転送されない。

- いずれかのシステムのディスク容量が不足し、トレイル・データが書き込まれない。

- Collectorの異常終了(ほとんど発生しないイベントです)。

- トランザクションのレコードの書込み中のExtractの異常終了または停止。

- Extractデータ・ポンプの異常終了または停止。

- 停電やシステムのクラッシュなど、ソース・システムの障害。

詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

20 管理操作の実行

この章では、レプリケーション環境をアクティブにし、データ変更を処理しながら、アプリケーション、システムおよびOracle GoldenGateを変更する手順について説明します。

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

- アプリケーション・パッチの実行

- トランザクション・ログの初期化

- システムの停止

- データベース属性の変更

- アクティブな構成へのプロセス・グループの追加

- 証跡ファイルのサイズの変更

- クラシック・モードから統合モードへExtractの切替え

- 統合モードからクラシック・モードへExtractの切替え

- 非統合モードから統合モードへReplicatの切替え

- 統合モードから非統合モードへReplicatの切替え

- 調整モードへのReplicatの切替え

- 調整Replicat構成の管理

- システム障害または破損の後のプライマリExtractの再起動

20.1 アプリケーション・パッチの実行

通常、アプリケーション・パッチおよびアプリケーション・アップグレードでは、新規オブジェクトの追加や既存オブジェクトの変更などを伴うDDLが実行されます。Oracle GoldenGate環境でアプリケーションのパッチまたはアップグレードを適用するには、次のいずれかを実行します。

- 使用中のデータベースのタイプに対するDDLレプリケーションがOracle GoldenGateでサポートされている場合は、DDLレプリケーションを使用すると、レプリケーション・プロセスを停止せずにDDLをレプリケートできます。この方法を使用するには、ソース表とターゲット表の構造が同一である必要があります。

- レプリケーションを継続させるための適切な手順を踏んだ後、ソースとターゲットの両方でパッチまたはアップグレードを手動で適用できます。

Oracle GoldenGateを使用してパッチのDDLをレプリケートする手順

1. ある程度時間をかけてOracle GoldenGateのDDLサポートについて学習し、DDLサポートのインストールと構成を行います(まだ行っていない場合)。このドキュメントで、使用中のデータベースに関する指示を参照してください。DDL環境を整えておけば、将来パッチやアップグレードを適用するのが容易になります。

2. アプリケーションのパッチまたはアップグレードによって追加される新規オブジェクトをデータ・レプリケーションに含める場合、必ずそれらのオブジェクトをDDLパラメータ文に追加します。TABLE文およびMAP文に新しいオブジェクトを追加するには、「Oracle GoldenGate構成への表の追加」の手順を参照してください。

3. アプリケーションのパッチまたはアップグレードによってトリガーまたはカスケード制約がインストールされる場合、ターゲットで実行されるDMLと、ソースのトリガーまたはカスケード操作からレプリケートされる同じDDLとの間でコリジョンが発生しないように、ターゲットでそれらのオブジェクトを無効化します。

ソースおよびターゲットでパッチを手動で適用する手順

1. ソース・データベースへのアクセスを停止します。

2. Extractがトランザクション・ログに残っているトランザクション・データの取得を終了するまで待機します。Extractの終了を確認するには、EOFに到達したことを示すメッセージが戻されるまでGGSCIで次のコマンドを発行します。

SEND EXTRACT group GETLAG

3. Extractを停止します。

STOP EXTRACT group

4. ソースに対するパッチの適用を開始します。

5. データ・ポンプ(使用している場合)およびReplicatがそれぞれの証跡に含まれるデータの処理を終了するまで待機します。それぞれの終了を確認するには、EOFに到達したことを示すメッセージが戻されるまで次のコマンドを使用します。

SEND EXTRACT group GETLAG
SEND REPLICAT group GETLAG

6. データ・ポンプおよびReplicatを停止します。

STOP EXTRACT group
STOP REPLICAT group

この時点で、ソースからレプリケートされたトランザクション変更はすべてターゲットに適用されたため、ソースとターゲットのデータは同一となります。

7. ターゲットにパッチを適用します。

8. パッチによって表の定義が変更された場合、ソース表に対しDEFGENを実行して更新後のソース定義を生成し、ターゲット・システムにある既存のソース定義ファイルの古い定義を新しい定義に置き換えます。

9. ユーザー・アクティビティの取得を再開する準備が整ったら、Oracle GoldenGateプロセスを起動します。

20.2 トランザクション・ログの初期化

トランザクション・ログを初期化する場合、最初にすべてのデータをOracle GoldenGateによって処理し、次にExtractグループとその関連証跡を削除してから再度追加する必要があります。

1. アプリケーションによるデータベースへのアクセスを停止します。これにより、トランザクション・データの記録が停止されます。

2. GGSCIを実行し、プライマリExtractグループに対してSEND EXTRACTコマンドをLOGENDオプション付きで発行します。このコマンドで、Extractがトランザクション・ログに残っているレコードの処理を終了したかどうかを問い合せます。

SEND EXTRACT group LOGEND

3. 処理するレコードがなくなったことを示すYESステータスが戻されるまで、コマンドを発行し続けます。

4. ターゲット・システムでGGSCIを実行し、SEND REPLICATコマンドをSTATUSオプション付きで発行します。このコマンドで、Replicatが証跡に残っているデータの処理を終了したかどうかを問い合せます。

SEND REPLICAT group STATUS

5. 現在のトランザクションで0(ゼロ)レコードと示されるまで、コマンドを発行し続けます。次に例を示します。

Sending STATUS request to REPLICAT REPSTAB...
Current status:
Seqno 0, Rba 9035
0 records in current transaction.

6. プライマリExtractグループ、データ・ポンプ(使用している場合)およびReplicatグループを停止します。

STOP EXTRACT group
STOP EXTRACT pump_group
STOP REPLICAT group

7. Extract、データ・ポンプおよびReplicatグループを削除します。

DELETE EXTRACT group
DELETE EXTRACT pump_group
DELETE REPLICAT group

8. 標準のオペレーティング・システム・コマンドを使用して、証跡ファイルを削除します。

9. データベースを停止します。

10. データベースを初期化して再起動します。

11. プライマリExtractグループを再作成します。

ADD EXTRACT group TRANLOG, BEGIN NOW

12. ローカル証跡を再作成します(使用する場合)。

ADD EXTTRAIL trail, EXTRACT group

13. データ・ポンプを再作成します(使用する場合)。

ADD EXTRACT pump_group, EXTTRAILSOURCE trail

14. リモート証跡を再作成します。

ADD RMTTRAIL trail, EXTRACT pump_group

15. Replicatグループを再作成します。

ADD REPLICAT group, EXTTRAIL trail

16. Extract、データ・ポンプ(使用する場合)およびReplicatを起動します。

START EXTRACT group
START EXTRACT pump_group
START REPLICAT group

20.3 システムの停止

メンテナンスや他のOracle GoldenGateに影響する作業のためにシステムを停止する場合、次の手順に従って、Extractで確実にすべてのトランザクション・ログ・レコードを処理します。そうしないと、同期データが失われる可能性があります。

1. Oracle GoldenGateによって処理されるトランザクションを生成するすべてのアプリケーションおよびデータベース・アクティビティを停止します。

2. GGSCIを実行します。

3. GGSCIで、SEND EXTRACTコマンドをLOGENDオプション付きで発行します。このコマンドで、Extractプロセスがデータソースのレコードの処理を終了したかどうかを問い合せます。

SEND EXTRACT group LOGEND

4. YESステータスが戻されるまで、コマンドを発行し続けます。その時点で、すべてのトランザクション・ログ・データが処理されているため、Oracle GoldenGateとシステムを安全に停止できます。

20.4 データベース属性の変更

この項では、データベースの表および構造に対して実行される管理操作について説明します。

データベース・メタデータの変更

Oracle GoldenGate構成への表の追加

ソースとターゲットの間の表属性の調整

DB2 z/OSの表の列を追加するALTER TABLEの実行

ソース表の削除および再作成

クラシック・キャプチャを使用する場合のOracle RACスレッド数の変更

ORACLE_SIDの変更

アーカイブ・ログの消去

DB2表の再編成(z/OSプラットフォーム)

20.4.1 データベース・メタデータの変更

この手順は、ソース・データベースの次のメタデータの変更時にReplicatエラーを防止するために必要です。

- データベース・キャラクタ・セット

- 国のキャラクタ・セット

- ロケール

- タイムゾーン

- オブジェクト名の大/小文字区別

この手順を実行せずにこれらの変更を行った場合、次のエラーが発生します。

2013-05-26 20:10:09  ERROR   OGG-05500  Detected database metadata mismatch between current trail file ./dirdat/_p/v1000003 and the previous sequence. *DBTIMEZONE: [GMT]/[UTC].

この手順では、Extractを停止し、次に新しい証跡ファイルを作成します。新しいデータベース・メタデータは、変更後に開始したトランザクションを持つこの新しいファイルに含まれます。

1. ソース・データベースでトランザクション・アクティビティを停止します。データベースへのメタデータ変更はまだ行わないでください。

2. ソース・システムのGGSCIで、取得するREDOデータがこれ以上ないことが示されるまで、LOGENDオプションを指定したSEND EXTRACTコマンドを発行します。

SEND EXTRACT group LOGEND

3. Extractを停止します。

STOP EXTRACT group

4. 各ターゲット・システムで、証跡のすべてのデータの処理が完了したことを示す"At EOF"ステータスが表示されるまで、STATUSオプションを指定したSEND REPLICATコマンドを発行します。すべてのReplicatプロセスが"At EOF"を戻すまで、すべてのターゲット・システムでこれを行う必要があります。

SEND REPLICAT group STATUS

5. データ・ポンプおよびReplicatを停止します。

STOP EXTRACT group
STOP REPLICAT group

6. データベース・メタデータを変更します。

7. ソース・システムのGGSCIで、プライマリExtractが新しいファイルの開始にローカル証跡をロールオーバーするために、ALTER EXTRACTコマンドをETROLLOVERオプションを指定して発行します。

ALTER EXTRACT group, ETROLLOVER

8. データ・ポンプが新しいファイルの開始にリモート証跡をロールオーバーするために、ALTER EXTRACTコマンドをETROLLOVERオプションを指定して発行します。

ALTER EXTRACT pump, ETROLLOVER

9. Extractを起動します。

START EXTRACT group

10. GGSCIで、起動するデータ・ポンプとReplicatプロセスを新しい証跡シーケンス番号に再配置します。

ALTER EXTRACT pump, EXTSEQNO seqno, EXTRBA RBA
ALTER REPLICAT group, EXTSEQNO seqno, EXTRBA RBA

11. データ・ポンプを起動します。

START EXTRACT group

12. Replicatプロセスを起動します。

START REPLICAT group

20.4.2 Oracle GoldenGate構成への表の追加

この手順では、Oracle GoldenGateのDDLサポート機能が使用されていない、または使用中のデータベースでサポートされていないと仮定しています。

注意:

OracleおよびTeradataのデータベースの場合、この手順を使用するかわりに、Oracle GoldenGateのDDLサポート機能を有効化し、新しい表を追加するDDLを自動的に取得して適用することができます。このドキュメントで、使用中のデータベースに該当する指示を参照してください。

始める前に、次の手順に目を通してください。このプロセスは、新しい表がTABLEパラメータのワイルドカードに一致するかどうかと、名前またはデータ定義をターゲットでマップする必要があるかどうかによって、若干変わります。

Oracle GoldenGate構成への表の追加の前提条件

- この手順では、ソース表とターゲット表が空であるか、同一の(すでに同期されている)データを含んでいると仮定しています。

- DBLOGINコマンドとADD TRANDATAコマンドを使用する可能性があります。この手順を開始する前に、Oracle GoldenGateリファレンスfor Windows and UNIXを参照し、使用中のデータベースでのこれらのコマンドの正しい使用方法を確認してください。

Oracle GoldenGate構成に表を追加する手順

1. 新しい表へのユーザー・アクセスを停止します。

2. (新しい表がワイルドカードに一致しない場合)ワイルドカードに一致しない表を多数追加する場合、ExtractおよびReplicatのパラメータ・ファイルのコピーを作成し、TABLE文およびMAP文で新しい表を追加します。コピーを作成しない場合は、各プロセスを停止するよう要求された後で、元のパラメータ・ファイルを編集します。

3. (新しい表がワイルドカードに一致する場合)ExtractおよびReplicatのパラメータ・ファイルで、WILDCARDRESOLVEパラメータが、デフォルトのDYNAMIC以外の設定で使用されていないことを確認します。

4. (新しい表がワイルドカードに一致しない場合)新しい表がワイルドカード定義に一致しない場合、Extractを停止します。

STOP EXTRACT group

5. 新しい表をソース・データベースおよびターゲット・データベースに追加します。

6. ソース・データベースでの必要に応じて、GGSCIで新しい表に対してADD TRANDATAコマンドを発行します。ADD TRANDATAを使用する前に、DBLOGINコマンドを発行します。

7. ソース定義とターゲット定義が同一か、異なるかに応じて、Replicatのパラメータ・ファイルでASSUMETARGETDEFSまたはSOURCEDEFSを使用します。SOURCEDEFSが必要な場合は、次のいずれかの操作を実行できます。

- DEFGENを実行し、ターゲットのソース定義ファイルに新しい定義をコピーします。

- 新しい表が定義テンプレートに一致する場合は、MAPパラメータのDEFオプションでテンプレートを指定します。(DEFGENは不要です。)

8. 新しいソース定義または新しいMAP文を登録するには、Replicatを停止して起動します。

STOP REPLICAT group
START REPLICAT group

9. Extractを起動します(該当する場合)。

START EXTRACT group

10. 新しい表へのユーザー・アクセスを許可します。

20.4.3 ソースとターゲットの間の表属性の調整

列やパーティションの追加または変更、サプリメンタル・ロギング詳細の変更(Oracle)など、Oracle GoldenGate構成内のソース表の属性を変更する場合は、次の手順に従ってください。ここでは、レプリケーション・レイテンシを発生させずにターゲット表に同じ変更を加える方法を示します。

注意:

「DB2 z/OSの表の列を追加するALTER TABLEの実行」も参照してください。

注意:

この手順では、Oracle GoldenGateのDDLサポート機能が使用されていない、または使用中のデータベースでサポートされていないと仮定しています。OracleおよびTeradataのデータベースの場合、この手順を使用するかわりに、Oracle GoldenGateのDDLサポート機能を有効化してDDLの変更をターゲットに伝播することができます。

1. ソース・システムとターゲット・システムで、トランザクション・ログ内の停止ポイントを示すマーカーを生成するための表(マーカー表)を作成します。単純な列を2つ作成します(一方は主キー、もう一方は通常の列です)。例:

CREATE TABLE marker
(
id int NOT NULL,
column varchar(25) NOT NULL,
PRIMARY KEY (id)
);

2. ソース・システムとターゲット・システムの両方で、マーカー表に行を挿入します。

INSERT INTO marker VALUES (1, 1);
COMMIT;

3. ソース・システムで、GGSCIを実行します。

4. Extractのパラメータ・ファイルを編集のために開きます。

注意:

ローカル・オペレーティング・システムのものとは異なるキャラクタ・セットを使用した既存のパラメータ・ファイル(CHARSETオプションを使用して別のキャラクタ・セットを指定したファイルなど)は、VIEW PARAMSコマンドまたはEDIT PARAMSコマンドを使用して表示や編集を行わないでください。そのようなパラメータ・ファイルはGGSCIの外部から表示してください。そうしないと、内容が破損する可能性があります。

5. Extractのパラメータ・ファイルのTABLE文にマーカー表を追加します。

TABLE marker;

6. パラメータ・ファイルを保存して閉じます。

7. データ・ポンプを使用している場合、データ・ポンプのTABLE文にマーカー表を追加します。

8. Extractおよびデータ・ポンプのプロセスを停止し、取得のラグが発生しないよう、ただちに再起動します。

STOP EXTRACT group
START EXTRACT group
STOP EXTRACT pump_group
START EXTRACT pump_group

9. ターゲット・システムでGGSCIを実行します。

10. Replicatのパラメータ・ファイルを編集のために開きます。

注意:

ローカル・オペレーティング・システムのものとは異なるキャラクタ・セットを使用した既存のパラメータ・ファイル(CHARSETオプションを使用して別のキャラクタ・セットを指定したファイルなど)は、VIEW PARAMSコマンドまたはEDIT PARAMSコマンドを使用して表示や編集を行わないでください。そのようなパラメータ・ファイルはGGSCIの外部から表示してください。そうしないと、内容が破損する可能性があります。

11. Replicatのパラメータ・ファイルのMAP文にマーカー表を追加し、次に示すように、EVENTACTIONSパラメータを使用してReplicatを停止し、マーカー表に対する操作を無視します。

MAP marker, TARGET marker, EVENTACTIONS (STOP, IGNORE);

12. パラメータ・ファイルを保存して閉じます。

13. Replicatプロセスを停止し、ただちに再起動します。

STOP REPLICAT group
START REPLICAT group

14. ソース表とターゲット表両方の表属性を変更する準備ができたら、それらの表に対するユーザー・アクティビティをすべて停止します。

15. ソース・システムで、マーカー表に対するUPDATE操作をトランザクションの唯一の操作として実行します。

UPDATE marker
SET column=2,
WHERE id=1;
COMMIT;

16. ターゲット・システムで、EVENTACTIONSルールの結果としてReplicatが停止したことが示されるまで、次のコマンドを発行します。

STATUS REPLICAT group

17. ソース表とターゲット表に対してDDLを実行しますが、まだユーザー・アクティビティは許可しません。

18. Replicatを起動します。

START REPLICAT group

19. ソース表とターゲット表に対するユーザー・アクティビティを許可します。

20.4.4 DB2 z/OSの表の列を追加するALTER TABLEの実行

再配列された行形式で1つ以上の可変長の列を含む表に、固定長の列を追加する場合、その表を静止できるかどうかに応じて次のいずれかの手順を実行する必要があります。

表を静止できる場合

1. Extractが静止前に発生したトランザクションの取得を終了するまで待機します。

2. 表を変更して列を追加します。

3. 表領域を再編成します。

4. Extractを再起動します。

5. 表のアクティビティを再開します。

表を静止できない場合

1. Extractを停止します。

2. パラメータ・ファイルのTABLE文から表を削除します。

3. Extractを再起動します。

4. 表を変更して列を追加します。

5. 表領域を再編成します。

6. Extractを停止します。

7. 表をTABLE文に再度追加します。

8. ソース表とターゲット表を再同期します。

9. Extractを起動します。

10. 表のアクティビティを再開します。

20.4.5 ソース表の削除および再作成

Oracle GoldenGateの実行中にソース表の削除および再作成を行う場合、慎重に作業する必要があります。

1. 表へのアクセスを停止します。

2. Extractがトランザクション・ログからその表について残っている変更をすべて処理するまで待機します。Extractが終了したことを確認するには、GGSCIでINFO EXTRACTコマンドを使用します。

INFO EXTRACT group

3. Extractを停止します。

STOP EXTRACT group

4. 表を削除して再作成します。

5. 現在のデータベースでサポートされる場合、表に対してGGSCIのADD TRANDATAコマンドを実行します。

6. 再作成操作によって、ソース表の定義がターゲットの定義と異なるように変更された場合、ソース表に対してDEFGENユーティリティを実行し、ソース定義を生成して、ターゲット・システムの既存のソース定義ファイルの新しい定義で古い定義を置き換えます。

7. 表へのユーザー・アクセスを許可します。

20.4.6 クラシック・キャプチャを使用する場合のOracle RACスレッド数の変更

Oracleのクラシック・キャプチャ・モードのExtractに有効です。Extractがクラシック・キャプチャ・モードで動作する場合、 Oracle RACクラスタのREDOスレッドの数が変更されたら、必ずExtractグループを削除して再度追加する必要があります。Extractグループを削除して追加するには、次の手順を実行します。

1. ソースおよびターゲット・システムでGGSCIを実行します。

2. ExtractとReplicatを停止します。

STOP EXTRACT group
STOP REPLICAT group

3. ソース・システムで、次のコマンドを発行してプライマリExtractグループとデータ・ポンプを削除します。

DELETE EXTRACT group
DELETE EXTRACT pump_group

4. ターゲット・システムで、次のコマンドを発行してReplicatグループを削除します。

DELETE REPLICAT group

5. 標準のオペレーティング・システム・コマンドを使用して、ローカルおよびリモートの証跡ファイルを削除します。

6. 新しいRACスレッド数を指定し、プライマリExtractグループを以前と同じ名前で再度追加します。

ADD EXTRACT group TRANLOG, THREADS n, BEGIN NOW

7. ローカル証跡を以前と同じ名前で再度追加します。

ADD EXTTRAIL trail, EXTRACT group

8. データ・ポンプExtractを以前と同じ名前で再度追加します。

ADD EXTRACT group EXTTRAILSOURCE trail, BEGIN NOW

9. リモート証跡を以前と同じ名前で再度追加します。

ADD RMTTRAIL trail, EXTRACT group

10. Replicatグループを以前と同じ名前で追加します。BEGINオプションは外し、証跡の最初から処理が開始されるようにします。

ADD REPLICAT group EXTTRAIL trail

11. ワイルドカードを適宜使用して、すべてのプロセスを起動します。再作成したプロセスがソースおよびターゲットのOracle GoldenGateインスタンスにおける唯一のプロセスである場合は、次のコマンドのかわりにSTART ER *を使用することもできます。

START EXTRACT group
START REPLICAT group

20.4.7 ORACLE_SIDの変更

ORACLE_SIDおよびORACLE_HOMEは、オペレーティング・システム・レベルの環境変数を修正せずに変更できます。変更対象がソース・データベースとターゲット・データベースのどちらであるかに応じて、ExtractまたはReplicatのパラメータ・ファイルで次のパラメータを設定します。その後、パラメータの変更を反映するため、ExtractまたはReplicatを停止して再起動します。

SETENV (ORACLE_HOME=location)
SETENV (ORACLE_SID='SID')

20.4.8 アーカイブ・ログの消去

Oracleのアーカイブ・ログは、Extractの読取りチェックポイントおよび書込みチェックポイントがそのログの最後を過ぎたら、安全に消去できます。Extractは、トランザクションのコミットが終了するまでそのトランザクションを証跡に書き込まないため、すべてのオープン・トランザクションを追跡する必要があります。そのため、Extractでは、各オープン・トランザクションの開始記録が含まれるアーカイブ・ログと、それ以降のすべてのアーカイブ・ログにアクセスする必要があります。

Extractは、新規トランザクションに関する現在のアーカイブ・ログ(読取りチェックポイント)を読み取ると同時に、未コミットのトランザクションが存在する最も古いアーカイブ・ログ内にチェックポイント(リカバリ・チェックポイント)を保持します。

Extractのチェックポイント位置を特定するには、GGSCIで次のコマンドを使用します。

INFO EXTRACT group, SHOWCH

- Input Checkpointフィールドに、Extractの起動時に処理を開始した位置が示されます。

- Recovery Checkpointフィールドに、最も古い未コミット・トランザクションの位置が示されます。

- Next Checkpointフィールドに、Extractが読取りを行っているREDOログの位置が示されます。

- Output Checkpointフィールドに、Extractが書込みを行っている位置が示されます。

Recovery Checkpointフィールドにリストされている順序番号を取得して、Extractで不要になったすべてのアーカイブ・ログを消去するシェル・スクリプトを記述できます。その番号よりも前のすべてのアーカイブ・ログは、安全に削除できます。

20.4.9 DB2表の再編成(z/OSプラットフォーム)

IBM社のREORGユーティリティを使用して圧縮表領域が含まれるDB2表を再編成する場合、その表がOracle GoldenGateで処理中であれば、KEEPDICTIONARYオプションを指定してください。これにより、REORGユーティリティによって圧縮ディクショナリが再作成されることを防止します。圧縮ディクショナリが再作成されると、変更前に書き込まれたログ・データを解凍できなくなり、Extractは異常終了します。別の方法としては、再編成を実行する前に必ず表のすべての変更をOracle GoldenGateで抽出しておきます。そうしないと、表が切り捨てられます。

20.5 アクティブな構成へのプロセス・グループの追加

この項では、プロセス・グループの追加方法について説明します。

20.5.1 作業を開始する前に

ここでの手順では、すでにアクティブである構成に対してプロセス・グループを追加します。各手順は、Oracle GoldenGateの操作経験のあるユーザーによって実行される必要があります。これらの手順では、プロセスを少しの間停止してパラメータ・ファイルを再構成します。これらの手順を実行するユーザーには、次のことが要求されます。

- Oracle GoldenGate構成の基本コンポーネントに関する知識があること

- Oracle GoldenGateのパラメータおよびコマンドを理解していること

- GGSCIにアクセスしてグループおよびパラメータ・ファイルを作成できること

- 特定の状況で使用するパラメータを把握していること

各手順の詳細は、次の項を参照してください。

- アクティブな構成への別のExtractグループの追加

- アクティブな構成への別のデータ・ポンプの追加

- アクティブな構成への別のReplicatグループの追加

20.5.2 アクティブな構成への別のExtractグループの追加

この手順では、既存のExtractグループのワークロードを複数のExtractグループに分割します。また、データ・ポンプ・グループ(該当する場合)およびReplicatグループを含めて、新規Extractグループで取得されたデータを伝播する方法についても説明します。

手順はソース・システムとターゲット・システムで実行します。

1. この手順を完了する前にオンライン・ログを再利用する場合、アーカイブ・トランザクション・ログが使用できることを確認します。

2. 新規Extractグループの名前を選択します。

3. データ・ポンプを使用するかどうかを決定します。

4. ソース・システムで、GGSCIを実行します。

5. 新規Extractグループのパラメータ・ファイルを作成します。

EDIT PARAMS group

注意:

元のパラメータ・ファイルをコピーしてこのグループで使用できますが、必ずExtractグループ名を変更し、この新規グループに適用される他のすべての関連パラメータを変更してください。

6. パラメータ・ファイルに次のパラメータを含めます。

- 新規グループを指定するEXTRACTパラメータ。

- 適切なデータベース・ログイン・パラメータ。

- 現在の構成に応じた他の適切なExtractパラメータ。

- ローカル証跡を参照するEXTTRAILパラメータ(データ・ポンプを追加する場合)またはRMTTRAILパラメータ(データ・ポンプを追加しない場合)。

- RMTHOSTパラメータ(このExtractで直接リモート証跡に書込みを行う場合)。

- 新規グループで処理する表に対応する1つ以上のTABLE文(および適切な場合はTABLEEXCLUDE)。

7. ファイルを保存して閉じます。

8. 元のExtractのパラメータ・ファイルを編集して、新規グループに移動される表のTABLE文を削除します。または、ワイルドカードを使用している場合、TABLEEXCLUDEパラメータを追加してワイルドカードの指定からそれらの表を除外します。

9. (Oracle) Extractを統合モードで使用している場合、新規Extractグループをソース・データベースに登録します。

REGISTER EXTRACT group DATABASE [CONTAINER (container[, ...])]

10. 新規グループに移動された表をロックし、ロックが適用された時点のタイムスタンプを記録します。Oracle表では、次のスクリプトを実行できます(処理の終了後にロックは解放されます)。

-- temp_lock.sql
-- use this script to temporary lock a table in order to
-- get a timestamp

lock table &schema . &table_name in EXCLUSIVE mode;
SELECT TO_CHAR(sysdate,'MM/DD/YYYY HH24:MI:SS') "Date" FROM dual;
commit;

11. 前の手順でスクリプトを使用しなかった場合、1つ以上の表のロックを解放します。

12. 古いExtractグループと既存のすべてのデータ・ポンプを停止します。

STOP EXTRACT group

13. 新規Extractグループを追加して、前に記録したタイムスタンプの時点から起動するように構成します。

ADD EXTRACT group, TRANLOG, BEGIN YYYY/MM/DD HH:MI:SS:CCCCCC

14. 新規Extractグループの証跡を追加します。

ADD {EXTTRAIL | RMTTRAIL} trail, EXTRACT group

説明:

- EXTTRAILではローカル証跡が作成されます。このオプションは、新規Extractグループと組み合せて使用するデータ・ポンプを作成する場合に指定します。パラメータ・ファイルのEXTTRAILで指定されている証跡を指定します。証跡を作成したら、ローカル・データ・ポンプを新規Extractグループにリンクする手順に進みます。

- RMTTRAILではリモート証跡が作成されます。このオプションは、データ・ポンプを使用しない場合に指定します。パラメータ・ファイルのRMTTRAILで指定されている証跡を指定します。証跡を作成したら、リモートReplicatを新規データ・ポンプにリンクする手順に進みます

相対名またはフルパス名を指定できます。例:

ADD RMTTRAIL dirdat/rt, EXTRACT primary
ADD EXTTRAIL c:\ogg\dirdat\lt, EXTRACT primary

ローカル・データ・ポンプを新規Extractグループにリンクする手順

1. ソース・システムで、データソースとしてEXTTRAIL証跡を使用し、データ・ポンプExtractグループを追加します。

ADD EXTRACT pump, EXTTRAILSOURCE trail

次に例を示します。

ADD EXTRACT pump2, EXTTRAILSOURCE dirdat\lt

2. データ・ポンプにパラメータ・ファイルを作成します。

EDIT PARAMS pump

3. パラメータ・ファイルに現在の構成に応じた適切なExtractパラメータを含め、さらに次のパラメータを含めます。

- ターゲット・システムを参照するRMTHOSTパラメータ。

- 新規リモート証跡(この後で指定)を参照するRMTTRAILパラメータ。

- このデータ・ポンプで処理する表に対応する1つ以上のTABLEパラメータ。

4. ソース・システムのGGSCIで、データ・ポンプのリモート証跡を追加します。パラメータ・ファイルのRMTTRAILで指定されている証跡名を使用します。

ADD RMTTRAIL trail, EXTRACT pump

次に例を示します。

ADD RMTTRAIL dirdat/rt, EXTRACT pump2

5. 「リモートReplicatを新規データ・ポンプにリンクする手順」での手順に従います。

リモートReplicatを新規データ・ポンプにリンクする手順

1. ターゲット・システムのGGSCIで、リモート証跡を読み取るReplicatグループを追加します。EXTTRAILには、RMTTRAIL ExtractパラメータおよびADD RMTTRAILコマンドと同じ証跡を指定します。

ADD REPLICAT group, EXTTRAIL trail

次に例を示します。

ADD REPLICAT rep2, EXTTRAIL /home/ggs/dirdat/rt

2. このReplicatグループのパラメータ・ファイルを作成します。1つ以上のMAP文を使用して、新規プライマリExtractおよびデータ・ポンプ(使用する場合)で指定した表と同じ表を指定します。

3. ソース・システムで、Extractグループおよびデータ・ポンプを起動します。

START EXTRACT group
START EXTRACT pump

4. ターゲット・システムで、新規Replicatグループを起動します。

START REPLICAT group

20.5.3 アクティブな構成への別のデータ・ポンプの追加

この手順では、ソース・システムのアクティブなプライマリExtractグループにデータ・ポンプExtractグループを追加します。これにより、次の変更が発生します。

- プライマリExtractは、ローカル証跡に書込みを行います。

- データ・ポンプは、古い証跡のデータがターゲットに適用された後に、新しいリモート証跡に書込みを行います。

- 古いReplicatグループは、新しいReplicatグループで置き換えられます。

手順はソース・システムとターゲット・システムで実行します。

1. ソース・システムで、GGSCIを実行します。

2. groupにプライマリExtractグループの名前を使用してローカル証跡を追加します。

ADD EXTTRAIL trail, EXTRACT group

次に例を示します。

ADD EXTTRAIL dirdat\lt, EXTRACT primary

3. プライマリExtractグループのパラメータ・ファイルを開き、作成したローカル証跡を参照するEXTTRAILパラメータでRMTTRAILパラメータを置き換えます。

注意:

ローカル・オペレーティング・システムのものとは異なるキャラクタ・セットを使用した既存のパラメータ・ファイル(CHARSETオプションを使用して別のキャラクタ・セットを指定したファイルなど)は、VIEW PARAMSコマンドまたはEDIT PARAMSコマンドを使用して表示や編集を行わないでください。そのようなパラメータ・ファイルはGGSCIの外部から表示してください。そうしないと、内容が破損する可能性があります。

EXTTRAILパラメータの例:

EXTTRAIL dirdat\lt

4. RMTHOSTパラメータを削除します。

5. ファイルを保存して閉じます。

6. データソースとして手順2で指定した証跡を使用し、新規データ・ポンプExtractグループを追加します。

ADD EXTRACT group, EXTTRAILSOURCE trail

次に例を示します。

ADD EXTRACT pump, EXTTRAILSOURCE dirdat\lt

7. 新規データ・ポンプのパラメータ・ファイルを作成します。

EDIT PARAMS group

8. パラメータ・ファイルに現在の構成に応じた適切なExtractパラメータを含め、さらに次のパラメータを含めます。

- このデータ・ポンプで処理する表に対応する1つ以上のTABLEパラメータ。

- ターゲット・システムを参照するRMTHOSTパラメータ。

- 新規リモート証跡(この後で作成)を参照するRMTTRAILパラメータ。

9. ソース・システムのGGSCIで、データ・ポンプのリモート証跡を追加します。データ・ポンプのパラメータ・ファイルのRMTTRAILで指定されている証跡名を使用し、EXTRACTのデータ・ポンプのグループ名を指定します。

ADD RMTTRAIL trail, EXTRACT group

次に例を示します。

ADD RMTTRAIL dirdat/rt, EXTRACT pump

注意:

このコマンドによって、証跡名がExtractグループにバインドされますが、実際の証跡は作成されません。証跡ファイルは、処理が開始した時点で作成されます。

10. ターゲット・システムでGGSCIを実行します。

11. 新規Replicatグループを追加してリモート証跡にリンクします。

ADD REPLICAT group, EXTTRAIL trail

次に例を示します。

ADD REPLICAT rep, EXTTRAIL dirdat/rt

12. このReplicatグループのパラメータ・ファイルを作成します。元のReplicatグループからパラメータ・ファイルをコピーできますが、必ずREPLICATパラメータを新規グループ名に変更してください。

13. ソース・システムで、追加したパラメータの変更を反映するため、プライマリExtractグループを一度停止してから再起動します。

STOP EXTRACT group
START EXTRACT group

14. ソース・システムで、データ・ポンプを起動します。

START EXTRACT group

15. ターゲット・システムで、EOFに到達して処理するレコードがなくなったことを示すメッセージがレポートされるまで、古いReplicatに対してLAG REPLICATコマンドを発行し続けます。

LAG REPLICAT group

16. 古いReplicatグループを停止します。

STOP REPLICAT group

17. 古いReplicatグループのチェックポイント表を使用する場合、GGSCIからデータベースにログインします。

DBLOGIN [SOURCEDB datasource] [{, USERIDALIAS alias | USERID user [,options]]

18. 古いReplicatグループを削除します。

DELETE REPLICAT group

19. 新規Replicatグループを起動します。

START REPLICAT group

注意:

古いリモート証跡は削除しないでください(後からサポート・ケースで必要となる場合などに備えるため)。古い証跡は、必要に応じて別の場所に移動できます。

20.5.4 アクティブな構成への別のReplicatグループの追加

この手順では、既存のReplicatグループに新規Replicatグループを追加します。新規Replicatは、元のReplicatと同じ証跡から読取りを行います。

特定の表でのトランザクションの分離やパフォーマンスの向上の目的で、Replicatがクラシック・モードで構成されている場合、複数のReplicatグループが必要になることがあります。同じReplicatグループ内の複数の処理スレッド間でワークロードを分割できるため、調整Replicatを使用している場合は、通常、複数のReplicatグループは必要ありません。Replicatのモードの詳細は、「オンラインReplicatグループの作成」 を参照してください。

手順はソース・システムとターゲット・システムで実行します。

1. 新規グループの名前を選択します。

2. ターゲット・システムでGGSCIを実行します。

3. 新規Replicatグループのパラメータ・ファイルを作成します。

EDIT PARAMS group

注意:

元のパラメータ・ファイルをコピーしてこのグループで使用できますが、必ずReplicatグループ名を変更し、この新規グループに適用される他のすべての関連パラメータを変更してください。

4. MAP文を追加して(またはコピーした文を編集して)、このグループに追加または移動する表を指定します。このグループが調整Replicatグループである場合、適切なスレッド指定を含めます。

5. パラメータ・ファイルを保存して閉じます。

6. ソース・システムで、GGSCIを実行します。

7. Extractグループを停止します。

STOP EXTRACT group

8. EOFに到達して処理するレコードがなくなったことを示すメッセージがレポートされるまで、古いReplicatグループに対してINFO REPLICATコマンドを発行し続けます。

INFO REPLICAT group

9. ターゲット・システムで、Replicatの古いパラメータ・ファイルを編集して、新規Replicatグループに移動した表を指定しているMAP文を削除します。このReplicatで処理を続けるMAP文のみを残します。

10. ファイルを保存して閉じます。

11. EOFに到達して処理するレコードがなくなったことを示すメッセージがレポートされるまで、古いReplicatグループに対してINFO REPLICATコマンドを発行し続けます。

INFO REPLICAT group

12. 現在のReplicatチェックポイントを取得します。

INFO REPLICAT group

13. 古いReplicatグループを停止します。調整Replicatを停止している場合、すべてのスレッドが同じ証跡レコードで停止するように、停止がクリーンであることを確認します。

STOP REPLICAT group

14. 新しいReplicatの位置を、古いReplicatグループと同じ証跡順序番号およびRBAに変更します

ALTER REPLICAT group, EXTSEQNO seqno, EXTRBA rba

seqnoは、手順11で取得した古いグループのチェックポイントからの証跡順序番号で、rbaは古いグループのチェックポイントからの証跡レコードのRBA番号です。

15. 新規Replicatグループを追加します。EXTTRAILでは、このReplicatグループが読み取る証跡を指定します。

ADD REPLICAT group, EXTTRAIL trail

次に例を示します。

ADD REPLICAT rep, EXTTRAIL dirdat/rt

16. INFORM COMMANDを発行し、表示された証跡ファイル順序番号およびRBAにReplicatを変更します。

INFORM COMMAND

17. ソース・システムで、Extractグループを起動します。

START EXTRACT group

18. ターゲット・システムで、古いReplicatグループを起動します。

START REPLICAT group

19. 新規Replicatグループを起動します。

START REPLICAT group

20.6 証跡ファイルのサイズの変更

証跡ファイルのサイズを変更するには、証跡がローカル証跡であるかリモート証跡であるかに応じて、ALTER EXTTRAILまたはALTER RMTTRAILコマンドのMEGABYTESオプションを使用します。ファイル・サイズを変更するには、次の手順を実行します。

1. 証跡の場所に応じて次のコマンドのいずれかを発行し、変更する証跡のパス名および関連するExtractグループの名前を表示します。ワイルドカードを使用してすべての証跡を表示します。

(リモート証跡)

INFO RMTTRAIL *

(ローカル証跡)

INFO EXTTRAIL *

2. 証跡の場所に応じて次のコマンドのいずれかを発行し、ファイル・サイズを変更します。

(リモート証跡)

ALTER RMTTRAIL trail, EXTRACT group, MEGABYTES n

(ローカル証跡)

ALTER EXTTRAIL trail, EXTRACT group, MEGABYTES n

3. 次のコマンドを発行して、Extractの証跡を次のファイルに切り替えます。

SEND EXTRACT group, ROLLOVER

20.7 クラシック・モードから統合モードへExtractの切替え

Oracleのみに有効です。

この手順では、既存のExtractグループをクラシック・モードから統合モードに切り替えます。Oracleデータベース用のExtractのモードの詳細は、Oracle DatabaseのためのOracle GoldenGateのインストールおよび構成を参照してください。

統合モードへの移行をサポートするには、Extractが実行される場所に応じて、オープンしている最も古いトランザクションの開始を含むトランザクション・ログが、ソースまたはダウンストリーム・マイニング・システムで使用可能である必要があります。

最も古いオープン・トランザクションを判断するには、SHOWTRANSオプションを指定したSEND EXTRACTコマンドを発行します。ユーザー・アプリケーションによってトランザクションがロールバックされる場合、トランザクションをスキップすると、データが損失する可能性があり、トランザクションが強制的に証跡へのコミットを行うと、不要なデータが追加される可能性があるということを理解して、このコマンドのFORCETRANSまたはSKIPTRANSオプションを使用して、特定のオープン・トランザクションを管理できます。これらのオプションを使用する前に、Oracle GoldenGateリファレンスfor Windows and UNIXで確認してください。

GGSCI> SEND EXTRACT group, SHOWTRANS�
GGSCI> SEND EXTRACT group, { SKIPTRANS ID [THREAD n] [FORCE] |�
FORCETRANS ID [THREAD n] [FORCE] }�

Extractモードを切り替える手順

1. 現在のOracle GoldenGate作業ディレクトリをバックアップします。

2. Oracle GoldenGateプロセスは現在の構成で実行を継続しますが、現在の変更アクティビティに対応するために、Extractパラメータ・ファイルを新しい名前にコピーします。

3. 統合キャプチャ・モードでビジネス・アプリケーションをサポートするために、Extractユーザーに適切な権限を付与し、必要な構成手順を実行します。統合モードでのExtractの構成および実行の詳細は、Oracle DatabaseのためのOracle GoldenGateのインストールおよび構成を参照してください。

4. マイニング・データベースがある場所に応じて、次のいずれかのコマンドを使用してマイニング・データベースにログインします。

DBLOGIN USERIDALIAS alias

MININGDBLOGIN USERIDALIAS alias

説明: aliasは、Oracle dbms_goldengate_auth.grant_admin_privilegeプロシージャを使用して付与された権限を持っている、資格証明ストア内のユーザーの別名を指定します。

5. Extractグループをマイニング・データベースに登録します。特に、これによりログマイニング・サーバーが作成されます。

REGISTER EXTRACT group DATABASE

6. 次のコマンドを発行して、アップグレード・コマンドを発行できるかどうかを確認します。登録コマンドの前に開始したトランザクションは、アップグレードを進める前に証跡に書き込む必要があります。Extractをアップグレードできるということを示すメッセージが返されるまで、複数回このコマンドを発行する必要がある場合があります。

INFO EXTRACT group UPGRADE

7. Extractグループを停止します。

STOP EXTRACT group

8. Extractグループを統合モードに切り替えます。Oracle GoldenGateリファレンスfor Windows and UNIXのこのコマンドのOracle RACオプションに関する項(該当する場合)を参照してください。

ALTER EXTRACT group UPGRADE INTEGRATED TRANLOG

9. 古いパラメータ・ファイルを新しいパラメータ・ファイルで、同じ名前のまま置き換えます。

10. Extractグループを起動します。

START EXTRACT group

20.8 統合モードからクラシック・モードへExtractの切替え

Oracleのみに有効です。

この手順では、既存のExtractグループを統合モードからクラシック・モードに切り替えます。Oracleデータベース用のExtractのモードの詳細は、Oracle DatabaseのためのOracle GoldenGateのインストールおよび構成を参照してください。

クラシック・モードへの移行をサポートするには、オープンしている最も古いトランザクションの開始を含むトランザクション・ログが、ソースまたはダウンストリーム・マイニング・システムで使用可能である必要があります。最も古いオープン・トランザクションを判断するには、SHOWTRANSオプションを指定したSEND EXTRACTコマンドを発行します。ユーザー・アプリケーションによってトランザクションがロールバックされる場合、トランザクションをスキップすると、データが損失する可能性があり、トランザクションが強制的に証跡へのコミットを行うと、不要なデータが追加される可能性があるということを理解して、このコマンドのFORCETRANSまたはSKIPTRANSオプションを使用して、特定のオープン・トランザクションを管理できます。これらのオプションを使用する前に、Oracle GoldenGateリファレンスfor Windows and UNIXで確認してください。

GGSCI> SEND EXTRACT group, SHOWTRANS�
GGSCI> SEND EXTRACT group, { SKIPTRANS ID [THREAD n] [FORCE] |�
FORCETRANS ID [THREAD n] [FORCE] }�

Extractモードを切り替える手順

1. 現在のOracle GoldenGate作業ディレクトリをバックアップします。

2. Oracle GoldenGateプロセスは現在の構成で実行を継続しますが、現在の変更アクティビティに対応するために、Extractパラメータ・ファイルを新しい名前にコピーします。

3. クラシック・キャプチャ・モードでビジネス・アプリケーションをサポートするために、Extractユーザーに適切な権限を付与し、必要な構成手順を実行します。クラシック・モードでのExtractの構成および実行の詳細は、Oracle DatabaseのためのOracle GoldenGateのインストールおよび構成を参照してください。

4. 次のコマンドを発行して、ダウングレード・コマンドを発行できるかどうかを確認します。ダウングレード・コマンドを発行する前に開始したトランザクションは、進める前に証跡に書き込む必要があります。Extractをダウングレードできるということを示すメッセージが返されるまで、複数回このコマンドを発行する必要がある場合があります。

INFO EXTRACT group DOWNGRADE

5. Extractグループを停止します。

STOP EXTRACT group

6. マイニング・データベースがある場所に応じて、次のいずれかのコマンドを使用してマイニング・データベースにログインします。

DBLOGIN USERIDALIAS alias

MININGDBLOGIN USERIDALIAS alias

説明: aliasは、Oracle dbms_goldengate_auth.grant_admin_privilegeプロシージャを使用して付与された権限を持っている、資格証明ストア内のユーザーの別名です。

7. Extractグループをクラシック・モードに切り替えます。

ALTER EXTRACT group DOWNGRADE INTEGRATED TRANLOG

RACシステムの場合は、THREADSオプションをダウングレード・コマンドとともに使用して、RACスレッドの数を指定する必要があります。

8. Extractグループをマイニング・データベースから登録解除します。特に、これによりログマイニング・サーバーが削除されます。

UNREGISTER EXTRACT group DATABASE

9. 古いパラメータ・ファイルを新しいパラメータ・ファイルで、同じ名前のまま置き換えます。

10. Extractグループを起動します。

START EXTRACT group

20.9 非統合モードから統合モードへReplicatの切替え

Oracleのみに有効です。Oracleデータベース用のReplicatのモードの詳細は、Oracle DatabaseのためのOracle GoldenGateのインストールおよび構成を参照してください。

この手順では、既存のReplicatグループを非統合モードから統合モードに切り替えます。

注意:

Extractが失敗からリカバリした直後、またはトランザクション・ログで別の場所に再配置された直後に、Replicatモード間の切替えが発生しないように構成してください。

バグ17079228

1. Oracle GoldenGate作業ディレクトリをバックアップします。

2. Oracle GoldenGateプロセスは現在の構成で実行を継続しますが、現在の変更アクティビティに対応するために、Replicatパラメータ・ファイルを新しい名前にコピーします。

3. 統合Replicatモードでビジネス・アプリケーションをサポートするために、Replicatユーザーに適切な権限を付与し、必要な構成手順を実行します。統合モードでのReplicatの構成および実行の詳細は、Oracle DatabaseのためのOracle GoldenGateのインストールおよび構成を参照してください。

4. GGSCIを実行します。

5. Replicatを停止します。

STOP REPLICAT group

6. GGSCIからターゲット・データベースにログインします。

DBLOGIN USERIDALIAS alias

説明: aliasは、Oracle dbms_goldengate_auth.grant_admin_privilegeプロシージャを使用して付与された権限を持っている、資格証明ストア内のユーザーの別名です。

7. Replicatを統合モードに変更します。

ALTER REPLICAT group, INTEGRATED

8. 古いパラメータ・ファイルを新しいパラメータ・ファイルで、同じ名前のまま置き換えます。

9. Replicatを起動します。

START REPLICAT group

10. Replicatが統合モードであることを確認します。

INFO REPLICAT group

Replicatを最初に統合モードで起動する際に、STARTコマンドでは、Replicatグループをデータベースに登録し、Replicatがアタッチするインバウンド・サーバーを起動します。Replicatグループを統合モードに変換する際に、Oracle GoldenGateチェックポイント表の使用は中止され、リカバリ情報は、インバウンド・サーバーおよび進んでいるチェックポイント・ファイルによって内部的に保持されます。非統合モードに戻す場合に備えて、チェックポイント表を保持することができます。

20.10 統合モードから非統合モードへReplicatの切替え

Oracleのみに有効です。Oracleデータベース用のReplicatのモードの詳細は、Oracle DatabaseのためのOracle GoldenGateのインストールおよび構成を参照してください。

統合モードから非統合モードにReplicatをいつでも切り替えることができます。この切替えにより、ターゲット・データベースからReplicatグループが自動的に登録解除され、インバウンド・サーバーが削除されます。

注意:

Extractが失敗からリカバリした直後、またはトランザクション・ログで別の場所に再配置された直後に、Replicatモード間の切替えが発生しないように構成してください。

バグ17079228

1. Oracle GoldenGate作業ディレクトリをバックアップします。

2. Oracle GoldenGateプロセスは現在の構成で実行を継続しますが、現在の変更アクティビティに対応するために、Replicatパラメータ・ファイルを新しい名前にコピーします。

3. 非統合Replicatモードでビジネス・アプリケーションをサポートするために、Replicatユーザーに適切な権限を付与し、必要な構成手順を実行します。統合モードでのReplicatの構成および実行の詳細は、Oracle DatabaseのためのOracle GoldenGateのインストールおよび構成を参照してください。

4. GGSCIを実行します。

5. GGSCIからターゲット・データベースにログインします。

DBLOGIN USERIDALIAS alias

説明: aliasは、Oracle dbms_goldengate_auth.grant_admin_privilegeプロシージャを使用して付与された権限を持っている、資格証明ストア内のユーザーの別名です。

6. 非統合Replicat用にターゲット・データベースにチェックポイント表を作成し、そのリカバリ・チェックポイントを格納するために使用します。チェックポイント表がこのReplicatグループに以前に関連付けられていて、まだ存在する場合は、この手順を省略できます。チェックポイント表を使用するためのオプションの詳細は、「チェックポイント表の作成」 を参照してください。

ADD CHECKPOINTTABLE [container.]table

7. Replicatを停止します。

STOP REPLICAT group

8. Replicatを非統合モードに変更します。CHECKPOINTTABLE引数に、このReplicatグループに対して作成したチェックポイント表を指定します。

ALTER REPLICAT group, NONINTEGRATED, CHECKPOINTTABLE [container.]table

9. 古いパラメータ・ファイルを新しいパラメータ・ファイルで、同じ名前のまま置き換えます。

10. Replicatを起動します。

START REPLICAT group

このコマンドを発行した後で、スイッチオーバーを完了できるように、ソース・データベースにいくつかのアクティビティが存在するまで待機します。(Replicatは、「統合モードからの切替え」のステータスを削除する前に内部の高基準値を超えるまで待機します。)

11. Replicatが非統合モードに切り替えられたことを確認します。

INFO REPLICAT group

20.11 調整モードへのReplicatの切替え

Oracle GoldenGateでサポートされているすべてのデータベース・タイプに有効です。

この手順では、標準Replicat構成(非調整)を調整された構成にアップグレードします。この手順では、複数のExtractおよびReplicatプロセス間でデータをパーティション化する構成を、1つのExtractおよび1つの調整Replicatを使用する構成で置き換えていることを前提としています。調整Replicatによって、複数のReplicatプロセスを使用する必要がなくなります。調整Replicatには1つの証跡のみが必要であるため、複数のExtractプロセスやデータ・ポンプは必要ありません。

調整Replicatの詳細は、オンライン変更同期の構成を参照してください。

20.11.1 手順の概要

この手順では、EVENTACTIONSパラメータをSTOPアクションとともに利用して、すべてのReplicatプロセスが証跡内の同じポイントで停止できるようにします。EVENTACTIONSアクションは、ダミー表へのINSERTが含まれるトランザクションによってトリガーされます。INSERTを使用すると、各プロセスがイベント・トランザクションまでを含む、すべての処理を終了して停止します。IGNOREの追加のイベント・アクションは、複数のReplicatプロセスが同じレコードをターゲットに挿入しようとすることを防ぐために、Replicatに対して指定されます。この手順の結果、ダミー表へのINSERTトランザクションの完了後に、データ・ストリームの同じポイントですべてのプロセスが停止します。

プロセスの停止後に、すべてのTABLE文を1つのプライマリExtractグループに移動します。同じTABLE文を、保持していたExtractグループの証跡を読み取るデータ・ポンプに移動します。すべてのMAP文を、保持されたデータ・ポンプに関連付けられているリモート証跡を読み取る新規の調整Extractグループに移動します。すべてのMAP文が1つのパラメータ・ファイルにまとめられたら、それらを編集して、調整済Replicatがサポートされるようにスレッドの指定を追加します。(事前に行っておくことも可能です。)その後、Replicatグループを削除し、同じ名前を使用して調整モードで追加しなおします。

20.11.2 調整済Replicatへの切替えの実行

注意:

この手順で指示されるまで、Replicatグループを作成しないでください。

1. すべてのExtractグループ、データ・ポンプおよびReplicatグループの現在のパラメータ・ファイルをバックアップします。これらは編集されます。

2. Oracle GoldenGateディレクトリの外に、作業ディレクトリを作成します。このディレクトリを使用して、新しいバージョンのパラメータ・ファイルを作成およびステージングします。必要な場合は、ソース・システムとターゲット・システムに作業ディレクトリを作成します。

3. 作業ディレクトリで、調整済Replicatのパラメータ・ファイルを作成します。すべてのReplicatグループのアクティブなパラメータ・ファイルから、このパラメータ・ファイルにMAPパラメータをコピーし、スレッドの指定と、必要な調整済Replicat構成をサポートするその他のパラメータを追加します。

4. 複数のプライマリExtractグループを使用している場合、1つのグループを選択して保持し、次にそれの現在のパラメータ・ファイルのコピーを作業ディレクトリに保存します。

5. すべてのTABLE文を、他のExtractグループから、保持しているプライマリExtractの新規パラメータ・ファイルにコピーします。

6. 作業ディレクトリで、リンクされているデータ・ポンプのパラメータ・ファイルのコピーを、保持しているプライマリExtractに保存します。

7. すべてのTABLE文を、他のデータ・ポンプから、保持されているデータ・ポンプのコピーされたパラメータ・ファイルにコピーします。

8. ソース・データベースに、単純なINSERT文を実行できる単純なダミー表を作成します。この手順では、schema.eventという名前を使用します。

9. 構成パラメータを追加する必要をなくすため、ターゲット・システムに同じ表を作成します。

10. すべてのプライマリおよびデータ・ポンプのExtractグループのアクティブなパラメータ・ファイル(コピーされたものではない)を編集し、次のEVENTACTIONSパラメータをそれぞれに追加します。

TABLE schema.event, EVENTACTIONS(STOP);

11. すべてのReplicatグループのアクティブなパラメータ・ファイル(コピーは不可)を編集して、それぞれに次のEVENTACTIONSパラメータを追加します。

MAP schema.event, TARGET schema.event, EVENTACTIONS(IGNORE, STOP);

12. 次の順序で、Oracle GoldenGateプロセスを正常に停止します。

- すべてのReplicatプロセスを停止します。

- すべてのデータ・ポンプを停止します。

- すべてのExtractプロセスを停止します。

13. EVENTACTIONSパラメータが有効になるように、次の順序でOracle GoldenGateプロセスを再起動します。

- すべてのExtractプロセスを起動します。

- すべてのデータ・ポンプを起動します。

- すべてのReplicatプロセスを起動します。

14. ソース・システムで、INSERT文が1つ含まれるschema.event表にトランザクションを発行します。必ずトランザクションをコミットしてください。

15. GGSCIで、コマンドによってすべてのプロセスがSTOPPEDと表示されるまで、ソース・システムのすべてのプライマリExtractプロセスおよびデータ・ポンプ・プロセスにSTATUSコマンドを発行し、同じコマンドをターゲット・システムのすべてのReplicatプロセスに発行します。

STATUS EXTRACT *
STATUS REPLICAT *

16. 保持しているプライマリExtractおよびデータ・ポンプのアクティブなパラメータ・ファイルを、作業ディレクトリの新しいパラメータ・ファイルと置き換えます。

17. 不要なExtractおよびデータ・ポンプ・グループと、そのパラメータ・ファイルを削除します。

18. DBLOGINコマンドを使用して、ターゲット・データベースにログインします。

19. すべてのReplicatグループおよびそれらのアクティブなパラメータ・ファイルを削除します。

20. 新しい調整済Replicatパラメータ・ファイルを、作業ディレクトリからOracle GoldenGateディレクトリにコピーするか移動します。

21. GGSCIで、データ・ポンプにINFO EXTRACTコマンドを発行し、出力(リモート)証跡での書込みチェックポイントの位置をメモします。

INFO EXTRACT pump, DETAIL

22. 次のパラメータを使用して、新しい調整済Replicatグループを追加します。

ADD REPLICAT group, EXTTRAIL trail, EXTSEQNO sequence_number, EXTRBA rba, COORDINATED MAXTHREADS number

説明:

- groupは、調整済Replicatグループの名前です。この名前は、このグループ用に作成された新しいパラメータ・ファイルの名前と一致する必要があります。

- EXTTRAIL trailは、データ・ポンプの書込み先の証跡の名前です。

- EXTSEQNO sequence_numberは、データ・ポンプに発行したINFO EXTRACTから返された書込みチェックポイントに表示されている証跡の順序番号です。

- EXTRBA rbaは、INFO EXTRACTから返された書込みチェックポイントに表示されている証跡の相対バイト・アドレスです。これらを参照してReplicatの位置が設定され、証跡の現在の位置で処理が再開されます。

- MAXTHREADSの数字は、このグループで許可されている最大スレッド数を指定します。パラメータ・ファイルに指定されているスレッド数に照らし合せて、適切な値にする必要があります。

23. プライマリExtractグループを起動します。

24. データ・ポンプ・グループを起動します。

25. 調整済Replicatグループを起動します。

20.12 調整Replicat構成の管理

この項では、スレッドの調整および新しいスレッドまたは異なるスレッド間でのワークロードの再パーティション化を行う手順について説明します。MAP文のTHREAD句またはTHREADRANGE句のパーティション指定に変更を行う前に、STOP REPLICATコマンドを使用して、調整Replicatを正常に停止する必要があります。正常に停止すると、指定されたポイントの証跡内の異なる場所にあるすべてのスレッドが、操作をすべて終了し、共通の証跡の場所に到達していることが保証されます。

起動時に、最後に行われた停止が正常ではなく、MAP文のパーティション化が異なるスレッド数を含めるよう変更されていた(スレッドが追加または削除されていた)ことが検出される場合、Replicatはエラーを発行して異常終了します。ただし、パラメータ・ファイル内で同じスレッドが保持されていても、異なるMAP文で単純な再配置が行われた場合、Replicatは警告を発行し、異常終了はしません。この場合、前回の実行からの、スレッドからワークロードへの割当ての継続性を保証する方法がないため、レコードの欠落や重複が発生することがあります。

次に、この状況の例を示します。

元のパーティション化スキームは次のとおりです。

MAP source, target, THREADRANGE(1-5);
MAP source1, target1, THREADRANGE(6-10);

元のスキームを次のように再パーティション化すると、警告のみが発生します。

MAP source, target, THREADRANGE(1-4);
MAP source1, target1, THREADRANGE(5-10);

この項では、Replicatが正常に停止してから再パーティション化を実行する手順、および異常停止してから再パーティション化を実行する際にReplicatの継続性のリカバリを試行する手順について説明します。

調整モードでは、Replicatグループに対して次のタスクを実行できます。

ワークロードの計画済の再パーティション化の実行

計画外の再パーティション化後のReplicatのリカバリ

異常停止後のスレッドの同期

20.12.1 ワークロードの計画済の再パーティション化の実行

計画済の再パーティション化とは、Replicatが正常に停止できた後で、更新されたスレッドのパーティション化を含む新しいパラメータ・ファイルを使用してReplicatを再起動する場合です。正常な停止によって、すべてのスレッドが、証跡内の共通のチェックポイントの位置に到達することができます。その時点で、次の実行での新しいパーティション化スキームを適用できます。この手順でReplicatが正常に停止しなかった場合(適用エラーが発生した場合など)、異常停止後のスレッドの同期の手順を使用して、スレッドを再同期してから再パーティション化を行ってください。

1. GGSCIを実行します。

2. Replicatを停止します。

STOP REPLICAT group

3. パラメータ・ファイルを編集のために開きます。

EDIT PARAMS group

4. MAP文のTHREADまたはTHREADRANGE指定に、必要な変更を行います。

5. パラメータ・ファイルを保存して閉じます。

6. Replicatを起動します。

START REPLICAT group

20.12.2 計画外の再パーティション化後のReplicatのリカバリ

計画外の再パーティション化とは、Replicatが正常に停止できなかった後で、更新されたスレッドのパーティション化を含む新しいパラメータ・ファイルを使用してReplicatを再起動する場合です。このシナリオでは、一部またはすべての古いスレッドが、操作を終了できず、共通のチェックポイントに到達できていません。再起動時に、調整スレッドは古いパーティション化スキームを適用しようとするため、Replicatはエラーで異常終了します。次のいずれかの方法で、調整Replicatグループをこの状況からリカバリできます。

- 自動保存されたパラメータ・ファイルのコピーを使用します。

- HANDLECOLLISIONSを使用して、低基準値から再処理します。

20.12.2.1 HANDLECOLLISIONSを使用した低基準値からの再処理

この手順では、すべてのスレッドを低基準値の位置に再配置します。これは、すべてのスレッドで実行された最も古いチェックポイントの位置です。言い換えると、低基準値の位置は、異常停止する前に、最も低速なスレッドによって処理された最後のレコードです。Replicatを起動すると、スレッドは、Replicatの停止前に処理していた操作を再処理し、HANDLECOLLISIONSパラメータは、高速なスレッドが異常停止前に適用した操作を再処理する際に発生した重複レコードおよび欠落レコードのエラーに対処します。

1. HANDLECOLLISIONSパラメータをReplicatパラメータ・ファイルに追加します。THREADSオプションを使用する必要はありません。

2. Replicatグループ全体(調整スレッド)に対してINFO REPLICATコマンドを発行します。チェックポイントのRBAを記録します。これが低基準値の値です。この出力では、Group Name列の下にアクティブなスレッドのIDも表示されます。これらも同様に記録します。

INFO REPLICAT group

GGSCI (slc03jgo) 3> info ra detailREPLICAT   RA       Last Started 2013-05-01 14:15   Status ABENDEDCOORDINATED          Coordinator                      MAXTHREADS 15Checkpoint Lag       00:00:00 (updated 00:00:07 ago)Process ID           11445Log Read Checkpoint  File ./dirdat/withMaxTransOp/bg000001                     2013-05-02 07:49:45.975662  RBA 44704Lowest Log BSN value: (requires database login)Active Threads: ID  Group Name PID   Status   Lag at Chkpt  Time Since Chkpt1   RA001     11454 ABENDED  00:00:00      00:00:01    2   RA002     11455 ABENDED  00:00:00      00:00:04    3   RA003     11456 ABENDED  00:00:00      00:00:01    5   RA005     11457 ABENDED  00:00:00      00:00:02    6   RA006     11458 ABENDED  00:00:00      00:00:04    7   RA007     11459 ABENDED  00:00:00      00:00:04

3. 各処理スレッドIDに対してINFO REPLICATコマンドを発行し、各スレッドのRBAの位置を記録します。最も高いRBAを記録します。これがReplicatグループの高基準値です。

INFO REPLICAT threadID

info ra002
REPLICAT   RA002    Last Started 2013-05-01 14:15   Status ABENDEDCOORDINATED          Replicat Thread                  Thread 2Checkpoint Lag       00:00:00 (updated 00:00:06 ago)Process ID           11455
Log Read Checkpoint  File ./dirdat/withMaxTransOp/bg000001                     2013-05-02 07:49:15.837271  RBA 45603

4. 調整スレッド(スレッドIDなしでReplicat全体)に対してALTER REPLICATコマンドを発行し、記録した低基準値RBAに位置指定します。

ALTER REPLICAT group EXTRBA low_watermark_rba

5. Replicatを起動します。

START REPLICAT group

6. 記録した高基準値より高いRBAが表示されるまで、基本のINFO REPLICATコマンドを発行します。HANDLECOLLISIONSは、以前に適用されたトランザクションにより発生するコリジョンに対処します。

INFO REPLICAT group

7. Replicatを停止します。

STOP REPLICAT group

8. HANDLECOLLISIONSパラメータを削除またコメントアウトします。

9. Replicatを起動します。

START REPLICAT group

20.12.2.2 自動保存されたパラメータ・ファイルの使用

Replicatが正常に停止する前にパラメータ・ファイルが編集されるたびに、元のパラメータ・ファイルのコピーが保存されます。このパラメータ・ファイルに戻して、すべてのスレッドが最新のチェックポイントの位置にあったスレッドに対応するように、スレッドを再同期できます。スレッドを同期すると、新しいパラメータ・ファイルに切り替えてから、Replicatを起動できます。

1. 新しいパラメータ・ファイルを別の名前に保存してから、保存されている元のパラメータ・ファイルを正しい名前(グループ名と同じ)に変更します。保存されたパラメータ・ファイルは、接尾辞が.backupで、Oracle GoldenGateのインストール・ディレクトリのdirprmサブディレクトリに格納されます。

2. 次のコマンドを発行して、Replicatスレッドを最大のチェックポイントの位置に同期します。このコマンドによって、Replicatが自動的に起動され、スレッドが最大のチェックポイントの位置に到達するまでスレッドが実行されます。

SYNCHRONIZE REPLICAT group

3. STATUS REPLICATコマンドを、Replicatが正常に停止したことが表示されるまで発行します。

STATUS REPLICAT group

4. 元のパラメータ・ファイルを別の名前に保存してから、新しいパラメータ・ファイルをグループ名に変更します。

5. Replicatを起動します。

START REPLICAT group

20.12.3 異常停止後のスレッドの同期

Replicatグループが異常停止した場合、すべてのスレッドが証跡内の共通のチェックポイントの位置に到達するわけではありません。異常停止が発生するのは、STOP REPLICATを!オプションとともに発行した場合、KILL REPLICATコマンドを発行した場合、またはReplicat、データベース、その他のローカル・プロセスに関連する一時的なエラーが発生した場合です。異常停止後の証跡内の同じ位置にスレッドをリストアし、正しいチェックポイントの位置からReplicatを再起動できます。

この手順では、リストアの位置は高基準値です。これは、すべてのスレッドで実行された最新のチェックポイントの位置(異常停止する前に、最も高速なスレッドによって処理された最後のレコード)です。Replicatを起動する前に、(異なるスレッドや新しいスレッドの間でワークロードを再パーティション化するためなどに)パラメータ・ファイルに変更を行うことができます。スレッドは同期状態から起動できるため、再パーティション化は、Replicatの起動後に切れ目なく有効になります。

1. GGSCIを実行します。

2. Replicatスレッドを最大のチェックポイントの位置に同期します。Replicatは同期を実行してから停止します。

SYNCHRONIZE REPLICAT group

3. (オプション) 異なるスレッドや新しいスレッドの間でワークロードを再パーティション化するには、パラメータ・ファイルを編集のために開き、MAP文のTHREADまたはTHREADRANGE指定に必要な変更を行います。

EDIT PARAMS group

4. パラメータ・ファイルを保存して閉じます。

5. Replicatを起動します。

START REPLICAT group

20.13 システム障害または破損の後のプライマリExtractの再起動

この手順では、Extractチェックポイント・ファイル、証跡、またはその両方が破損したり、Extractの起動を妨げたり、特定の状況(ファイル・システムの破損またはシステム障害など)からOracle GoldenGateをリカバリできます。これにより、システムのリストア後に、プライマリExtractのトランザクション・ログに安全な開始位置を確立できます。また、証跡内の正しいExtract書込み位置から読取りを行い、Replicatがすでにターゲットに適用したトランザクションをフィルタで除外するために、ダウンストリーム・データ・ポンプおよびReplicatを再配置する方法が示されます。

20.13.1 この手順の詳細

Extractは、ログ開始順序番号またはLOGBSNを証跡ファイルに渡します。BSNは、Extractメモリーで保持される最も古い未コミット・トランザクションを識別するネイティブなデータベース順序番号です。たとえば、OracleインストールでのBSNは、Oracleシステム変更番号(SCN)です。各証跡ファイルには、その証跡ファイルのすべてのトランザクションの最も低いLOGBSNの値が含まれています。LOGBSNの値がわかると、Extractを正しい読取り位置で再配置して、適切なトランザクションが証跡に再生成され、Replicatに伝播されることを確認できます。

注意:

Oracle RAC環境では、すべてのスレッドの最も低いSCNがReplicatに送信されます。すでにReplicatでコミットされているトランザクションは、起動時に重複として処理されます。ただし、特定のしきい値を過ぎてアイドル状態になっているスレッドは、Extractが再起動時にログ・ストリーム内をあまりにも後ろに戻って読み取る必要をなくすために、BSN値用とはみなされません。

LOGBSNを計算する際には、制限リカバリ・チェックポイントは考慮されません。Extractチェックポイント・ファイルに影響を及ぼした障害は、永続化された制限リカバリ・データ・ファイルおよび制限リカバリ・チェックポイント情報の損失も含まれます。

20.13.2 リカバリの実行

示された順序で次の手順に従って、Oracle GoldenGateプロセスをリカバリします。

1. ターゲット・システムのGGSCIで、DBLOGINコマンドを発行します。

DBLOGIN {USERID Replicat_user | USERIDALIAS alias_of_Replicat_user}

2. ターゲットで、INFO REPLICATコマンドをDETAILオプションとともに発行して、LOGBSNの値を取得します。

INFO REPLICAT group, DETAIL

BSNは、次のような行として出力に含まれます。

Current Log BSN value: 1151679

3. (クラシック・キャプチャ・モードのみ。統合キャプチャ・モードを使用している場合はスキップします。)ソース・データベースを問い合せて、前の手順で特定したLOGBSNの値を含むトランザクション・ログ・ファイルの順序番号を探します。この例では、LOGBSNの値が1855798であると仮定し、LOGBSNの値を含むトランザクション・ログの順序番号が163であることを示しています。

SQL> select name, thread#, sequence# from v$archived_log
where 1855798 between first_change# and next_change#;

NAME                                  THREAD#    SEQUENCE#
------------------------------------- ---------- ----------/oracle/dbs/arch1_163_800262442.dbf   1          163

4. GGSCIで次のコマンドを発行して、LOGBSNの開始位置にプライマリExtractを再配置します。

- (クラシック・キャプチャ・モード)

ALTER EXTRACT group EXTSEQNO 163
ALTER EXTRACT group EXTRBA 0
ALTER EXTRACT group ETROLLOVER

- (統合キャプチャ・モード)

ALTER EXTRACT group SCN 1151679
ALTER EXTRACT group ETROLLOVER

注意:

統合モードの場合、Extractがトランザクション・ストリーム内をどの程度戻ることができるかについて制限があります。必要なSCNが使用できなくなっている場合、ALTER EXTRACTコマンドは失敗します。

5. GGSCIで次のコマンドをプライマリExtractに発行して、Extractの書込みチェックポイントの新しい順序番号を表示します。このコマンドでは、Extractが新規データの書込みを開始する証跡およびRBAが表示されます。ロールオーバーが発行されたため、この例のファイル番号7では、開始ポイントは、新規証跡ファイルの最初(RBA 0)です。

INFO EXTRACT group SHOWCH
Sequence #: 7
RBA: 0

6. GGSCIで次のコマンドを発行して、ダウンストリーム・データ・ポンプを再配置し、新規出力証跡ファイルを開始します。

ALTER EXTRACT pump EXTSEQNO 7
ALTER EXTRACT pump EXTRBA 0
ALTER EXTRACT pump ETROLLOVER

7. GGSCIで次のコマンドをデータ・ポンプExtractに発行して、データ・ポンプ書込みチェックポイントの新しい順序番号(この例では証跡番号9)を表示します。

INFO EXTRACT pump SHOWCH
Sequence #: 9
RBA: 0

8. データ・ポンプの新しい書込みチェックポイントで証跡の読取りを開始するように、Replicatを再配置します。

ALTER REPLICAT group EXTSEQNO 9
ALTER REPLICAT group EXTRBA 0

9. プライマリExtractおよびデータ・ポンプを起動します。

START EXTRACT group
START REPLICAT group

10. GGSCIで次のコマンドを発行して、Replicatを起動します。Replicatが統合モードで動作している場合(Oracleターゲットのみ)、FILTERDUPTRANSACTIONSオプションは不要です。統合Replicatは、重複したトランザクションを透過的に処理します。

START REPLICAT group[, FILTERDUPTRANSACTIONS]

注意:

LOGBSNは、トランザクションを再処理するのに間に合うようにExtractを再設定するために必要な情報を提供します。Extractは、Replicatによってすでに適用された少量のデータを再生成する可能性があるため、Replicatによるなんらかのフィルタリングが必要です。FILTERDUPTRANSACTIONSは、実行の最初に重複を検出およびフィルタリングするようにReplicatに指示します。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

- 逆の順序で処理できるように、1つの抽出ファイル、一連の抽出ファイルまたは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では、認証情報を指定します。

データベース接続情報を指定します。詳細は、「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-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では、認証情報を指定します。

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

{SOURCEDEFS full_pathname} |
ASSUMETARGETDEFS

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

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

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

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

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

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

例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-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を再度実行します。

A サポートされるキャラクタ・セット

この付録では、ソースからターゲットへのデータの変換時にOracle GoldenGateがサポートするキャラクタ・セットをリストします。

キャラクタ・セットを指定する必要がある場合、実際のキャラクタ・セット名ではなく、記載されている識別子をOracle GoldenGateのパラメータまたはコマンドに使用してください。現在Oracle GoldenGateには、データベース固有のキャラクタ・セットを指定する機能は用意されていません。

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

- サポートされるキャラクタ・セット - Oracle

- サポートされるキャラクタ・セット - Oracle以外

A.1 サポートされるキャラクタ・セット - Oracle

表A-1 サポートされるOracleのキャラクタ・セット

パラメータ・ファイルおよびコマンドで使用する識別子

キャラクタ・セット

ar8ados710t

アラビア語MS-DOS 710 8ビット・ラテン語/アラビア語

ar8ados710

アラビア語MS-DOS 710サーバー8ビット・ラテン語/アラビア語

ar8ados720t

アラビア語MS-DOS 720 8ビット・ラテン語/アラビア語

ar8ados720

アラビア語MS-DOS 720サーバー8ビット・ラテン語/アラビア語

ar8aptec715t

APTEC 715 8ビット・ラテン語/アラビア語

ar8aptec715

APTEC 715サーバー8ビット・ラテン語/アラビア語

ar8arabicmacs

Macサーバー8ビット・ラテン語/アラビア語

ar8arabicmact

Mac 8ビット・ラテン語/アラビア語

ar8arabicmac

Macクライアント8ビット・ラテン語/アラビア語

ar8asmo708plus

ASMO 708 Plus 8ビット・ラテン語/アラビア語

ar8asmo8x

ASMO拡張708 8ビット・ラテン語/アラビア語

ar8ebcdic420s

EBCDICコード・ページ420サーバー8ビット・ラテン語/アラビア語

ar8ebcdicx

EBCDIC XBASICサーバー8ビット・ラテン語/アラビア語

ar8hparabic8t

HP 8ビット・ラテン語/アラビア語

ar8iso8859p6

ISO 8859-6ラテン語/アラビア語

ar8mswin1256

MS Windowsコード・ページ1256 8ビット・ラテン語/アラビア語

ar8mussad768t

Mussa'd Alarabi/2 768 8ビット・ラテン語/アラビア語

ar8mussad768

Mussa'd Alarabi/2 768サーバー8ビット・ラテン語/アラビア語

ar8nafitha711t

Nafitha International 711サーバー8ビット・ラテン語/アラビア語

ar8nafitha711

Nafitha拡張711サーバー8ビット・ラテン語/アラビア語

ar8nafitha721t

Nafitha International 721 8ビット・ラテン語/アラビア語

ar8nafitha721

Nafitha International 721サーバー8ビット・ラテン語/アラビア語

ar8sakhr706

SAKHR 706サーバー8ビット・ラテン語/アラビア語

ar8sakhr707t

SAKHR 707 8ビット・ラテン語/アラビア語

ar8sakhr707

SAKHR 707サーバー8ビット・ラテン語/アラビア語

ar8xbasic

XBASIC 8ビット・ラテン語/アラビア語

az8iso8859p9e

ISO 8859-9アゼルバイジャン語

bg8mswin

MS Windows 8ビット・ブルガリア語キリル文字

bg8pc437s

IBM-PCコード・ページ437 8ビット(ブルガリア語の変化形)

blt8cp921

ラトビア語標準LVS8-92(1) Windows/Unix 8ビット・バルト語

blt8ebcdic1112s

EBCDICコード・ページ1112 8ビット・サーバー・バルト語マルチリンガル

blt8ebcdic1112

EBCDICコード・ページ1112 8ビット・バルト語マルチリンガル

blt8iso8859p13

ISO 8859-13バルト語

blt8mswin1257

MS Windowsコード・ページ1257 8ビット・バルト語

blt8pc775

IBM-PCコード・ページ775 8ビット・バルト語

bn8bscii

バングラデシュ国内規格コード8ビットBSCII

cdn8pc863

IBM-PCコード・ページ863 8ビット・カナダ系フランス語

ce8bs2000

Siemens EBCDIC.DF.04-2 8ビット中央ヨーロッパ語

cel8iso8859p14

ISO 8859-13ケルト系言語

ch7dec

DEC VT100 7ビット・スイス語(ドイツ語/フランス語)

cl8bs2000

Siemens EBCDIC.EHC.LC 8ビット・ラテン語/キリル文字-1

cl8ebcdic1025c

EBCDICコード・ページ1025クライアント8ビット・キリル文字

cl8ebcdic1025r

EBCDICコード・ページ1025サーバー8ビット・キリル文字

cl8ebcdic1025s

EBCDICコード・ページ1025サーバー8ビット・キリル文字

cl8ebcdic1025

EBCDICコード・ページ1025 8ビット・キリル文字

cl8ebcdic1025x

EBCDICコード・ページ1025 (修正版) 8ビット・キリル文字

cl8ebcdic1158r

EBCDICコード・ページ1158サーバー8ビット・キリル文字

cl8ebcdic1158

EBCDICコード・ページ1158 8ビット・キリル文字

cl8iso8859p5

ISO 8859-5ラテン語/キリル文字

cl8isoir111

SOIR111キリル文字

cl8koi8r

RELCOMインターネット標準8ビット・ラテン語/キリル文字

cl8koi8u

KOI8ウクライナ語キリル文字

cl8maccyrillics

Macサーバー8ビット・ラテン語/キリル文字

cl8maccyrillic

Macクライアント8ビット・ラテン語/キリル文字

cl8mswin1251

MS Windowsコード・ページ1251 8ビット・ラテン語/キリル文字

d7dec

DEC VT100 7ビット・ドイツ語

d7siemens9780x

Siemens 97801/97808 7ビット・ドイツ語

d8bs2000

Siemens 9750-62 EBCDIC 8ビット・ドイツ語

d8ebcdic1141

EBCDICコード・ページ1141 8ビット・ドイツ語(オーストリア)

d8ebcdic273

EBCDICコード・ページ273/1 8ビット・ドイツ語(オーストリア)

dk7siemens9780x

Siemens 97801/97808 7ビット・デンマーク語

dk8bs2000

Siemens 9750-62 EBCDIC 8ビット・デンマーク語

dk8ebcdic1142

EBCDICコード・ページ1142 8ビット・デンマーク語

dk8ebcdic277

EBCDICコード・ページ277/1 8ビット・デンマーク語

e7dec

DEC VT100 7ビット・スペイン語

e7siemens9780x

Siemens 97801/97808 7ビット・スペイン語

e8bs2000

Siemens 9750-62 EBCDIC 8ビット・スペイン語

ee8bs2000

Siemens EBCDIC.EHC.L2 8ビット東ヨーロッパ語

ee8ebcdic870c

EBCDICコード・ページ870クライアント8ビット東ヨーロッパ語

ee8ebcdic870s

EBCDICコード・ページ870サーバー8ビット東ヨーロッパ語

ee8ebcdic870

EBCDICコード・ページ870 8ビット東ヨーロッパ語

ee8iso8859p2

ISO 8859-2東ヨーロッパ語

ee8macces

Macサーバー8ビット中央ヨーロッパ語

ee8macce

Macクライアント8ビット中央ヨーロッパ語

ee8maccroatians

Macサーバー8ビット・クロアチア語

ee8maccroatian

Macクライアント8ビット・クロアチア語

ee8mswin1250

MS Windowsコード・ページ1250 8ビット東ヨーロッパ語

ee8pc852

IBM-PCコード・ページ852 8ビット東ヨーロッパ語

eec8euroasci

EEC Targon 35 ASCI西ヨーロッパ語/ギリシャ語

eec8europa3

EEC EUROPA3 8ビット西ヨーロッパ語/ギリシャ語

el8dec

DEC 8ビット・ラテン語/ギリシャ語

el8ebcdic423r

RDBMSサーバー側用IBM EBCDICコード・ページ423

el8ebcdic875r

EBCDICコード・ページ875サーバー8ビット・ギリシャ語

el8ebcdic875s

EBCDICコード・ページ875サーバー8ビット・ギリシャ語

el8ebcdic875

EBCDICコード・ページ875 8ビット・ギリシャ語

el8gcos7

Bull EBCDIC GCOS7 8ビット・ギリシャ語

el8iso8859p7

ISO 8859-7ラテン語/ギリシャ語

el8macgreeks

Macサーバー8ビット・ギリシャ語

el8macgreek

Macクライアント8ビット・ギリシャ語

el8mswin1253

MS Windowsコード・ページ1253 8ビット・ラテン語/ギリシャ語

el8pc437s

IBM-PCコード・ページ437 8ビット(ギリシャ語の変化形)

el8pc737

IBM-PCコード・ページ737 8ビット・ギリシャ語/ラテン語

el8pc851

IBM-PCコード・ページ851 8ビット・ギリシャ語/ラテン語

el8pc869

IBM-PCコード・ページ869 8ビット・ギリシャ語/ラテン語

et8mswin923

MS Windowsコード・ページ923 8ビット・エストニア語

f7dec

DEC VT100 7ビット・フランス語

f7siemens9780x

Siemens 97801/97808 7ビット・フランス語

f8bs2000

Siemens 9750-62 EBCDIC 8ビット・フランス語

f8ebcdic1147

EBCDICコード・ページ1147 8ビット・フランス語

f8ebcdic297

EBCDICコード・ページ297 8ビット・フランス語

hu8abmod

ハンガリー語8ビット特殊AB変化形

hu8cwi2

ハンガリー語8ビットCWI-2

i7dec

DEC VT100 7ビット・イタリア語

i7siemens9780x

Siemens 97801/97808 7ビット・イタリア語

i8ebcdic1144

EBCDICコード・ページ1144 8ビット・イタリア語

i8ebcdic280

EBCDICコード・ページ280/1 8ビット・イタリア語

in8iscii

複数スクリプト・インド標準8ビット・ラテン語/諸インド語

is8macicelandics

Macサーバー8ビット・アイスランド語

is8macicelandic

Macクライアント8ビット・アイスランド語

is8pc861

IBM-PCコード・ページ861 8ビット・アイスランド語

iw7is960

イスラエル標準960 7ビット・ラテン語/ヘブライ語

iw8ebcdic1086

EBCDICコード・ページ1086 8ビット・ヘブライ語

iw8ebcdic424s

EBCDICコード・ページ424サーバー8ビット・ラテン語/ヘブライ語

iw8ebcdic424

EBCDICコード・ページ424 8ビット・ラテン語/ヘブライ語

iw8iso8859p8

ISO 8859-8ラテン語/ヘブライ語

iw8machebrews

Macサーバー8ビット・ヘブライ語

iw8machebrew

Macクライアント8ビット・ヘブライ語

iw8mswin1255

MS Windowsコード・ページ1255 8ビット・ラテン語/ヘブライ語

iw8pc1507

IBM-PCコード・ページ1507/862 8ビット・ラテン語/ヘブライ語

ja16dbcs

IBM EBCDIC 16ビット日本語

ja16ebcdic930

IBM DBCSコード・ページ290 16ビット日本語

ja16euctilde

波形のダッシュとチルドがUnicodeとの間でマップされる方法を除き、ja16eucと同じ

ja16euc

EUC 24ビット日本語

ja16eucyen

EUC 24ビット日本語(バックスラッシュは日本語の円記号にマップされます)

ja16macsjis

Macクライアント・シフトJIS 16ビット日本語

ja16sjistilde

波形のダッシュとチルドがUnicodeとの間でマップされる方法を除き、ja16sjisと同じ

ja16sjis

シフトJIS 16ビット日本語

ja16sjisyen

シフトJIS 16ビット日本語(バックスラッシュは日本語の円記号にマップされます)

ja16vms

JVMS 16ビット日本語

ko16dbcs

IBM EBCDIC 16ビット韓国語

ko16ksc5601

KSC5601 16ビット韓国語

ko16ksccs

KSCCS 16ビット韓国語

ko16mswin949

MS Windowsコード・ページ949韓国語

la8iso6937

ISO 6937 8ビット・テキスト通信用コード・キャラクタ・セット

la8passport

ドイツ政府プリンタ8ビット全ヨーロッパ・ラテン語

lt8mswin921

MS Windowsコード・ページ921 8ビット・リトアニア語

lt8pc772

IBM-PCコード・ページ772 8ビット・リトアニア語(ラテン語/キリル文字)

lt8pc774

IBM-PCコード・ページ774 8ビット・リトアニア語(ラテン語)

lv8pc1117

IBM-PCコード・ページ1117 8ビット・ラトビア語

lv8pc8lr

ラトビア語バージョンIBM-PCコード・ページ866 8ビット・ラテン語/キリル文字

lv8rst104090

IBM-PC代替コード・ページ8ビット・ラトビア語(ラテン語/キリル文字)

n7siemens9780x

Siemens 97801/97808 7ビット・ノルウェー語

n8pc865

IBM-PCコード・ページ865 8ビット・ノルウェー語

ndk7dec

DEC VT100 7ビット・ノルウェー語/デンマーク語

ne8iso8859p10

ISO 8859-10北ヨーロッパ語

nee8iso8859p4

ISO 8859-4北ヨーロッパ語および北東ヨーロッパ語

nl7dec

DEC VT100 7ビット・オランダ語

ru8besta

BESTA 8ビット・ラテン語/キリル文字

ru8pc855

IBM-PCコード・ページ855 8ビット・ラテン語/キリル文字

ru8pc866

IBM-PCコード・ページ866 8ビット・ラテン語/キリル文字

s7dec

DEC VT100 7ビット・スウェーデン語

s7siemens9780x

Siemens 97801/97808 7ビット・スウェーデン語

s8bs2000

Siemens 9750-62 EBCDIC 8ビット・スウェーデン語

s8ebcdic1143

EBCDICコード・ページ1143 8ビット・スウェーデン語

s8ebcdic278

EBCDICコード・ページ278/1 8ビット・スウェーデン語

se8iso8859p3

ISO 8859-3南ヨーロッパ語

sf7ascii

ASCII 7ビット・フィンランド語

sf7dec

DEC VT100 7ビット・フィンランド語

th8macthais

Macサーバー8ビット・ラテン語/タイ語

th8macthai

Macクライアント8ビット・ラテン語/タイ語

th8tisascii

タイ工業規格620-2533 - ASCII 8ビット

th8tisebcdics

タイ工業規格620-2533 - EBCDICサーバー8ビット

th8tisebcdic

タイ工業規格620-2533 - EBCDIC 8ビット

timesten8

TimesTenレガシー

tr7dec

DEC VT100 7ビット・トルコ語

tr8dec

DEC 8ビット・トルコ語

tr8ebcdic1026s

EBCDICコード・ページ1026サーバー8ビット・トルコ語

tr8ebcdic1026

EBCDICコード・ページ1026 8ビット・トルコ語

tr8macturkishs

Macサーバー8ビット・トルコ語

tr8macturkish

Macクライアント8ビット・トルコ語

tr8mswin1254

MS Windowsコード・ページ1254 8ビット・トルコ語

tr8pc857

IBM-PCコード・ページ857 8ビット・トルコ語

us7ascii

ASCII 7ビット米語

us8bs2000

Siemens 9750-62 EBCDIC 8ビット米語

us8icl

ICL EBCDIC 8ビット米語

us8pc437

IBM-PCコード・ページ437 8ビット米語

vn8mswin1258

MS Windowsコード・ページ1258 8ビット・ベトナム語

vn8vn3

VN3 8ビット・ベトナム語

we8bs2000e

Siemens EBCDIC.DF.04-F 8ビット西ヨーロッパ語(ユーロ記号)

we8bs2000l5

Siemens EBCDIC.DF.04-9 8ビット西ヨーロッパ語およびトルコ語

we8bs2000

Siemens EBCDIC.DF.04-1 8ビット西ヨーロッパ語

we8dec

DEC 8ビット西ヨーロッパ語

we8dg

DG 8ビット西ヨーロッパ語

we8ebcdic1047e

Latin 1/オープン・システム1047

we8ebcdic1047

EBCDICコード・ページ1047 8ビット西ヨーロッパ語

we8ebcdic1140c

EBCDICコード・ページ1140クライアント8ビット西ヨーロッパ語

we8ebcdic1140

EBCDICコード・ページ1140 8ビット西ヨーロッパ語

we8ebcdic1145

EBCDICコード・ページ1145 8ビット西ヨーロッパ語

we8ebcdic1146

EBCDICコード・ページ1146 8ビット西ヨーロッパ語

we8ebcdic1148c

EBCDICコード・ページ1148クライアント8ビット西ヨーロッパ語

we8ebcdic1148

EBCDICコード・ページ1148 8ビット西ヨーロッパ語

we8ebcdic284

EBCDICコード・ページ284 8ビット中南米/スペイン語

we8ebcdic285

EBCDICコード・ページ285 8ビット西ヨーロッパ語

we8ebcdic37c

EBCDICコード・ページ37 8ビットOracle/c

we8ebcdic37

EBCDICコード・ページ37 8ビット西ヨーロッパ語

we8ebcdic500c

EBCDICコード・ページ500 8ビットOracle/c

we8ebcdic500

EBCDICコード・ページ500 8ビット西ヨーロッパ語

we8ebcdic871

EBCDICコード・ページ871 8ビット・アイスランド語

we8ebcdic924

Latin 9 EBCDIC 924

we8gcos7

Bull EBCDIC GCOS7 8ビット西ヨーロッパ語

we8hp

HP LaserJet 8ビット西ヨーロッパ語

we8icl

ICL EBCDIC 8ビット西ヨーロッパ語

we8iso8859p15

ISO 8859-15西ヨーロッパ語

we8iso8859p1

ISO 8859-1西ヨーロッパ語

we8iso8859p9

ISO 8859-9西ヨーロッパ語およびトルコ語

we8isoicluk

ICL特別バージョンISO8859-1

we8macroman8s

Macサーバー8ビット拡張Roman8西ヨーロッパ語

we8macroman8

Macクライアント8ビット拡張Roman8西ヨーロッパ語

we8mswin1252

MS Windowsコード・ページ1252 8ビット西ヨーロッパ語

we8ncr4970

NCR 4970 8ビット西ヨーロッパ語

we8nextstep

NeXTSTEP PostScript 8ビット西ヨーロッパ語

we8pc850

IBM-PCコード・ページ850 8ビット西ヨーロッパ語

we8pc858

IBM-PCコード・ページ858 8ビット西ヨーロッパ語

we8pc860

IBM-PCコード・ページ860 8ビット西ヨーロッパ語

we8roman8

HP Roman8 8ビット西ヨーロッパ語

yug7ascii

ASCII 7ビット・ユーゴスラビア語

zhs16cgb231280

CGB2312-80 16ビット簡体字中国語

zhs16dbcs

IBM EBCDIC 16ビット簡体字中国語

zhs16gbk

GBK 16ビット簡体字中国語

zhs16maccgb231280

MacクライアントCGB2312-80 16ビット簡体字中国語

zht16big5

BIG5 16ビット繁体字中国語

zht16ccdc

HP CCDC 16ビット繁体字中国語

zht16dbcs

IBM EBCDIC 16ビット繁体字中国語

zht16dbt

台湾課税16ビット繁体字中国語

zht16hkscs31

MS Windowsコード・ページ950香港補足キャラクタ・セットHKSCS-2001付き(Unicodeとの間のキャラクタ・セット変換はUnicode 3.1に基づきます)

zht16hkscs

MS Windowsコード・ページ950香港補足キャラクタ・セットHKSCS-2001付き(Unicodeとの間のキャラクタ・セット変換はUnicode 3.0に基づきます)

zht16mswin950

MS Windowsコード・ページ950繁体字中国語

zht32euc

EUC 32ビット繁体字中国語

zht32sops

SOPS 32ビット繁体字中国語

zht32tris

TRIS 32ビット繁体字中国語

A.2 サポートされるキャラクタ・セット - Oracle以外

パラメータ・ファイルおよびコマンドで使用する識別子

キャラクタ・セット

UTF-8

ISO-10646 UTF-8、サロゲート・ペアは1文字当たり4バイト

UTF-16

ISO-10646 UTF-16

UTF-16BE

UTF-16ビッグ・エンディアン

UTF-16LE

UTF-16リトル・エンディアン

UTF-32

ISO-10646 UTF-32

UTF-32BE

UTF-32ビッグ・エンディアン

UTF-32LE

UTF-32リトル・エンディアン

CESU-8

UTF-8に類似。UCS-2に対応しており、サロゲート・ペアは1文字当たり6バイト

US-ASCII

US-ASCII、ANSI X34-1986

windows-1250

Windows中央ヨーロッパ

windows-1251

Windowsキリル文字

windows-1252

Windows Latin-1

windows-1253

Windowsギリシャ語

windows-1254

Windowsトルコ語

windows-1255

Windowsヘブライ語

windows-1256

Windowsアラビア語

windows-1257

Windowsバルト語

windows-1258

Windowsベトナム語

windows-874

Windowsタイ語

cp437

DOS Latin-1

ibm-720

DOSアラビア語

cp737

DOSギリシャ語

cp775

DOSバルト語

cp850

DOSマルチリンガル

cp851

DOS Greek-1

cp852

DOS Latin-2

cp855

DOSキリル文字

cp856

DOSキリル文字/IBM

cp857

DOSトルコ語

cp858

DOSマルチリンガル(ユーロ記号を含む)

cp860

DOSポルトガル語

cp861

DOSアイスランド語

cp862

DOSヘブライ語

cp863

DOSフランス語

cp864

DOSアラビア語

cp865

DOS北欧

cp866

DOSキリル文字/GOST 19768-87

ibm-867

DOSヘブライ語/IBM

cp868

DOSウルドゥー語

cp869

DOS Greek-2

ISO-8859-1

ISO-8859-1 Latin-1/西ヨーロッパ

ISO-8859-2

ISO-8859-2 Latin-2/東ヨーロッパ

ISO-8859-3

ISO-8859-3 Latin-3/南ヨーロッパ

ISO-8859-4

ISO-8859-4 Latin-4/北ヨーロッパ

ISO-8859-5

ISO-8859-5 Latin/キリル文字

ISO-8859-6

ISO-8859-6 Latin/アラビア語

ISO-8859-7

ISO-8859-7 Latin/ギリシャ語

ISO-8859-8

ISO-8859-8 Latin/ヘブライ語

ISO-8859-9

ISO-8859-9 Latin-5/トルコ語

ISO-8859-10

ISO-8859-10 Latin-6/北欧

ISO-8859-11

ISO-8859-11 Latin/タイ語

ISO-8859-13

ISO-8859-13 Latin-7/バルト語

ISO-8859-14

ISO-8859-14 Latin-8/ケルト語

ISO-8859-15

ISO-8859-15 Latin-9/西ヨーロッパ

IBM037

IBM 037-1/697-1 EBCDIC、ブラジル、カナダ、オランダ、ポルトガル、米国および037/1175繁体字中国語

IBM01140

IBM 1140-1/695-1 EBCDIC、ブラジル、カナダ、オランダ、ポルトガル、米国および1140/1175繁体字中国語

IBM273

IBM 273-1/697-1 EBCDIC、オーストリア、ドイツ

IBM01141

IBM 1141-1/695-1 EBCDIC、オーストリア、ドイツ

IBM277

IBM 277-1/697-1 EBCDIC、デンマーク、ノルウェー

IBM01142

IBM 1142-1/695-1 EBCIDC、デンマーク、ノルウェー

IBM278

IBM 278-1/697-1 EBCDIC、フィンランド、スウェーデン

IBM01143

IBM 1143-1/695-1 EBCDIC、フィンランド、スウェーデン

IBM280

IBM 280-1/697-1 EBCDIC、イタリア

IBM01144

IBM 1144-1/695-1 EBCDIC、イタリア

IBM284

IBM 284-1/697-1 EBCDIC、ラテン・アメリカ、スペイン

IBM01145

IBM 1145-1/695-1 EBCDIC、ラテン・アメリカ、スペイン

IBM285

IBM 285-1/697-1 EBCDIC、英国

IBM01146

IBM 1146-1/695-1 EBCDIC、英国

IBM290

IBM 290 EBCDIC、日本(英数カナ)拡張

IBM297

IBM 297-1/697-1 EBCDIC、フランス

IBM01147

IBM 1147-1/695-1 EBCDIC、フランス

IBM420

IBM 420 EBCDIC、アラビア語圏(2か国語併用)

IBM424

IBM 424/941 EBCDIC、イスラエル(ヘブライ語 - Bulletinコード)

IBM500

IBM 500-1/697-1 EBCDIC、各国間共通

IBM01148

IBM 1148-1/695-1 EBCDIC各国間共通

IBM870

IBM 870/959 EBCDIC、Latin-2マルチリンガル

IBM871

IBM 871-1/697-1 EBCDICアイスランド

IBM918

IBM EBCDICコード・ページ918、アラビア語2

IBM1149

IBM 1149-1/695-1、EBCDICアイスランド

IBM1047

IBM 1047/103 EBCDIC、Latin-1(オープン・システム)

ibm-803

IBM 803 EBCDIC、イスラエル(ヘブライ語 - 旧コード)

IBM875

IBM 875 EBCDIC、ギリシャ

ibm-924

IBM 924-1/1353-1 EBCDIC各国間共通

ibm-1153

IBM 1153/1375 EBCDIC、Latin-2マルチリンガル

ibm-1122

IBM 1122/1037 EBCDIC、エストニア

ibm-1157

IBM 1157/1391 EBCDIC、エストニア

ibm-1112

IBM 1112/1035 EBCDIC、ラトビア、リトアニア

ibm-1156

IBM 1156/1393 EBCDIC、ラトビア、リトアニア

ibm-4899

IBM EBCDICコード・ページ4899、ヘブライ語(ユーロ記号を含む)

ibm-12712

IBM 12712 EBCDIC、ヘブライ語(ユーロ記号を含む最大セット)

ibm-1097

IBM 1097 EBCDIC、ペルシア語

ibm-1018

IBM 1018 EBCDIC、フィンランド、スウェーデン(ISO-7)

ibm-1132

IBM 1132 EBCDIC、ラオス

ibm-1137

IBM EBCDICコード・ページ1137、デバナーガリ

ibm-1025

IBM 1025/1150 EBCDIC、キリル文字

ibm-1154

IBM EBCDICコード・ページ1154、キリル文字(ユーロ記号を含む)

IBM1026

IBM 1026/1152 EBCDIC、Latin-5トルコ

ibm-1155

IBM EBCDICコード・ページ1155、トルコ語(ユーロ記号を含む)

ibm-1123

IBM 1123 EBCDIC、ウクライナ

ibm-1158

IBM EBCDICコード・ページ1158、ウクライナ語(ユーロ記号を含む)

IBM838

IBM 838/1173 EBCDIC、タイ

ibm-1160

IBM EBCDICコード・ページ1160、タイ語(ユーロ記号を含む)

ibm-1130

IBM 1130 EBCDIC、ベトナム

ibm-1164

IBM EBCDICコード・ページ1164、ベトナム語(ユーロ記号を含む)

ibm-4517

IBM EBCDICコード・ページ4517、アラブ・フランス語

ibm-4971

IBM EBCDICコード・ページ4971、ギリシャ

ibm-9067

IBM EBCDICコード・ページ9067、ギリシャ2005

ibm-16804

IBM EBCDICコード・ページ16804、アラビア語

KOI8-R

ロシア語およびキリル文字(KOI8-R)

KOI8-U

ウクライナ語(KOI8-U)

eucTH

EUCタイ語

ibm-1162

Windowsタイ語(ユーロ記号を含む)

DEC-MCS

DECマルチリンガル

hp-roman8

HP Latin-1 Roman8

ibm-901

IBMバルト語ISO-8 CCSID 901

ibm-902

IBMエストニアISO-8(ユーロ記号を含む)CCSID 902

ibm-916

IBM ISO8859-8 CCSID

ibm-922

IBMエストニアISO-8 CCSID 922

ibm-1006

IBMウルドゥー語ISO-8 CCSID 1006

ibm-1098

IBMペルシア語PC CCSID 1098

ibm-1124

ウクライナ語ISO-8 CCSID 1124

ibm-1125

ウクライナ語(ユーロ記号を含まない)CCSID 1125

ibm-1129

IBMベトナム語(ユーロ記号を含まない)CCSID 1129

ibm-1131

IBMベラルーシ語CCSID 1131

ibm-1133

IBMラオ語CCSID 1133

ibm-4909

IBMギリシャ・ラテン語ASCII CCSID 4909

JIS_X201

JIS X201日本語

windows-932

Windows日本語

windows-936

Windows簡体字中国語

ibm-942

IBM Windows日本語

windows-949

Windows韓国語

windows-950

Windows繁体字中国語

eucjis

EUC日本語

EUC-JP

IBM/MS EUC日本語

EUC-CN

EUC簡体字中国語、GBK

EUC-KR

EUC韓国語

EUC-TW

EUC繁体字中国語

ibm-930

IBM 930/5026日本語

ibm-933

IBM 933韓国語

ibm-935

IBM 935簡体字中国語

ibm-937

IBM 937繁体字中国語

ibm-939

IBM 939/5035日本語

ibm-1364

IBM 1364韓国語

ibm-1371

IBM 1371繁体字中国語

ibm-1388

IBM 1388簡体字中国語

ibm-1390

IBM 1390日本語

ibm-1399

IBM 1399日本語

ibm-5123

IBM CCSID 5123日本語

ibm-8482

IBM CCSID 8482日本語

ibm-13218

IBM CCSID 13218日本語

ibm-16684

IBM CCSID 16684日本語

shiftjis

日本語Shift JIS、チルド0x8160をU+301Cにマップ

gb18030

GB-18030

GB2312

GB-2312-1980

GBK

GBK

HZ

HZ GB2312

Ibm-1381

IBM CCSID 1381簡体字中国語

Big5

Big5、繁体字中国語

Big5-HKSCS

Big5、香港拡張

Big5-HKSCS2001

Big5、香港拡張HKSCS-2001

ibm-950

IBM Big5、CCSID 950

ibm-949

CCSID 949韓国語

ibm-949C

IBM CCSID 949韓国語、バックスラッシュを含む

ibm-971

IBM CCSID 971韓国語EUC、KSC5601 1989

x-IBM1363

IBM CCSID 1363、韓国語

B サポートされるロケール

この付録では、Oracle GoldenGateでサポートされているロケールをリストします。ロケールは、大/小文字が区別されないオブジェクト名を比較する際に使用されます。

- af

- af_NA

- af_ZA

- am

- am_ET

- ar

- ar_AE

- ar_BH

- ar_DZ

- ar_EG

- ar_IQ

- ar_JO

- ar_KW

- ar_LB

- ar_LY

- ar_MA

- ar_OM

- ar_QA

- ar_SA

- ar_SD

- ar_SY

- ar_TN

- ar_YE

- as

- as_IN

- az

- az_Cyrl

- az_Cyrl_AZ

- az_Latn

- az_Latn_AZ

- be

- be_BY

- bg

- bg_BG

- bn

- bn_BD

- bn_IN

- ca

- ca_ES

- cs

- cs_CZ

- cy

- cy_GB

- da

- da_DK

- de

- de_AT

- de_BE

- de_CH

- de_DE

- de_LI

- de_LU

- el

- el_CY

- el_GR

- en

- en_AU

- en_BE

- en_BW

- en_BZ

- en_CA

- en_GB

- en_HK

- en_IE

- en_IN

- en_JM

- en_MH

- en_MT

- en_NA

- en_NZ

- en_PH

- en_PK

- en_SG

- en_TT

- en_US

- en_US_POSIX

- en_VI

- en_ZA

- en_ZW

- eo

- es

- es_AR

- es_BO

- es_CL

- es_CO

- es_CR

- es_DO

- es_EC

- es_ES

- es_GT

- es_HN

- es_MX

- es_NI

- es_PA

- es_PE

- es_PR

- es_PY

- es_SV

- es_US

- es_UY

- es_VE

- et

- et_EE

- eu

- eu_ES

- fa

- fa_AF

- fa_IR

- fi

- fi_FI

- fo

- fo_FO

- fr

- fr_BE

- fr_CA

- fr_CH

- fr_FR

- fr_LU

- fr_MC

- ga

- ga_IE

- gl

- gl_ES

- gu

- gu_IN

- gv

- gv_GB

- haw

- haw_US

- he

- he_IL

- hi

- hi_IN

- hr

- hr_HR

- hu

- hu_HU

- hy

- hy_AM

- hy_AM_REVISED

- id

- id_ID

- is

- is_IS

- it

- it_CH

- it_IT

- ja

- ja_JP

- ka

- ka_GE

- kk

- kk_KZ

- kl

- kl_GL

- km

- km_KH

- kn

- kn_IN

- ko

- ko_KR

- kok

- kok_IN

- kw

- kw_GB

- lt

- lt_LT

- lv

- lv_LV

- mk

- mk_MK

- ml

- ml_IN

- mr

- mr_IN

- ms

- ms_BN

- ms_MY

- mt

- mt_MT

- nb

- nb_NO

- nl

- nl_BE

- nl_NL

- nn

- nn_NO

- om

- om_ET

- om_KE

- or

- or_IN

- pa

- pa_Guru

- pa_Guru_IN

- pl

- pl_PL

- ps

- ps_AF

- pt

- pt_BR

- pt_PT

- ro

- ro_RO

- ru

- ru_RU

- ru_UA

- sk

- sk_SK

- sl

- sl_SI

- so

- so_DJ

- so_ET

- so_KE

- so_SO

- sq

- sq_AL

- sr

- sr_Cyrl

- sr_Cyrl_BA

- sr_Cyrl_ME

- sr_Cyrl_RS

- sr_Latn

- sr_Latn_BA

- sr_Latn_ME

- sr_Latn_RS

- sv

- sv_FI

- sv_SE

- sw

- sw_KE

- sw_TZ

- ta

- ta_IN

- te

- te_IN

- th

- th_TH

- ti

- ti_ER

- ti_ET

- tr

- tr_TR

- uk

- uk_UA

- ur

- ur_IN

- ur_PK

- uz

- uz_Arab

- uz_Arab_AF

- uz_Cyrl

- uz_Cyrl_UZ

- uz_Latn

- uz_Latn_UZ

- vi

- vi_VN

- zh

- zh_Hans

- zh_Hans_CN

- zh_Hans_SG

- zh_Hant

- zh_Hant_HK

- zh_Hant_MO

- zh_Hant_TW

C Oracle GoldenGate証跡について

この付録には、トラブルシューティング、サポートの利用、その他の目的で知っておく必要のある、Oracle GoldenGate証跡に関する情報が記載されています。Oracle GoldenGate証跡レコードを表示するには、ログダンプ・ユーティリティを使用してください。

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

- 証跡リカバリ・モード

- 証跡ファイルのヘッダー・レコード

- 証跡のレコード形式

- Oracle GoldenGateレコードの例

- レコード・ヘッダー領域

- レコード・データ領域

- トークン領域

- Oracle GoldenGateの操作タイプ

- Oracle GoldenGate証跡のヘッダー・レコード

C.1 証跡リカバリ・モード

デフォルトでは、Extractは追加モードで動作します。このモードでは、プロセス障害が発生すると証跡にリカバリ・マーカーが書き込まれ、Extractは、すべての古いデータの履歴をリカバリ目的で保持するために、ファイルにリカバリ・データを追加します。

追加モードでは、Extractの初期化によって、起動時に証跡に書き込まれた最後の完全なトランザクションのIDが判別されます。この情報に基づいて、Extractは、そのトランザクションのコミット・レコードがデータソースで見つかると、リカバリを停止します。その後、Extractは、抽出要件を満たす次のコミット済トランザクションから新しいデータ取得を開始し、新しいデータの証跡への追加を始めます。データ・ポンプまたはReplicatは、このリカバリ・ポイントから読取りを再開します。

上書きモードは、Oracle GoldenGateリリース10.0以前のリリースで使用されていたもう1つのExtractリカバリ方法です。これらのリリースでは、Extractは、新規データを追加するかわりに、最後の書込みチェックポイント位置の後にある証跡の既存のトランザクション・データを上書きします。書き込まれる最初のトランザクションは、データソースの最後の読取りチェックポイント位置の後にある、抽出要件を満たす最初のトランザクションです。

ターゲットのOracle GoldenGateのリリースがリリース10より古い場合、Extractは、下位互換性をサポートするために自動的に上書きモードに戻ります。この動作は、RECOVERYOPTIONSパラメータを使用して手動で制御できます。

C.2 証跡ファイルのヘッダー・レコード

Oracle GoldenGateリリース10.0以上では、証跡の各ファイルの先頭部分に、ファイル・ヘッダー・レコードが格納されています。 ファイル・ヘッダーには、証跡ファイル自体に関する情報が含まれます。以前のリリースのOracle GoldenGateには、このヘッダーは含まれません。

Oracle GoldenGateプロセスはすべて独立しており、異なるOracle GoldenGateリリースのプロセスが混在できるため、各証跡ファイルのファイル・ヘッダーにはバージョン・インジケータが含まれています。デフォルトでは、証跡ファイルのバージョンは、そのファイルを作成したプロセスの現行バージョンです。証跡のバージョンを設定する必要がある場合、EXTTRAIL、EXTFILE、RMTTRAILまたはRMTFILEパラメータのFORMATオプションを使用します。

Oracle GoldenGateの異なるプロセス・バージョン間でファイルの上位互換性または下位互換性を保証するため、標準化されたトークン形式でファイル・ヘッダー・フィールドが書き込まれます。プロセスの新規バージョンによって作成される新しいトークンは、古いバージョンでは無視されるため、下位互換性が保持されます。同様に、Oracle GoldenGateの新しいバージョンでは、古いトークンがサポートされます。また、新しいプロセス・バージョンによってあるトークンが非推奨になっても、そのトークンにはデフォルト値が割り当てられるため、古いバージョンも引き続き正しく動作します。ファイル・バージョンを指定するトークンは、COMPATIBILITYです。このトークンは、ログダンプ・ユーティリティで表示することや、@GETENV関数のGGFILEHEADERオプションを使用して取得することができます。

証跡または抽出ファイルのバージョンは、そのファイルを読み取るプロセスのバージョン以下である必要があります。それ以外の場合、プロセスは異常終了します。また、データ・ポンプの出力証跡またはファイルは、Oracle GoldenGateによって強制的に入力証跡またはファイルと同じバージョンに設定されます。再起動時に、Extractは、各ファイルのバージョンがただ1つになるように証跡を1つの新規ファイルにまとめます(ファイルが空ではない場合)。

C.3 証跡のレコード形式

Oracle GoldenGateによって証跡または抽出ファイルに書き込まれる各変更レコードには、ヘッダー領域、データ領域および(状況により)ユーザー・トークン領域が含まれます。レコード・ヘッダーには、トランザクション環境に関する情報が含まれ、データ領域には、抽出された実際のデータ値が含まれます。トークン領域には、Oracle GoldenGateユーザーが列のマッピングおよび変換用に指定した情報が含まれます。

Oracle GoldenGateの証跡ファイルは構造化されていません。Oracle GoldenGateレコードは、Oracle GoldenGateソフトウェアに付属するログダンプ・ユーティリティを使用して表示できます。詳細は、Oracle GoldenGateログダンプ・リファレンスを参照してください。

注意:

Oracle GoldenGateソフトウェアの機能拡張のために、証跡レコードの形式は、このドキュメントに記載されていない変更に応じて修正される可能性があります。現在の構造を表示するには、ログダンプ・ユーティリティを使用してください。

C.4 Oracle GoldenGateレコードの例

次に、ログダンプでの表示どおりにOracle GoldenGateレコードを記載します。最初の部分(フィールドのリスト)はヘッダーで、2番目の部分はデータ領域です。レコードは、Oracle GoldenGateでサポートされるすべてのプラットフォームで次のように表示されます。

図C-1 ログダンプ・ユーティリティで表示されるサンプルの証跡レコード

C.5 レコード・ヘッダー領域

Oracle GoldenGateレコードのヘッダーには、レコードに格納されているデータのメタデータがあり、次の情報が含まれます。

- 挿入、更新、削除などの操作タイプ

- 更新の前または後を示すインジケータ

- トランザクション・グループやコミット・タイムスタンプなどのトランザクション情報

C.5.1 ヘッダー・フィールドの説明

次に、Oracle GoldenGateレコードのヘッダー・フィールドについて説明します。一部のフィールドは特定のプラットフォームにのみ適用されます。

表C-1 Oracle GoldenGateレコードのヘッダー・フィールド

フィールド

説明

Hdr-Ind

この値は常にEである必要があり、レコードがExtractプロセスによって作成されたことを示します。それ以外のすべての値は、無効なデータであることを示します。

UndoFlag

(NonStop) Oracle GoldenGateがTMF監査証跡から中断されたトランザクションを抽出する場合に条件付きで設定されます。通常、UndoFlagは0(ゼロ)に設定されますが、レコードが以前成功した操作を取り消したものである場合、UndoFlagは1に設定されます。制約違反によりディスク・プロセスで行われた取消しは、UNDOとしてマークされません。

RecLength

レコード・バッファの長さ(バイト単位)。

IOType

レコードにより表される操作のタイプ。操作タイプのリストは、表C-2を参照してください。

TransInD

現在のトランザクション内におけるレコードの位置。値は次のとおりです。

0 — トランザクションの最初のレコード

1 — トランザクションの最初と最後以外のレコード

2 — トランザクションの最後のレコード

3 — トランザクションの唯一のレコード

SyskeyLen

(NonStop)ソースがNonStopファイルであり、システム・キーを保持している場合、そのシステム・キーの長さ(4または8バイト)。システム・キーが存在する場合、レコードの最初のSyskeylenバイトがシステム・キーです。それ以外の場合、SyskeyLenは0(ゼロ)です。

AuditRBA

Oracle REDOログ順序番号などのトランザクション・ログ識別子を識別します。

Continued

(WindowsおよびUNIX)レコードが、大きすぎて1つのレコードに収まらないより大きなデータの1セグメントであるかどうかを示します。各セグメントには、LOB、CLOBSおよび複数のVARCHARが格納されます。(UPDATERECORDFORMATパラメータにより)単一レコードの変更前イメージと変更後イメージの両方を含む統一されたレコードは、レコードの最大長を超える可能性があり、セグメントを生成する可能性もあります。

Y — レコードはセグメントです。Oracle GoldenGateにこのデータが別のレコードに続いていることを示します。

N — データは別のセグメントに続いていません。一連のデータの最後の部分であるか、より大きなデータのセグメントではないレコードです。

Partition

このフィールドは、Oracle GoldenGateで内部的に使用されるもので、通常は特定のデータベースにとって意味のある情報ではありません。

WindowsおよびUNIXのレコードの場合、このフィールドの値は常に4(内部形式におけるFieldComp圧縮レコード)です。これらのプラットフォームでは、Partitionという語は、データがデータベース構造内の特定の論理パーティションまたは物理パーティションであることを示しているわけではありません。

NonStopのレコードの場合、このフィールドの値は、レコード・タイプによって異なります。

- BulkIO操作の場合、Partitionは、バルク操作が実行されたソース・パーティションの数を示します。これによって、Oracle GoldenGateは、データが最初に書き込まれたソース・パーティションを判別します。Replicatは、Partitionフィールドを使用してターゲット・パーティションの名前を特定します。レコード・ヘッダーのファイル名は、常にプライマリ・パーティションの名前になります。BulkIOレコードの有効な値は、0から15です。

- 他のバルク操作以外のNonStop操作の場合、値は0または4のいずれかです。4の値は、データがFieldCompレコード形式であることを示します。

BeforeAfter

レコードが更新操作の変更前(B)イメージまたは変更後(A)イメージのどちらであるかを示します。UPDATERECORDFORMATパラメータの結果として変更前イメージと変更後イメージの両方を組み合せるレコードは、変更後イメージとしてマークされます。挿入は常に変更後イメージであり、削除は常に変更前イメージです。

IO Time

ソース・システムのローカル時刻をGMT形式で示したコミット・レコードのタイムスタンプ。あるトランザクションのすべてのレコードは、同じコミット・タイムスタンプを持ちます。IO TimeとAuditRBAの組合せによって、特定のトランザクションのデータが一意に識別されます。

OrigNode

(NonStop)データが抽出されたシステムのノード番号。NonStopクラスタの各システムは、一意のノード番号を持ちます。ノード番号の範囲は、0から255です。

NonStop以外から導出されたレコードの場合、OrigNodeは0(ゼロ)です。

FormatType

データがトランザクション・ログから読み取られたか、データベースからフェッチされたかを示します。

F — データベースからのフェッチ

R — トランザクション・ログからの読取り

Incomplete

このフィールドは現在使用されていません。

AuditPos

データのトランザクション・ログでの位置を識別します。

RecCount

(WindowsおよびUNIX) Oracle GoldenGateファイルに書き込むためにLOBデータをチャンクに分割する必要がある場合に使用されます。RecCountは、チャンクを再構築するために使用されます。

C.5.2 ヘッダー・データの使用

@GETENV関数のGGHEADERオプションを使用することによって、またはTABLEやMAPパラメータのCOLMAP文内でソース式として次のトランザクション要素のいずれかを使用することによって、Oracle GoldenGateレコード・ヘッダーで使用可能なデータの一部をマッピングに使用できます。

- GGS_TRANS_TIMESTAMP

- GGS_TRANS_RBA

- GGS_OP_TYPE

- GGS_BEFORE_AFTER_IND

C.6 レコード・データ領域

Oracle GoldenGate証跡レコードのデータ領域には、次のデータが含まれます。

- 変更がOracle GoldenGateファイルに書き込まれた時刻

- データベース操作のタイプ

- レコードの長さ

- 証跡ファイル内の相対バイト・アドレス

- 表名

- 16進形式のデータ変更

次に、Windows、UNIX、LinuxおよびNonStopシステムのOracle GoldenGateによって使用されるレコード・イメージ形式の相違点について説明します。

C.6.1 完全レコード・イメージ形式(NonStopソース)

完全レコード・イメージには、処理される行のすべての列の値が含まれます。完全レコード・イメージ形式は、ソース・システムがHP NonStopで、レコード・ヘッダーに指定されているIOTypeが次のいずれかである場合にのみ証跡に生成されます。

3 — Delete
5 — Insert
10 — Update

それぞれの完全レコード・イメージの形式は、そのレコードが元のファイルまたは表を直接読み取るプログラムから取得された場合と同じです。SQL表、日時フィールド、NULLなどのデータは、プログラムがそのデータをアプリケーション・バッファに選択する場合とまったく同じように書き込まれます。日時フィールドは内部的に8バイトのタイムスタンプとして表現されますが、外部形式は最大26バイトの文字列として表現可能です。Enscribeレコードは、元のファイルに存在するとおりの形式で取得されます。

操作タイプがInsertまたはUpdateの場合、イメージには操作後のレコードの内容が含まれます(変更後イメージ)。操作タイプがDeleteの場合、イメージには操作前のレコードの内容が含まれます(変更前イメージ)。

Enscribeデータベースから生成されるレコードでは、元のファイルのAUDITCOMPRESS属性がONに設定されていなければ、完全レコード・イメージが出力されます。AUDITCOMPRESSがONの場合、元のファイルによって更新操作が取得されると、常に圧縮更新レコードが生成されます。(完全イメージは、FETCHCOMPSパラメータを使用することで、Extractプロセスによって取得できます。)

C.6.2 圧縮レコード・イメージ形式(Windows、UNIX、Linuxソース)

圧縮レコード・イメージには、処理される行で変更されたキー(主、一意、KEYCOLS)および列のみが含まれます。デフォルトでは、WindowsおよびUNIXシステムのプロセスによって書き込まれる証跡レコードは、常に圧縮されます。圧縮レコードの形式は次のとおりです。

column_index column_length column_data[...]

説明:

- column_indexは、ソース表内の列の序数索引です(2バイト)。

- colum_lengthは、データの長さです(2バイト)。

- column_dataは、NULLまたはVARCHARの長さインジケータを含むデータです。

NonStopプラットフォームから書き込まれるEnscribeレコードは、圧縮されないことがあります。圧縮Enscribeレコードの形式は次のとおりです。

field_offset field_length field_value[...]

説明:

- field_offsetは、変更された値の元のレコード内のオフセットです(2バイト)。

- field_lengthは、データの長さです(2バイト)。

- field_valueは、NULLまたはVARCHARの長さインジケータを含むデータです。

圧縮Enscribeレコードの最初のフィールドは、主キーまたはシステム・キーです。

C.7 トークン領域

証跡レコードには、2つのトークン領域も含まれることがあります。1つは内部使用を目的としており、ここでは説明しません。もう1つはユーザー・トークン領域です。ユーザー・トークンは、ターゲット列へのレプリケーションまたは他の目的のために取得されて証跡レコードに格納される環境値です。使用される場合、これらのトークンはレコードのデータ部分の後に続き、ログダンプで確認すると次のように表示されます。

パラメータ

値

TKN-HOST
TKN-GROUP
TKN-BA_IND
TKN-COMMIT_TS
TKN-POS
TKN-RBA
TKN-TABLE
TKN-OPTYPE
TKN-LENGTH
TKN-TRAN_IND

: syshq
: EXTORA
: AFTER
: 2011-01-24 17:08:59.000000
: 3604496
: 4058
: SOURCE.CUSTOMER
: INSERT
: 57
: BEGIN

C.8 Oracle GoldenGateの操作タイプ

次に、Oracle GoldenGateの操作タイプの一部を示します。Oracle GoldenGateに新機能が追加されると、タイプが追加されることがあります。最新のリストを確認するには、ログダンプ・ユーティリティのSHOW RECTYPEコマンドを使用してください。

表C-2 Oracle GoldenGateの操作タイプ

タイプ

説明

プラットフォーム

1-Abort

トランザクションが中断されました。

NSK TMF

2-Commit

トランザクションがコミットされました。

NSK TMF

3-Delete

レコードまたは行が削除されました。Deleteレコードには、通常、完全レコード・イメージが含まれます。ただし、COMPRESSDELETESパラメータが使用されている場合は、キー列のみが示されます。

すべて

4-EndRollback

データベース・ロールバックが終了しました。

NSK TMF

5-Insert

レコードまたは行が挿入されました。Insertレコードには、完全レコード・イメージが含まれます。

すべて

6-Prepared

ネットワーク・トランザクションのコミット準備が完了しました。

NSK TMF

7-TMF-Shutdown

TMFが停止しました。

NSK TMF

8-TransBegin

現在使用されていません。

NSK TMF

9-TransRelease

現在使用されていません。

NSK TMF

10-Update

レコードまたは行が更新されました。Updateレコードには、完全レコード・イメージが含まれます。注意: レコード・ヘッダーのパーティション・インジケータが4の場合、そのレコードはFieldComp形式(後述を参照)であり、更新は圧縮されています。

すべて

11-UpdateComp

TMF AuditComp形式のレコードまたは行が更新されました。この形式では、変更されたバイトのみが示されます。2-byte_offset2-byte_length形式の4バイトの記述子が、各データ・フラグメントの先頭に配置されます。byte offsetは、ソース表内の列の序数索引です。lengthはデータの長さです。

NSK TMF

12-FileAlter

データベース・ファイルの属性が変更されました。

NSK

13-FileCreate

データベース・ファイルが作成されました。

NSK

14-FilePurge

データベース・ファイルが削除されました。

NSK

15-FieldComp

SQL表の行が更新されました。この形式では、変更されたバイトのみが示されます。変更されていない列の変更前イメージは、データベースでは記録されません。2-byte_offset2-byte_length形式の4バイトの記述子が、各データ・フラグメントの先頭に配置されます。byte offsetは、ソース表内の列の序数索引です。lengthはデータの長さです。レコード・ヘッダーのパーティション・インジケータの4は、FieldComp形式を示します。

すべて

16-FileRename

ファイル名が変更されました。

NSK

17-AuxPointer

新規データを保持するAUX証跡および読取りを開始する場所に関する情報が含まれます。

NSK TMF

18-NetworkCommit

ネットワーク・トランザクションがコミットされました。

NSK TMF

19-NetworkAbort

ネットワーク・トランザクションが中断されました。

NSK TMF

90-(GGS)SQLCol

SQL表に1つ以上の列が追加されたか、属性が変更されました。

NSK

100-(GGS)Purgedata

ファイルからすべてのデータが削除されました(PURGEDATA)。

NSK

101-(GGS)Purge(File)

ファイルが消去されました。

NSK非TMF

102-(GGS)Create(File)

ファイルが作成されました。Oracle GoldenGateレコードには、ファイル属性が含まれます。

NSK非TMF

103-(GGS)Alter(File)

ファイルが変更されました。Oracle GoldenGateレコードには、変更されたファイル属性が含まれます。

NSK非TMF

104-(GGS)Rename(File)

ファイル名が変更されました。Oracle GoldenGateレコードには、元の名前と新しい名前が含まれます。

NSK非TMF

105-(GGS)Setmode

SETMODE操作が実行されました。Oracle GoldenGateレコードには、SETMODE情報が含まれます。

NSK非TMF

106-GGSChangeLabel

CHANGELABEL操作が実行されました。Oracle GoldenGateレコードには、CHANGELABEL情報が含まれます。

NSK非TMF

107-(GGS)Control

CONTROL操作が実行されました。Oracle GoldenGateレコードには、CONTROL情報が含まれます。

NSK非TMF

115および117

(GGS)KeyFieldComp(32)

主キーが更新されました。Oracle GoldenGateレコードには、キーの変更前イメージと、キーおよび行の変更後イメージが含まれます。データはFieldComp形式(圧縮)です。つまり、変更されていない列の変更前イメージは、データベースでは記録されません。

WindowsおよびUNIX

116-LargeObject

116-LOB

RAW列、BLOB列、CLOB列またはLOB列を示します。このタイプのデータは、複数のレコードにわたって格納されます。

WindowsおよびUNIX

132-(GGS) SequenceOp

順序に対する操作を示します。

WindowsおよびUNIX

134-UNIFIED UPDATE

135-UNIFIED PKUPDATE

同じレコードに変更前と変更後の値の両方が含まれている、統一された証跡レコードを示します。UNIFIED UPDATE内の変更前イメージには、変更前イメージと変更後イメージの両方のトランザクション・レコードで使用可能なすべての列が含まれます。UNIFIED PKUPDATE内の変更前イメージには、トランザクション・レコードで使用可能なすべての列が含まれますが、変更後イメージは、UPDATEで変更された主キー列および列に制限されます。

WindowsおよびUNIX

160 - DDL_Op

DDL操作を示します。

WindowsおよびUNIX

161-

RecordFragment

ベース・レコードを超えており、複数のレコードにわたって格納する必要のある大きな行の一部であることを示します。

WindowsおよびUNIX

200-GGSUnstructured Block

200-BulkIO

BULKIO操作が実行されました。Oracle GoldenGateレコードには、RAW DP2ブロックが含まれます。

NSK非TMF

201から204

これらは、NonStopトレース・レコードの異なるタイプです。トレース・レコードは、Oracle GoldenGateサポートのアナリストによって使用されます。説明は次のとおりです。

- ARTYPE_FILECLOSE_GGS 201 — ソース・アプリケーションが、構造化されていないI/Oに対して開かれていたファイルを閉じました。Replicatによって使用されます。

- ARTYPE_LOGGERTS_GGS 202 — ロガー・ハートビート・レコード。

- ARTYPE_EXTRACTERTS_GGS 203 — 未使用。

- ARTYPE_COLLECTORTS_GGS 204 — 未使用。

NSK非TMF

205-GGSComment

ログダンプ・ユーティリティによって作成されたコメント・レコードを示します。コメント・レコードは、ログダンプによって、そのSAVEコマンドでファイルに保存されるデータの最初と最後に作成されます。

すべて

249から254

これらは、NonStopトレース・レコードの異なるタイプです。トレース・レコードは、Oracle GoldenGateサポートのアナリストによって使用されます。説明は次のとおりです。

- ARTYPE_LOGGER_ADDED_STATS 249 — ソース・アプリケーションがロガーで開いている状態を閉じたときにロガーによって作成されるステータス・レコード(SENDERSTATSが有効化されており、ステータスがログ証跡に書き込まれる場合)。

- ARTYPE_LIBRARY_OPEN 250 — BASELIBによって書き込まれ、アプリケーションがファイルを開いたことを示します。

- ARTYPE_LIBRARY_CLOSE 251 — BASELIBによって書き込まれ、アプリケーションがファイルを閉じたことを示します。

- ARTYPE_LOGGER_ADDED_OPEN 252 — 未使用。

- ARTYPE_LOGGER_ADDED_CLOSE 253 — 未使用。

- ARTYPE_LOGGER_ADDED_INFO 254 — ロガーによって書き込まれ、後続のレコードでI/Oを実行したソース・アプリケーションに関する情報が含まれます(SENDERSTATSが有効化されており、ステータスがログ証跡に書き込まれる場合)。トレース・レコードのファイル名は、アプリケーションのオブジェクト・ファイルです。トレース・データには、アプリケーション・プロセスの名前と、その実行で使用されていたライブラリ(存在する場合)の名前が含まれます。

NSK非TMF

C.9 Oracle GoldenGate証跡のヘッダー・レコード

Oracle GoldenGate証跡にあるトランザクション関連のレコードに加え、各証跡ファイルにはファイル・ヘッダーが含まれます。

ファイル・ヘッダーは、データ・レコードに先行する証跡ファイルの先頭部分にレコードとして格納されます。証跡のヘッダーに格納されているレコードに関する情報によって、Oracle GoldenGateプロセスは、各レコードがOracle GoldenGateの現行リリースでサポートされる形式であるかどうかを判断できます。

証跡ヘッダー・フィールドはトークンとして格納されます。トークンの形式はOracle GoldenGateのすべてのバージョンで同じです。Oracle GoldenGateのあるバージョンで与えられたトークンがサポートされない場合、そのトークンは無視されます。非推奨のトークンには、Oracle GoldenGateの以前のバージョンとの互換性が保たれるようデフォルト値が割り当てられます。

証跡のヘッダーは、ログダンプ・ユーティリティのFILEHEADERコマンドを使用して表示できます。ファイル・ヘッダーのトークンの詳細は、Oracle GoldenGateログダンプ・リファレンスを参照してください。

D コミット順序番号について

この付録では、Oracle GoldenGateのコミット順序番号(CSN)の詳細を説明します。

Oracle GoldenGateを使用する場合、コミット順序番号(CSN)を参照する必要がある場合があります。CSNは、トランザクション・ストリームでExtractの位置を指定する場合、証跡でReplicatの位置を再指定する場合、またはその他の目的で必要になることがあります。変換関数の中にはこれを返すものがあります。また、レポートおよび一部のGGSCI出力に含まれます。

CSNは、トランザクションがデータベースにコミットされた時点を一意に識別するOracle GoldenGateによって生成される、単調増加の識別子です。目的は、トランザクションがソースからターゲットにレプリケートされるとき、トランザクション一貫性とデータ整合性を保証することです。

各種のデータベース管理システムでは、各トランザクションの完了時になんらかの一意のシリアル番号が独自に生成され、そのトランザクションのコミットが一意に識別されます。たとえば、Oracle RDBMSがシステム変更番号を生成すると、それはOracle RDBMSによって各イベントに割り当てられる、単調増加の順序番号になります。CSNは、この同じ識別情報を取得して、それを内部的に一連のバイト列として表現します。ただし、CSNは、プラットフォームに依存しない方法で処理されます。それぞれが同じログ・ストリームのトランザクション・コミット・レコードにバインドされた2つの任意のCSN番号を比較することで、2つのトランザクションが完了した順序が正確に示されます。

CSNは、トランザクションID(Oracle GoldenGateの情報出力でXIDと表示されます)でクロスチェックされます。同時にコミットする複数のトランザクションがあるため、同じCSNを持っている場合でも、XIDとCSNの組合せでは、トランザクションが一意に識別されます。たとえば、並列度と高いトランザクション同時並行性があるOracle RAC環境で、これが発生することがあります。

CSN値は、トランザクションのコミットを識別する証跡レコードにトークンとして格納されます。この値は、@GETENV列変換関数を使用して取得することや、ログダンプ・ユーティリティを使用して表示することができます。

Oracle、DB2 LUWおよびDB2 z/OS以外のすべてのデータベース・プラットフォームは、固定長のCSNを持ちます。このCSNには、固定長にするために必要に応じて先行する0(ゼロ)が埋め込まれます。複数のフィールドを含むCSNは、各フィールド内で埋込みが行われることがあります(Sybase CSNなど)。

MySQLではトランザクションIDがイベント・データの一部として作成されないため、Oracle GoldenGateは次の項目の組合せを一意のトランザクション識別子とみなします。

- 識別するトランザクションのSTART TRANSACTIONレコードが含まれるログ・ファイルのログ・ファイル番号

- そのレコードのレコード・オフセット

表D-1 Oracle GoldenGateのデータベースごとのCSN値

データベース

CSN値

DB2 for i

sequence_number

説明:

- sequence_numberは、固定長の20桁の10進ベースのDB2 iシステム順序番号です。

例:

12345678901234567890

DB2 LUW

LSNまたはLRI

説明:

- バージョン9.7以前では、LSNは、可変長の10進ベースのDB2ログ順序番号です。
例:

1234567890

- バージョン10.1以降では、LRIは、DB2ログ・レコード識別子のピリオド区切りの番号のペアです。
例:

123455.34645

DB2 z/OS

RBA

説明:

- RBAは、トランザクション・ログ内のコミット・レコードにおける6バイトの相対バイト・アドレスです。

例:

1274565892

MySQL

LogNum:LogPosition

説明:

- LogNumは、識別されるトランザクションのSTART TRANSACTIONレコードが含まれるログ・ファイルの名前です。

- LogPositionは、そのレコードのイベント・オフセット値です。イベント・オフセット値は、ログ・レコードのレコード・ヘッダー・セクションに格納されます。

たとえば、ログ番号が12で、ログ位置が121の場合、CSNは次のようになります。

000012:000000000000121

Oracle

system_change_number

説明:

- system_change numberは、OracleのSCN値です。

例:

6488359

SQL/MX

sequence_number|RBA

説明:

- sequence_numberは、先行する0(ゼロ)が埋め込まれた、6桁の10進NonStop TMF監査証跡順序番号です。

- RBAは、先行する0(ゼロ)が埋め込まれた、そのファイル内の10桁の10進相対バイト・アドレスです。

この2つの要素によって、TMFマスター監査証跡(MAT)の位置を指定します。

例:

000042|0000068242

SQL Server

データベースが値を戻す方法に応じて、次のいずれかになります。

- 先行する0(ゼロ)が埋め込まれた、0X接頭辞付きのコロン区切りの16進文字列(8:8:4)

- 先行する0(ゼロ)が埋め込まれた、コロン区切りの10進文字列(10:10:5)

- 先行する0(ゼロ)のない、0X接頭辞付きのコロン区切りの16進文字列

- 先行する0(ゼロ)のない、コロン区切りの10進文字列

- 10進文字列

説明:

- 最初の値は仮想ログ・ファイル番号、2番目の値は仮想ログ内のセグメント番号、3番目の値はエントリ番号です。

例:

0X00000d7e:0000036b:01bd
0000003454:0000000875:00445
0Xd7e:36b:1bd
3454:875:445
3454000000087500445

Sybase

time_high.time_low.page.row

説明:

- time_highおよびtime_lowは、ログ・ページのインスタンスIDを表します。これは、各データベース・ログ・ページのヘッダーに格納されます。time_highは2バイトで、time_lowは4バイトです(それぞれ先行する0(ゼロ)が埋め込まれます)。

- pageは、0(ゼロ)が埋め込まれたデータベース論理ページ番号です。

- rowは、0(ゼロ)が埋め込まれた行番号です。

これらの構成要素が組み合されて、ログ・ストリーム内で一意の位置を表します。timestamp-highの2バイト整数の有効範囲は、0から65535です。timestamp-lowの4バイト整数の場合、0から4294967295です。

例:

00001.0000067330.0000013478.00026

Teradata

sequence_ID

説明:

- sequence_IDは、固定長の出力可能な汎用順序IDです。

例:

0x0800000000000000D700000021

TimesTen

TimesTenにはCSNはありません。このデータベースでは、Oracle GoldenGateによる抽出(取得)がサポートされないためです。

E チェックポイントについて

この付録では、チェックポイントに関する情報について説明します。 Oracle GoldenGateで作業する場合、状況に応じて、プロセスで作成されるチェックポイントを参照する必要があります。 チェックポイントは、リカバリの目的でプロセスの状態を保存します。 ExtractおよびReplicatではチェックポイントを使用します。

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

- Extractチェックポイント

- Replicatチェックポイント

- 内部チェックポイント情報

- Oracle GoldenGateチェックポイント表

E.1 Extractチェックポイント

正確なチェックポイントの位置は、データ・ソースの読取りチェックポイントとトレイルの書込みチェックポイントで構成されます。次に、SHOWCHオプションを指定したINFO EXTRACTコマンドで表示されるチェックポイント情報の例を示します。ここでは、データ・ソースはOracle RACデータベース・クラスタなので、出力にはスレッド情報も含まれています。過去のチェックポイントを表示するには、表示するチェックポイント番号をSHOWCH引数に続いて指定します。

例E-1 INFO EXTRACTとSHOWCH

EXTRACT    JC108XT Last Started 2011-01-01 14:15   Status ABENDED
Checkpoint Lag       00:00:00 (updated 00:00:01 ago)
Log Read Checkpoint  File /orarac/oradata/racq/redo01.log
2011-01-01 14:16:45  Thread 1, Seqno 47, RBA 68748800
Log Read Checkpoint  File /orarac/oradata/racq/redo04.log
2011-01-01 14:16:19  Thread 2, Seqno 24, RBA 65657408

Current Checkpoint Detail:

Read Checkpoint #1

Oracle RAC Redo Log
Startup Checkpoint (starting position in data source):
Thread #: 1
Sequence #: 47
RBA: 68548112
Timestamp: 2011-01-01 13:37:51.000000
SCN: 0.8439720
Redo File: /orarac/oradata/racq/redo01.log

Recovery Checkpoint (position of oldest unprocessed transaction in data source):
Thread #: 1
Sequence #: 47
RBA: 68748304
Timestamp: 2011-01-01 14:16:45.000000
SCN: 0.8440969
Redo File: /orarac/oradata/racq/redo01.log

Current Checkpoint (position of last record read in the data source):
Thread #: 1
Sequence #: 47
RBA: 68748800
Timestamp: 2011-01-01 14:16:45.000000
SCN: 0.8440969
Redo File: /orarac/oradata/racq/redo01.log

Read Checkpoint #2

Oracle RAC Redo Log

Startup Checkpoint(starting position in data source):
Sequence #: 24
RBA: 60607504
Timestamp: 2011-01-01 13:37:50.000000
SCN: 0.8439719
Redo File: /orarac/oradata/racq/redo04.log

Recovery Checkpoint (position of oldest unprocessed transaction in data source):
Thread #: 2
Sequence #: 24
RBA: 65657408
Timestamp: 2011-01-01 14:16:19.000000
SCN: 0.8440613
Redo File: /orarac/oradata/racq/redo04.log

Current Checkpoint (position of last record read in the data source):
Thread #: 2
Sequence #: 24
RBA: 65657408
Timestamp: 2011-01-01 14:16:19.000000
SCN: 0.8440613
Redo File: /orarac/oradata/racq/redo04.log

Write Checkpoint #1

GGS Log Trail

Current Checkpoint (current write position):

Sequence #: 2
RBA: 2142224
Timestamp: 2011-01-01 14:16:50.567638
Extract Trail: ./dirdat/eh

Header:
Version = 2
Record Source = A
Type = 6
# Input Checkpoints = 2
# Output Checkpoints = 1

File Information:
Block Size = 2048
Max Blocks = 100
Record Length = 2048
Current Offset = 0

Configuration:
Data Source = 3
Transaction Integrity = 1
Task Type = 0

Status:
Start Time = 2011-01-01 14:15:14
Last Update Time = 2011-01-01 14:16:50
Stop Status = A
Last Result = 400

SHOWCH出力のHeaderエントリから始まる内部情報の詳細は、内部チェックポイント情報を参照してください。

E.1.1 Extract読取りチェックポイントについて

Extractは、データ・ソースに読取りチェックポイントを作成します。

E.1.1.1 開始チェックポイント

開始チェックポイントは、プロセスの起動時にデータ・ソースに作成される最初のチェックポイントです。この統計は、次のもので構成されます。

- Thread #: Oracle GoldenGateがOracle RAC環境で実行されている場合は、このチェックポイントを作成したExtractスレッドの番号。それ以外の環境で実行されている場合、この統計は表示されません。

- Sequence #: チェックポイントが作成されたトランザクション・ログの順序番号。

- RBA: チェックポイントが作成されたレコードの相対バイト・アドレス。

- Timestamp: チェックポイントの作成時のレコードのタイムスタンプ。

- SCN: チェックポイントが作成されたレコードのシステム変更番号。

- Redo File: チェックポイントが作成されたレコードを含むトランザクション・ログのパス名。

E.1.1.2 リカバリ・チェックポイント

リカバリ・チェックポイントは、Extractによってまだ処理されていない最も古いトランザクションを含むレコードのデータ・ソース内の位置です。この統計のフィールドは、他のタイプの読取りチェックポイントに含まれるフィールドと同じです。

E.1.1.3 現在のチェックポイント

現在のチェックポイントは、Extractが読み取った最新レコードのデータ・ソース内の位置です。この値は、サマリー、およびオプションなしの基本のINFO EXTRACTコマンドで表示されるLog Read Checkpoint統計と同じになるはずです。この統計のフィールドは、他のタイプの読取りチェックポイントに含まれるフィールドと同じです。

E.1.2 Extract書込みチェックポイントについて

Extractは、証跡に、現在のチェックポイントと呼ばれる書込みチェックポイントを作成します。現在のチェックポイントは、Extractが現在書き込んでいる証跡内の位置です。この統計は、次のもので構成されます。

- Sequence #: チェックポイントが書き込まれた証跡ファイルの順序番号。

- RBA: チェックポイントが作成された証跡ファイル内レコードの相対バイト・アドレス。

- Timestamp: チェックポイントの作成時のレコードのタイムスタンプ。

- Extract trail: 証跡の相対パス名。

- Trail Type: 証跡タイプを識別します。EXTTRAILでは、証跡をローカル証跡として識別します。これは、ホスト・ファイルシステム全体でOracle GoldenGateプロセスによって直接アクセス可能であることを意味します。RMTTRAILでは、証跡をリモート証跡として識別します。これは、ホスト・ファイルシステム全体でOracle GoldenGateプロセスによって直接アクセス不可であることを意味します。共有ネットワーク・デバイスに格納され、NFSのようなサービスを介してアクセス可能な証跡は、ホスト・ファイルシステム全体で透過的にアクセス可能であるため、ローカルとみなされます。

E.2 Replicatチェックポイント

Replicatは、最新の読取り位置をマーク付けするために、証跡ファイルにチェックポイントを作成します。プロセス・チェックポイントを表示するには、INFO REPLICATコマンドをSHOWCHオプションとともに使用します。基本コマンドでは、現在のチェックポイントを表示します。特定の番号の過去のチェックポイントを表示するには、番号の値をSHOWCH引数に続いて入力します。

例E-2 INFO REPLICAT、SHOWCH

REPLICAT   JC108RP   Last Started 2011-01-12 13:10   Status RUNNING
Checkpoint Lag       00:00:00 (updated 111:46:54 ago)
Log Read Checkpoint  File ./dirdat/eh000000
First Record  RBA 3702915
Current Checkpoint Detail:
Read Checkpoint #1
GGS Log Trail
Startup Checkpoint(starting position in data source):
Sequence #: 0
RBA: 3702915
Timestamp: Not Available
Extract Trail: ./dirdat/eh
Current Checkpoint (position of last record read in the data source):
Sequence #: 0
RBA: 3702915
Timestamp: Not Available
Extract Trail: ./dirdat/eh
Header:
Version = 2
Record Source = A
Type = 1
# Input Checkpoints = 1
# Output Checkpoints = 0
File Information:
Block Size = 2048
Max Blocks = 100
Record Length = 2048
Current Offset = 0
Configuration:
Data Source = 0
Transaction Integrity = -1
Task Type = 0
Status:
Start Time = 2011-01-12 13:10:13
Last Update Time = 2011-01-12 21:23:31
Stop Status = A
Last Result = 400

SHOWCH出力のHeaderエントリから始まる内部情報の詳細は、内部チェックポイント情報を参照してください。

E.2.1 Replicatチェックポイントについて

次に、証跡内のReplicatチェックポイントの詳細を説明します。

E.2.1.1 開始チェックポイント

開始チェックポイントは、プロセスの起動時に証跡に作成される最初のチェックポイントです。この統計は次の情報で構成されます。

- Sequence #: チェックポイントが書き込まれた証跡ファイルの順序番号。

- RBA: チェックポイントが作成されたレコードの相対バイト・アドレス。

- Timestamp: チェックポイントの作成時のレコードのタイムスタンプ。

- Extract Trail: 証跡の相対パス名。

E.2.1.2 現在のチェックポイント

現在のチェックポイントは、Replicatが読み取った最新レコードの証跡内の位置です。この値は、サマリー、およびオプションなしの基本のINFO REPLICATコマンドで表示されるLog Read Checkpoint統計と同じになるはずです。この統計のフィールドは、Startup Checkpointに含まれるフィールドと同じです。

E.3 内部チェックポイント情報

SHOWCHオプションを使用したINFOコマンドでは、現在のチェックポイント・エントリだけでなく、レコード自体に関するメタデータ情報も表示されます。この情報は記載されておらず、サポート・ケースの解決時にOracle GoldenGateプロセスおよびサポート担当者が使用するためのものです。メタデータは、SHOWCH出力内の次のエントリに含まれています。

Header:
Version = 2
Record Source = A
Type = 1
# Input Checkpoints = 1
# Output Checkpoints = 0
File Information:
Block Size = 2048
Max Blocks = 100
Record Length = 2048
Current Offset = 0
Configuration:
Data Source = 0
Transaction Integrity = -1
Task Type = 0
Status:
Start Time = 2011-01-12 13:10:13
Last Update Time = 2011-01-12 21:23:31
Stop Status = A
Last Result = 400

E.4 Oracle GoldenGateチェックポイント表

データベース・チェックポイントを使用する場合、ADD CHECKPOINTTABLEコマンドを実行すると、データベースのユーザー定義名を使用してOracle GoldenGateによりチェックポイント表が作成されます。または、ユーザーがchkpt_db_create.sqlスクリプトを使用して表を作成することもできます。ここでdbは、スクリプトでサポートされるデータベース・タイプの略称です。

2つの表があります: メイン・チェックポイント表と、自動的に作成される補助チェックポイント表です。補助表はトランザクション表と呼ばれ、_loxが付加されたプライマリ・チェックポイント表の名前が含まれています。各Replicatまたは調整されたReplicatの各スレッドでは、進捗情報を格納するためにチェックポイント表の1行を使用します。

チェックポイント時には、通常、適用された(合計nトランザクション間の)いくつかのトランザクションがあり、残りは進行中です。たとえば、Replicatが、CSN1からCSN3までの範囲のnトランザクションのグループを処理している場合を考えてみます。CSN1は高基準値で、CSN3は低基準値です。高基準値より高いCSNを持つトランザクションは処理されず、低基準値より低いCSNを持つトランザクションはすでに処理されています。完了したトランザクションは、チェックポイント表のLOG_CMPLT_XID列に格納されます。これらのトランザクションのオーバーフローは、トランザクション表(補助チェックポイント表)のLOG_CMPLT_XID列に格納されます。

現在、Replicat (または調整Replicatの各Replicatスレッド)では、トランザクションを(並列ではなく)順次適用します。そのため、高基準値(表のLOG_CSN値)は、低基準値(表のLOG_CMPLT_CSN値)と常に同じで、通常、LOG_CMPLT_XID列のトランザクションIDが1つのみ存在します。同じCSNを共有している複数のトランザクションが存在する場合のみ、例外です。

これらの表の列の名前または属性は、変更しないでください。表記憶属性は、必要に応じて変更できます。

表E-1 チェックポイント表の定義

列

説明

GROUP_NAME (主キー)

チェックポイントにこの表を使用するReplicatグループの名前。複数のReplicatグループで同じ表を使用できます。この列は主キーの一部です。

GROUP_KEY (主キー)

同じ表に書き込むReplicatグループの数にかかわらず、GROUPNAMEとともにチェックポイントを一意に識別する、一意の識別子。この列は主キーの一部です。

SEQNO

Replicatがチェックポイント時に読み取っていた入力証跡の順序番号。

RBA

SEQNOで識別される証跡でReplicatが到達した相対バイト・アドレス。RBAとSEQNOを合せて、チェックポイント時のReplicatの進捗を識別する証跡内の絶対位置を示します。

AUDIT_TS

ソース・トランザクションのコミットのタイムスタンプ。

CREATE_TS

チェックポイント表の作成日時。

LAST_UPDATE_TS

チェックポイント表の最終更新日時。

CURRENT_DIR

現在のOracle GoldenGateのホーム・ディレクトリまたはフォルダ。

LOG_CSN

CSNの高基準値(上限)を格納します。この値より高いCSNを持つトランザクションは処理されません。

LOG_XID

使用されません。下位互換性の目的で保持されています。

LOG_CMPLT_CSN

CSNの低基準値(下限)を格納します。この値より低いCSNを持つトランザクションはすでに処理されています。

LOG_CMPLT_XIDS

すでに適用されている高基準値と低基準値の間のトランザクションを格納します。

VERSION

チェックポイント表形式のバージョン。表のバージョン番号として識別するための将来の拡張を有効にします。

表E-2 トランザクション表の定義

列

説明

GROUP_NAME

チェックポイントにこの表を使用するReplicatグループの名前。複数のReplicatグループで同じ表を使用できます。この列はトランザクション表の主キーの一部です。

GROUP_KEY

同じ表に書き込むReplicatグループの数にかかわらず、GROUPNAMEとともにチェックポイントを一意に識別する、一意の識別子。この列はトランザクション表の主キーの一部です。

LOG_CMPLT_CSN

チェックポイント表を参照する外部キー。この列はトランザクション表の主キーの一部です。

LOG_CMPLT_XIDS_SEQ

多くのオーバーフロー・トランザクションがあるため、それらすべてを格納するために複数の行が必要な場合に、一意の行を作成します。この列はトランザクション表の主キーの一部です。

LOG_CMPLT_XIDS

すでに適用されている高基準値と低基準値の間のトランザクションのオーバーフローを格納します。

オラクルの法律上の注意点について

コピーライトについて

Copyright © 1994-2016, Oracle and/or its affiliates.All rights reserved.

ライセンス制約の保証と結果的に生じる損害の免責

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

保証免責

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクルまでご連絡ください。

制限付権利について

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs.No other rights are granted to the U.S. Government.

危険な用途への使用について

このソフトウェアまたはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアまたはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、Oracle Corporationおよびその関連会社は一切の責任を負いかねます。

商標と登録商標について

OracleおよびJavaはオラクルおよびその関連会社の登録商標です。その他の社名、商品名等は各社の商標または登録商標である場合があります。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

第三者のコンテンツ、製品、サービスに対する免責事項

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。適用されるお客様とOracle Corporationとの間の契約に別段の定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。適用されるお客様とOracle Corporationとの間の契約に定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

アルファ版およびベータ版ドラフト・ドキュメントについて

このドキュメントが試作版の場合:

このドキュメントは試作版であり、デモおよび暫定使用のみを目的としたものです。このソフトウェアを使用するハードウェアに限定するものではありません。Oracle Corporationおよびその関連会社は、このドキュメントに関して一切の責任を負わず、いかなる保証もいたしません。また、このドキュメントを使用したことによって損失、費用、あるいは損害が発生しても、一切の責任を負いかねます。

非公開のアルファ版およびベータ版ドラフト・ドキュメントについて

このドキュメントが非公開の試作版の場合:

このドキュメントに含まれる情報は、情報の共有のみを目的としたものであって、顧客諮問委員会(Customer Advisory Board)のメンバーとしてのお客様の立場でのみ、またはお客様のベータ・トライアル契約のみに従って検討されるべきものとします。マテリアル、コード、または機能の提供をお約束するものではなく、購入決定を行う際の判断材料とすべきではありません。このドキュメントに記載されている特徴または機能の開発、リリースおよび時期については、オラクルの裁量により決定されます。

このドキュメントには、ソフトウェアまたは印刷物などの形式を問わず、オラクルが独占的な権利を有する財産的情報が含まれています。この機密資料へのアクセスと使用は、お客様とオラクルとの間で締結され、お客様が遵守に同意した、Oracle Master Agreement、Oracle License and Oracle Services Agreement (オラクル・ライセンスおよびサービスに関する契約書)、Oracle PartnerNetwork Agreement、Oracle Distribution Agreementまたはその他のライセンス契約の条件に従うものとします。このドキュメントとその内容の開示、コピー、複製および配布には、オラクルによる事前の承諾を必要とします。このドキュメントはライセンス契約の一部となるものではなく、オラクルおよびその子会社や関連会社との契約を構成するものではありません。

ドキュメントのアクセシビリティについて

オラクルのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWebサイトhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc を参照してください。

Oracle Supportへのアクセス

サポートをご契約のお客様には、My Oracle Supportを通して電子支援サービスを提供しています。詳細情報はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=infoか、聴覚に障害のあるお客様はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=trsを参照してください。