この章では、トランザクションの変更のキャプチャがサポートされるように、ソースOracleデータベースを適切に構成する手順について説明します。
この章の内容は次のとおりです。
統合キャプチャおよび統合Replicatを使用する場合、専用のサーバー接続がtnsnames.ora
ファイルにそれぞれ必要です。これらのプロセスを構成する場合は、ExtractのUSERID
またはUSERIDALIAS
パラメータおよびReplicatパラメータを使用して、これらの接続を使用するようにプロセスを指定します。
次に、統合キャプチャ(Extract)および統合Replicatに必要な専用の接続の例を示します。
TEST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = test2)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = test) ) )
ExtractまたはReplicatパラメータ・ファイルに接続文字列を指定するセキュリティ・オプションは、次のとおりです。
パスワード暗号化の方法:
USERID intext@test, PASSWORD mypassword
資格証明ストアの方法:
USERIDALIAS ext
USERIDALIAS
の場合、次の例のように、別名ext
は、実際の接続文字列を含むOracle GoldenGate資格証明ストアに格納されます。
GGSCI> INFO CREDENTIALSTORE DOMAIN support Domain: Support Alias: ext Userid: intext@test
パラメータ・ファイルにデータベース接続情報を指定する方法の詳細は、Oracle GoldenGateの管理for Windows and UNIXを参照してください。
Oracle GoldenGateは、REDOログを使用して、ソース・トランザクションのレプリケートに必要なデータをキャプチャします。Oracle GoldenGateの処理を始める前に、Oracle REDOログをソース・システムに適切に構成する必要があります。
注意: この必要なロギングによってREDOの量が増えます。Oracle GoldenGate処理を開始してログが有効化されるまで待つ場合があります。 |
この項では、Oracle GoldenGateに適用される次のロギング・レベルについて説明します。使用するロギング・レベルは、Oracle GoldenGate機能または使用している機能によって異なります。
表3-1に、様々なロギング・プロパティのOracle GoldenGateユースケースを示します。詳細な情報は次のとおりです。
表3-1 ユースケース別のサプリメンタル・ロギングのオプション
ロギング・オプション | GGSCIコマンド | 機能 | ユースケース |
---|---|---|---|
強制ロギング・モード |
なし: データベースを通じて有効化します。 |
すべてのトランザクションおよびロードのロギングを強制します。 |
すべてのOracle GoldenGateユースケースで強くお薦めします。 |
最小のデータベース・レベルのサプリメンタル・ロギング |
なし: データベースを通じて有効化します。 |
最小サプリメンタル・ロギングで行連鎖情報をREDOログに追加できるようにします。 |
すべてのOracle GoldenGateユースケースに必要です。 |
スキーマ・レベルのサプリメンタル・ロギング、デフォルト設定 3.2.2項「スキーマ・レベルのサプリメンタル・ロギングの有効化」を参照してください。 |
|
主キーの無条件のサプリメンタル・ロギングを有効化し、スキーマのすべての表の一意キーおよび外部キーの条件付きのサプリメンタル・ロギングを有効化します。これらのキーは、すべてスケジューリング列と呼ばれます。 |
スキーマの現在および将来のすべての表でロギングを有効化します。主キー、一意キーおよび外部キーの列がソースとターゲットの両方で同じでない場合は、 |
サポートされるすべての列で無条件のロギングを使用したスキーマ・レベルのサプリメンタル・ロギング。(サポートされない列タイプの場合は、3.2.2項「スキーマ・レベルのサプリメンタル・ロギングの有効化」を参照してください。) |
|
スキーマのすべての表で、表のすべての列の無条件のサプリメンタル・ロギングを有効化します。 |
並列度が1より大きく、ソースおよびターゲットのスケジューリング列が異なる場合に、統合Replicatで使用します。 |
スキーマ・レベルのサプリメンタル・ロギング、最小設定 |
|
スキーマのすべての表の主キーおよび有効なすべての一意索引の無条件のサプリメンタル・ロギングを有効化します。 |
非統合Replicatでのみ使用します。これは、最低限必要なスキーマ・レベルのロギングです。 |
統合Replicatの組込みサポートを使用した表レベルのサプリメンタル・ロギング 3.2.3項「表レベルのサプリメンタル・ロギングの有効化」を参照してください。 |
|
主キーの無条件のサプリメンタル・ロギングを有効化し、表の一意キーおよび外部キーの条件付きのサプリメンタル・ロギングを有効化します。これらのキーは、すべてスケジューリング列と呼ばれます。 |
スキーマ・レベルのサプリメンタル・ロギングが使用されていないかぎり、すべてのOracle GoldenGateユースケースで必要です。主キー、一意キーおよび外部キーの列がソースとターゲットの両方で同じでない場合は、 |
サポートされるすべての列で無条件のロギングを使用した表レベルのサプリメンタル・ロギング。(サポートされない列タイプの場合は、3.2.3項「表レベルのサプリメンタル・ロギングの有効化」を参照してください。) |
|
表のすべての列の無条件のサプリメンタル・ロギングを有効化します。 |
並列度が1より大きく、ソースおよびターゲットのスケジューリング列が異なる場合に、統合Replicatで使用します。 |
表レベルのサプリメンタル・ロギング、最小設定 |
|
表の主キーおよび有効なすべての一意索引の無条件のサプリメンタル・ロギングを有効化します。 |
非統合Replicatでのみ使用します。これは、最低限必要な表レベルのロギングです。 |
Oracleソース・データベースを強制ロギング・モードにすることを強くお薦めします。強制ロギング・モードでは、すべてのトランザクションおよびロードのロギングを強制し、反対にユーザーまたは記憶域の設定をオーバーライドします。これにより、Extract構成のソース・データが失われることがなくなります。
また、最小サプリメンタル・ロギング、データベース・レベル・オプションは、Oracle GoldenGateを使用する場合にOracleソース・データベースに必要です。これにより、更新操作のREDOログに行連鎖情報が追加されます(存在する場合)。
注意: レプリケーションの外部の表に過剰なオーバーヘッドが発生するため、データベース・レベルの主キー(PK)および一意索引(UI)ロギングはあまりお薦めしません。これらのロギング・オプションがビジネス用途に必要でないかぎり、必要な操作は、最小サプリメンタル・ロギングをデータベース・レベルで有効化し、Oracle GoldenGateのロギングを強制するだけです。 |
次の手順を実行し、必要に応じて最小サプリメンタル・ロギングおよび強制ロギングを確認して有効化します。
ALTER SYSTEM
権限を持つユーザーとしてSQL*Plusにログインします。
次のコマンドを発行し、データベースがサプリメンタル・ロギング・モードかどうか、および強制ロギング・モードかどうかを確認します。両方の問合せで結果がYES
の場合、データベースはOracle GoldenGate要件を満たしています。
SELECT supplemental_log_data_min, force_logging FROM v$database;
いずれかまたは両方のプロパティで結果がNO
の場合、次のステップに進み、必要に応じて有効化します。
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; SQL> ALTER DATABASE FORCE LOGGING;
次のコマンドを発行し、これらのプロパティが有効化されていることを確認します。
SELECT supplemental_log_data_min, force_logging FROM v$database;
両方のプロパティで、この問合せの出力がYES
になる必要があります。
ログ・ファイルを切り替えます。
SQL> ALTER SYSTEM SWITCH LOGFILE;
Oracle GoldenGateでは、スキーマ・レベルのサプリメンタル・ロギングをサポートしています。スキーマ・レベルのロギングは、Oracle GoldenGate DDLレプリケーション機能を使用する場合に、Oracleソース・データベースで必要です。その他すべてのユースケースではオプションですが、表レベルのロギングをかわりに使用する必要があります(3.2.3項「表レベルのサプリメンタル・ロギングの有効化」を参照してください)。
スキーマ・レベルのロギングでは、デフォルトで主キーの無条件のサプリメンタル・ロギングを自動的に有効化し、スキーマのすべての表の一意キーおよび外部キーの条件付きのサプリメンタル・ロギングを自動的に有効化します。必要に応じて、オプションでロギングを変更できます。
注意: ワイルドカード指定を満たす場合に、スキーマに追加される新しい表がキャプチャされるため、表レベルのロギングよりもスキーマ・レベルのロギングを使用することを強くお薦めします。 |
次の手順をソース・システムで実行して、スキーマ・レベルのサプリメンタル・ロギングを有効化します。
11.2.0.2より前のバージョンの場合、ソースOracleデータベースにOracle Patch 13794550を適用します。
ソース・システムでGGSCIを実行します。
資格証明ストア内の、スキーマ・レベルのサプリメンタル・ロギングを有効にする権限を持つユーザーの別名でDBLOGIN
コマンドを発行します。
DBLOGIN USERIDALIAS alias
DBLOGINおよび追加オプションの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。
Oracle GoldenGateでデータの変更をキャプチャする対象の各スキーマに対し、ADD SCHEMATRANDATA
コマンドを発行します。
ADD SCHEMATRANDATA schema
[ALLCOLS | NOSCHEDULINGCOLS]
説明:
オプションがない場合、ADD SCHEMATRANDATA
スキーマでは、主キーのソース・システムで無条件のサプリメンタル・ロギングを有効化し、指定したスキーマの現在および将来のすべての表のすべての一意キーおよび外部キーの条件付きのサプリメンタル・ロギングを有効化します。無条件のロギングでは、キーが現在の操作で変更されたかどうかに関係なく、強制的に主キー値をログに記録します。条件付きロギングは、外部キーまたは一意キーの列のすべての値を、それらのうちの少なくとも1つが現在の操作で変更された場合に、ログに記録します。デフォルトは、非統合Replicatをオプションでサポートしますが、依存関係を計算するために、主キー、一意キーおよび外部キーをすべてインバウンド・サーバーで使用できるようにする必要があるため、統合Replicatをサポートする必要があります。統合Replicatの詳細は、5.3項「使用する適用方法の決定」を参照してください。
ALLCOLS
を使用すると、表のすべての列の無条件のサプリメンタル・ロギングを有効化して、指定したスキーマの現在および将来のすべての表に適用できます。ソース表とターゲット表に異なるスケジューリング列が含まれる場合に、統合Replicatをサポートするために使用します。(スケジューリング列は、主キー、一意キーおよび外部キーです。)
NOSCHEDULINGCOLS
は、スキーマの既存の表および後で追加された新しい表で、主キーおよび有効なすべての一意索引の値のみをログに記録します。これは、必要最小限のレベルのスキーマ・レベルのロギングで、非統合モードのReplicatのみで有効です。
次の例では、finance
スキーマのデフォルトのサプリメンタル・ロギングをコマンドで有効にします。
ADD SCHEMATRANDATA finance
次の例では、hr
スキーマの主キーおよび有効な一意索引のみでサプリメンタル・ロギングをコマンドで有効にします。
ADD SCHEMATRANDATA hr NOSCHEDULINGCOLS
ADD SCHEMATRANDATAの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。
表レベルのサプリメンタル・ロギングは、次の場合にソース・システムで有効化します。
スキーマ・レベルのロギングを使用しない場合に、必要なレベルのロギングを有効化する場合(3.2.2項「スキーマ・レベルのサプリメンタル・ロギングの有効化」を参照)。スキーマ・レベルまたは表レベルのロギングを使用する必要があります。表レベルのロギングでは、デフォルトで主キーの無条件のサプリメンタル・ロギングを自動的に有効化し、表の一意キーおよび外部キーの条件付きのサプリメンタル・ロギングを自動的に有効化します。必要に応じて、オプションでロギングを変更できます。
指定した表で主キーのロギングを回避する場合。
フィルタリングなどの特定のOracle GoldenGate機能をサポートするために、表レベルで非キー列をログに記録する場合。
次の手順をソース・システムで実行して、表レベルのサプリメンタル・ロギングを有効化するか、コマンドのオプションの機能を使用します。
ソース・システムでGGSCIを実行します。
資格証明ストア内の、表レベルのサプリメンタル・ロギングを有効にする権限を持つユーザーの別名を使用してDBLOGIN
コマンドを発行します。
DBLOGIN USERIDALIAS alias
DBLOGINおよび追加オプションの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。
ADD TRANDATA
コマンドを発行します。
ADD TRANDATA [container
.]schema.
table
[, COLS (columns)
] [, NOKEY] [, ALLCOLS | NOSCHEDULINGCOLS]
説明:
container
は、表がマルチテナント・コンテナ・データベースにある場合、ルート・コンテナまたはプラガブル・データベースの名前です。
schema
は、表を含むソース・スキーマです。
table
は、表の名前です。オブジェクト名を指定する手順は、Oracle GoldenGateの管理for Windows and UNIXを参照してください。
ADD TRANDATA
で他のオプションを指定しない場合は、主キーの無条件のサプリメンタル・ロギングを自動的に有効化し、表の一意キーおよび外部キーの条件付きのサプリメンタル・ロギングを自動的に有効化します。無条件のロギングでは、キーが現在の操作で変更されたかどうかに関係なく、強制的に主キー値をログに記録します。条件付きロギングは、外部キーまたは一意キーの列のすべての値を、それらのうちの少なくとも1つが現在の操作で変更された場合に、ログに記録します。デフォルトは、非統合Replicat (NOSCHEDULINGCOLS
も参照)をオプションでサポートしますが、依存関係を計算するために、主キー、一意キーおよび外部キーをすべてインバウンド・サーバーで使用できるようにする必要があるため、統合Replicatをサポートする必要があります。統合Replicatの詳細は、5.3項「使用する適用方法の決定」を参照してください。
ALLCOLS
では、表のすべての列の無条件のサプリメンタル・ロギングを有効化します。ソース表とターゲット表に異なるスケジューリング列が含まれる場合に、統合Replicatをサポートするために使用します。(スケジューリング列は、主キー、一意キーおよび外部キーです。)
NOSCHEDULINGCOLS
は、非統合モードのReplicatプロセスでのみ有効です。これは、表に対して定義されている一意制約のタイプ、または一意制約のないすべての列に適した、ADD SUPPLEMENTAL LOG DATA ALWAYS
句を含むALTER TABLE
コマンドを発行します。このコマンドは、スキーマ・レベルのロギングが使用されていない場合に、Oracle GoldenGateの表レベルのロギングの基本要件を満たします。Oracle GoldenGateがキーまたは索引をどのように選択するかについては、10.1項「ソース表とターゲット表での行の一意性の保証」を参照してください。
COLS
columns
は、KEYCOLS
句またはフィルタリングおよび操作に必要なキー以外の列を記録します。パラメータが必要です。NOKEY
オプションが存在しないかぎり、主キーに加えてこれらの列もログに記録されます。
NOKEY
によって、主キーまたは一意なキーのロギングが回避されます。TABLE
パラメータおよびMAP
パラメータにKEYCOLS
句が必要で、ADD TRANDATA
コマンドでCOLS
句を使用して代替のKEYCOLS
列を記録する必要があります。
ADD TRANDATA
にCOLS
オプションを使用する場合、ターゲットでそれらの列に一意の索引を作成して行の取得を最適化します。KEYCOLS
句の代替キーとしてこれらの列を記録する場合は、Oracle GoldenGateプロセスを構成するときにKEYCOLS
句をTABLE
およびMAP
文に追加する必要があります。
ADD TRANDATAの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。
Oracle GoldenGateキャプチャをサポートおよび適用するために必要なデータベース・サービスは、Oracle 11.2.0.4データベースで明示的に有効化する必要があります。これは、ExtractおよびReplicatのすべてのモードに必要です。
Oracle GoldenGateを有効化するには、次のデータベース初期化パラメータを設定します。Oracle RACのすべてのインスタンスで同じ設定にする必要があります。
ENABLE_GOLDENGATE_REPLICATION=true
このパラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。
特定の更新レコードを処理するために、Extractによってソース・データベースから追加の行データがフェッチされます。Oracle GoldenGateでフェッチされるデータは次のとおりです。
ユーザー定義型
ネストされた表
XMLTypeオブジェクト
デフォルトでは、Oracle GoldenGateでフラッシュバック問合せを使用してUNDO (ロールバック)表領域から値をフェッチします。そのように、Oracle GoldenGateでは特定の時点またはSCNで読取り一貫性行イメージを再構築し、REDOレコードと一致させることができます。
最適なフェッチ結果を得るには、ソース・データベースを次のように構成します。
次のようにOracle初期化パラメータUNDO_MANAGEMENT
およびUNDO_RETENTION
(秒単位)を設定することで、REDO保存に十分な時間を設定します。
UNDO_MANAGEMENT=AUTO UNDO_RETENTION=86400 UNDO_RETENTION can be adjusted upward in high-volume environments.
次の式を使用して、UNDO表領域で必要な領域を計算します。
undo_space
= UNDO_RETENTION *UPS
+overhead
説明:
undo_space
は、UNDOブロック数です。
UNDO_RETENTION
は、UNDO_RETENTION
パラメータの値です(秒単位)。
UPS
は、1秒当たりのUNDOブロック数です。
overhead
は、メタデータ(トランザクション表など)の最小オーバーヘッドです。
システム・ビューV$UNDOSTAT
を使用して、UPS
およびoverhead
を見積ります。
LOB
が含まれている表には、次のいずれかを実行します。
LOB
記憶域句をRETENTION
に設定します。これは、UNDO_MANAGEMENT
をAUTO
に設定したときに作成される表のデフォルトです。
RETENTION
のかわりにPCTVERSION
を使用する場合、PCTVERSION
を初期値の25に設定します。これは、STATS EXTRACT
コマンドでレポートされるフェッチ統計に基づいて調整できます(表3-2を参照)。これらの統計のSTAT_OPER_ROWFETCH
CURRENTBYROWID
フィールドまたはSTAT_OPER_ROWFETCH_CURRENTBYKEY
フィールドの値が大きい場合、統計で低い値を示すまでPCTVERSION
を10ずつ増やします。
次の権限のいずれかをOracle GoldenGate Extractユーザーに付与します。
GRANT FLASHBACK ANY TABLE TOdb_user
GRANT FLASHBACK ONschema.table
TOdb_user
Oracle GoldenGateによって、フェッチの管理に次のパラメータが提供されます。
表3-2 フェッチの管理用のOracle GoldenGateパラメータとコマンド
パラメータまたはコマンド | 説明 |
---|---|
|
必要に応じてExtractフェッチ統計を表示します。 |
|
常にフェッチ統計が表示されるように |
|
Extractによってソース・データベースに保持される準備済の問合せおよび |
|
Extractのデフォルトのフェッチ動作(Extractでフラッシュバック問合せを実行するか、現在のイメージを表からフェッチするか)を制御します。 |
|
UNDOの保存期限が切れている場合や、表の構造が変更された場合など、Extractのフラッシュバック問合せの失敗を処理します。Extractは、現在のイメージを表からフェッチするか、失敗を無視するように設定できます。 |
|
フェッチされたデータが含まれる証跡レコード、または列が見つからない証跡レコードの処理時に、Replicatで応答を制御します。 |
統合モードでは、Extractは、ソース・データベースの基礎となるログマイニング・サーバーと対話し、Replicatはターゲット・データベースのインバウンド・サーバーと対話します。この項では、これらのサーバーで消費される共有メモリーを管理するためのガイドラインについて説明します。
サーバーで使用される共有メモリーは、データベースのシステム・グローバル領域(SGA)のStreamsプール部分です。したがって、統合モードで実行されるExtractおよびReplicatプロセスで使用できるメモリーを十分に保持するには、データベース初期化パラメータのSTREAMS_POOL_SIZE
を十分に高い値に設定する必要があります。Streamsプールは、データベースの他のコンポーネント(Oracle Streams、アドバンスト・キューイング、データポンプ・エクスポート/インポートなど)でも使用されるため、Oracle GoldenGateのStreamsプールのサイズを設定する際、このことを必ず考慮に入れてください。
デフォルトでは、1つの統合キャプチャExtractで、ログマイニング・サーバーが1GBのMAX_SGA_SIZE
と2のPARALLELISM
を使用して実行されるよう要求されます。したがって、3つのExtractを統合キャプチャ・モードで同一データベース・インスタンスで実行する場合、3GB以上のメモリーをStreamsプールに割り当てる必要があります。ベスト・プラクティスとしては、Streamsプールの25パーセントが使用可能であるようにします。たとえば、3つのExtractを統合キャプチャ・モードで実行する場合、次のようにSTREAMS_POOL_SIZE
を設定します。
3 GB + (3 GB * 0.25) = 3.75 GB