2.10 ADD SCHEMATRANDATA

Oracleに有効です。ADD SCHEMATRANDATAでは、表のスキーマレベルのサプリメンタル・ロギングを有効化します。ADD SCHEMATRANDATAは、行の識別にOracle GoldenGateが必要とする使用可能なキーのスーパーセットを自動的に記録するために指定したスキーマの、現在および将来のすべての表で機能します。

マルチテナント・データベースのPDB内のスキーマに対してADD SCHEMATRANDATAを実行するには、PDBにログインしてコマンドを発行する必要があります。

ADD SCHEMATRANDATAは、統合ExtractおよびクラシックExtractの両方で有効で、次を実行します。

  • CREATE TABLEで作成された新しい表にOracleサプリメンタル・ロギングを有効化する。

  • 列を追加または削除するALTER TABLEの影響を受けた表のサプリメンタル・ロギングを更新する。

  • 名前が変更された表のサプリメンタル・ロギングを更新する。

  • 一意キーまたは主キーが追加または削除された表のサプリメンタル・ロギングを更新する。

デフォルトで、ADD SCHEMATRANDATAは、次に示す優先順位で、表のキー列を記録します。

  1. 主キー

  2. 主キーがない場合、無効、使用不可または非表示のキーを含む、表のすべての一意キー。ADTメンバー列を含む一意キーも記録されます。仮想列(ファンクションベース索引)の一意キーのみ記録されません。

  3. 前述のいずれも存在しない場合、表のすべてのスカラー列が記録されます。(システム生成の行OIDは常に記録されます。)

ADD SCHEMATRANDATAは、統合Replicatを使用するための条件または無条件のロギング要件もサポートします。

次の場合は、ADD SCHEMATRANDATAを使用します。

  • 統合キャプチャ用に構成するExtractグループの一部であるすべての表に対して。ADD SCHEMATRANDATAは、すべてのキーを記録することにより、適切なキーが記録されていることを保証します。

  • 統合Replicatグループで処理されるすべてのソース表に対して。主キー、一意キーおよび外部キーのロギングを有効にするオプションが提供され、様々な適用サーバーを介して処理されているリレーショナル表間の依存関係の計算をサポートします。

  • DDLレプリケーションがアクティブで、DMLが新しい表を作成するかキー列を変更するDDLと同時である場合。DDLがオブジェクトで発行された直後にDMLをオブジェクトに適用できるシナリオを最適に処理します。ADD SCHEMATRANDATAにより、各DDL操作で適切なキー値がREDOログにアトミックに記録されるため、Extract処理でのラグに関係なく、ログからキャプチャされる際のDMLのメタデータの継続性が保証されます。

ADD SCHEMATRANDATAを使用するためのデータベース・レベルのロギング要件

Oracle GoldenGateを使用するときに、ソース・データベースを強制ロギング・モードにし、データベース・レベルで最小サプリメンタル・ロギングを有効にすることを強くお薦めします。これは、連鎖行の情報(存在する場合)を更新操作用のREDOログに追加します。

ADD SCHEMATRANDATAを使用する場合の追加の考慮事項

  • ADD SCHEMATRANDATAを使用する前に、DBLOGINコマンドを発行します。このコマンドを発行するユーザーは、Oracle Streams管理者権限が付与されている必要があります。

    SQL> exec dbms_streams_auth.grant_admin_privilege('user')
  • DDLレプリケーションが有効化されていない場合、ADD TRANDATAコマンドのかわりにADD SCHEMATRANDATAを使用できます。ただし、表に主キーがなく、複数の一意キーがある場合、ADD SCHEMATRANDATAによって、データベースはすべての一意キーを記録することに注意してください。このような場合、ADD SCHEMATRANDATAによって、データベースはADD TRANDATAの場合よりも多くのREDOデータを記録します。余分なロギングを回避するには、可能な場合、一意キーのうちの1つを主キーとして指定します。

  • 1つの主キーがあるか、1つの一意キーがあるか、キーがない表の場合、ADD SCHEMATRANDATAでは、ADD TRANDATAと比較して、追加のロギング・オーバーヘッドはありません。

  • PDB内のスキーマにSCHEMATRANDATAを追加する場合、DBLOGIN内のそのPDBにログインする必要があります。たとえば、PDBがPDB1でスキーマがSCOTTの場合、次のコマンドを使用する必要があります。

    ADD SCHEMATRANDATA pdb1.scott

  • FILTER文、およびTABLEパラメータとMAPパラメータのKEYCOLS句に必要な列など、Oracle GoldenGateで使用するために特定の表の追加の非キー列を記録する必要がある場合、これらの列に対して ADD TRANDATAコマンドを発行します。このコマンドには、列の表レベルのサプリメンタル・ロギングを発行するためのCOLSオプションがあり、ADD SCHEMATRANDATAとともに使用できます。

Admin Client構文

ADD SCHEMATRANDATA schema 
{
[ALLOWNONVALIDATEDKEYS]
[NOSCHEDULINGCOLS | ALLCOLS]}
[NOVALIDATE]
[PREPARECSN  {WAIT | LOCK | NOWAIT | NONE}]

GGSCI構文

ADD SCHEMATRANDATA schema {
[ALLOWNONVALIDATEDKEYS] 
[NOSCHEDULINGCOLS | ALLCOLS]}
[NOVALIDATE]
[PREPARECSN  {WAIT | LOCK | NOWAIT | NONE}]
schema

キーの追加情報を記録するスキーマ。ワイルドカードは使用しないでください。マルチテナント・コンテナ・データベースの複数のプラガブル・データベースのスキーマにADD SCHEMATRANDATAを発行するには、DBLOGINを使用して各プラガブル・データベースに個別にログインしてから、ADD SCHEMATRANDATAを発行します。ルート・コンテナから、コンテナ接頭辞ADD SCHEMATRANDATA [pdb_name].schemaを使用して、schematrandataを追加できます。

ALLOWNONVALIDATEDKEYS

このオプションは、Oracle 11.2.0.3または12.1.0.1では無効です。サプリメンタル・ロギングのNON VALIDATEDおよびNOT VALID主キーが含まれます。これらのキーは、Oracle GoldenGateによって使用される標準キー選択基準より優先されます。GLOBALSのパラメータALLOWNONVALIDATEDKEYSが使用されている場合、ADD SCHEMATRANDATAは、指定されているかどうかにかかわらず、ALLOWNONVALIDATEDKEYSを使用して実行されます。デフォルトでは、NON VALIDATEDおよびNOT VALID主キーは記録されません。GLOBALS ALLOWNONVALIDATEDKEYSパラメータを参照してください。

NOSCHEDULINGCOLS | ALLCOLS

これらのオプションは、Oracleターゲット・データベースのサプリメンタル・ロギングを制御します。これらのオプションは一緒に使用できますが、後者のオプションが使用されます。たとえば、ADD SCHEMATRANDATA oggadm_ext ALLCOL NOSCHEDULINGCOLSコマンドでは、NOSCHEDULINGCOLSオプションが使用されます。

NOSCHEDULINGCOLS

スケジュール列のロギングを無効にします。デフォルトで、ADD SCHEMATRANDATAは、主キーの無条件ロギング、指定したスキーマの現在および今後のすべての表の、一意キーおよび外部キーのすべての条件付きサプリメンタル・ロギングを有効にします。無条件ロギングでは、主キーの値を、キーが現在の操作で変更されたかどうかにかかわらず、強制的にログに記録します。条件付きロギングは、外部キーまたは一意キーの列のすべての値を、それらのうちの少なくとも1つが現在の操作で変更された場合に、ログに記録します。統合Replicatの主キー、一意キーおよび外部キーはすべて、依存関係を計算するインバウンド・サーバーから利用できる必要があります。

ALLCOLS

指定したスキーマの現在および将来のすべての表の、すべてのサポートされるキーおよびキーではない列の無条件サプリメンタル・ロギングを有効にします。このオプションは、依存関係の計算に必要なキーと、フィルタリング、競合の解決またはその他の目的で必要な列のロギングを有効にします。LOB、LONG、ADTなどの列は含まれません。

NOVALIDATE

ADD SCHEMATRANDATAでサポートされるすべてのデータベースに有効。

処理中の表に関する追加情報がADD SCHEMATRANDATAで処理されないようにします。デフォルトでは、このオプションは有効です。追加情報の処理により、コマンドの応答時間が長くなります。このオプションは、その応答時間を短縮するために使用できます。

PREPARECSN {WAIT | LOCK | NOWAIT | NONE}

DMLとDDLの両方に有効です。Oracleデータ・ポンプのExportダンプ・ファイルにインスタンス化CSNが設定されるよう、ソースの表を自動的に準備します。Replicatは、(インポート時に) Oracle Data Pumpによって設定された表ごとのインスタンス化CSNを使用して、証跡レコードをフィルタ処理で除外します。ターゲット上では、データ・ポンプ・インポートがDBOPTIONS ENABLE_INSTANTIATION_FILTERINGパラメータを使用して、システム表とビューにインスタンス化SCNを移入し、表レベルのインスタンス化フィルタリングを有効にします。

WAIT

インフライト・トランザクションを待機し、表のインスタンス化を準備します。

LOCK

表にロックを設定します(表のインスタンス化を準備するため)。

NOWAIT

デフォルトの動作。インスタンス化の準備が即時実行されます。

NONE

インスタンス化の準備は行われません。

次の例は、スキーマscottに対するサプリメンタル・ロギングを有効にします。

ADD SCHEMATRANDATA scott

次の例は、scottという名前のスキーマの現在および将来のすべての表の、すべてのサポートされるキーおよびキーではない列をログに記録します。

ADD SCHEMATRANDATA scott ALLCOLS

次の例では、追加の表情報の処理を抑制します。

ADD SCHEMATRANDATA acct NOVALIDATE