ADD SCHEMATRANDATA
Oracleで有効です。
ADD SCHEMATRANDATAでは、表のスキーマレベルのサプリメンタル・ロギングを有効化します。ADD SCHEMATRANDATAは、指定されたスキーマの現在および将来のすべての表で動作して、Oracle GoldenGateが行識別のために必要とする使用可能なキーのスーパーセットを自動的に記録します。
ノート: Oracle GoldenGate 23.6では、JSONリレーショナル二面性ビュー(JSON DV)およびJSONコレクション表(JCT)のスキーマ・レベルでの論理レプリケーションの有効化はサポートされていません。
マルチテナント・データベースのPDBのスキーマに対してADD SCHEMATRANDATAを実行するには、PDBにログインしてコマンドを発行する必要があります。
ADD SCHEMATRANDATAはExtractで有効で、次を実行します:
-
CREATE TABLEで作成された新しい表にOracleサプリメンタル・ロギングを有効化する。 -
列を追加または削除する
ALTER TABLEの影響を受けた表のサプリメンタル・ロギングを更新する。 -
名前が変更された表のサプリメンタル・ロギングを更新します。
-
一意キーや主キーが追加または削除された表のサプリメンタル・ロギングを更新します。
-
表の自動取得が有効になります。このコマンドにより、スキーマ・レベルのPK、UI、FK、ALLKEYSサプリメンタル・ロギング・データが追加されます。
デフォルトでは、ADD SCHEMATRANDATAは次の優先順位で表のキー列を記録します:
-
主キー
-
主キーが存在しない場合、表のすべての一意キー(無効、使用不可または非表示のキーを含む)。ADTメンバー列を含む一意キーも記録されます。仮想列(ファンクション索引)の一意キーのみが記録されません。
-
前述のものがすべて存在しない場合、表のすべてのスカラー列が記録されます。(システム生成の行OIDは常に記録されます。)
ADD SCHEMATRANDATAは、統合Replicatを使用するための条件または無条件のロギング要件もサポートします。
次の場合は、ADD SCHEMATRANDATAを使用します。
-
統合取得用に構成するExtractグループの一部であるすべての表を対象とする場合。
ADD SCHEMATRANDATAは、すべてのキーを記録することにより、適切なキーが記録されていることを保証します。 -
統合Replicatグループで処理されるすべてのソース表を対象とする場合。異なる適用サーバーを通じて処理されるリレーショナル表間の依存性の計算をサポートするために、主キー、一意キーおよび外部キーのロギングを有効にするオプションが提供されます。
-
DDLレプリケーションがアクティブで、DMLが新しい表の作成またはキー列の変更を行うDDLと同時に発生する場合。これは、DDLがオブジェクトに発行された直後にDMLがそれらのオブジェクトに適用されるシナリオを処理する場合に最適です。
ADD SCHEMATRANDATAによって、各DDL操作に対して適切なキー値がREDOログに原子的に記録されるため、Extract処理でラグがあっても、ログからの取得時にDMLのメタデータ継続性が保証されます。
UsingADD SCHEMATRANDATAのデータベース・レベルのロギング要件
Oracle GoldenGateを使用する場合、ソース・データベースを強制ロギング・モードに移行し、データベース・レベルで最小サプリメンタル・ロギングを有効にすることを強くお薦めします。これにより、更新操作でREDOログに行連鎖情報(存在する場合)が追加されます。
UsingADD SCHEMATRANDATAのその他の考慮事項
-
ADD SCHEMATRANDATAを使用する前に、DBLOGINコマンドを発行します。コマンドを発行するユーザーには、Oracle Streams管理者権限を付与する必要があります。EXEC DBMS_STREAMS_AUTH.GRANT_ADMIN_PRIVILEGE('*GGADMIN*') -
DDLレプリケーションが有効化されていない場合、
ADD TRANDATAコマンドのかわりにADD SCHEMATRANDATAを使用できます。ただし、表に主キーがなく、複数の一意キーがある場合、ADD SCHEMATRANDATAによってデータベースのすべての一意キーが記録されることに注意してください。このような場合、ADD SCHEMATRANDATAによって、データベースはADD TRANDATAの場合よりも多くのREDOデータを記録します。余分なロギングを回避するには、可能であれば一意キーの1つを主キーに指定します。 -
1つの主キーがあるか、1つの一意キーがあるか、キーがない表の場合、
ADD SCHEMATRANDATAでは、ADD TRANDATAと比較して、追加のロギング・オーバーヘッドはありません。 -
PDB内のスキーマに
SCHEMATRANDATAを追加する場合、DBLOGIN内のそのPDBにログインしている必要があります。たとえば、PDBEASTおよびスキーマHRの場合は、次のコマンドを使用します:ADD SCHEMATRANDATA pdbeast.hr -
FILTER文、およびTABLEパラメータとMAPパラメータのKEYCOLS句に必要な列など、Oracle GoldenGateで使用するために特定の表の追加の非キー列を記録する必要がある場合、これらの列に対してADD TRANDATAコマンドを発行します。このコマンドには、列の表レベルのサプリメンタル・ロギングを発行するためのCOLSオプションがあり、ADD SCHEMATRANDATAとともに使用できます。
構文
ADD SCHEMATRANDATA schema
{
[ALLOWNONVALIDATEDKEYS]
[NOSCHEDULINGCOLS | ALLCOLS]}
[NOVALIDATE]
[PARTIALJSON]
[PREPARECSN {WAIT | LOCK | NOWAIT | NONE}]
schema
補足キー情報を記録するスキーマ。ワイルドカードは使用しないでください。マルチテナント・コンテナ・データベースが複数のプラガブル・データベースにあるスキーマにADD SCHEMATRANDATAを発行するには、DBLOGINを使用して各プラガブル・データベースに個別にログインしてから、ADD SCHEMATRANDATAを発行しますルート・コンテナから、コンテナ接頭辞のADD SCHEMATRANDATA [pdb_name].schemaを使用してschematrandtaを追加できます
cdb$rootからコマンドを実行する場合は、データベース側で次のユーザー権限も設定していることを確認してください:
ALTER USER userID SET CONTAINER_DATA = ALL CONTAINER = CURRENT;
ALLOWNONVALIDATEDKEYS
サプリメンタル・ロギングの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の主キー、一意キーおよび外部キーは、依存性を計算するためにインバウンド・サーバーですべて使用できる必要があります。
auto_captureを有効にする場合は、このオプションを使用しないでください。これにより、表がレプリケーションに対して明示的に除外/無効化されていないかぎり(TABLEEXCLUDE、DELETE TRANDATA、またはALTER TABLE DISABLE LOGICAL REPLICATION DDLなどによって)このスキーマ内の表を自動取得できます。
ALLCOLS
指定されたスキーマの現在および将来のすべての表で、サポートされるすべてのキー列および非キー列の無条件サプリメンタル・ロギングを有効にします。このオプションにより、依存性を計算するために必要なキーに加え、フィルタリング、競合解決または他の目的のために必要な列のロギングが有効になります。LOB、LONG、ADTなどの列は含まれません。
NOVALIDATE
ADD SCHEMATRANDATAでサポートされるすべてのデータベースに有効。
処理中の表に関する追加情報がADD SCHEMATRANDATAで処理されないようにします。デフォルトでは、このオプションは有効になっています。追加情報の処理によりコマンド・レスポンスに対する経過時間が発生するため、このオプションを使用してレスポンス時間を向上できます。
PARTIALJSON
Oracleで有効です。
スキーマ・レベルで部分的なJSON更新がフェッチされます。有効にすると、REDOに部分的なJSONレコードが含まれます。
TRANLOGOPTIONS FETCHPARTIALJSONパラメータも参照してください。
PREPARECSN {WAIT | LOCK | NOWAIT | NONE}
DMLとDDLの両方についてOracleで有効です。
Oracle Data Pump Exportダンプ・ファイルがインスタンス化CSNを含むように、ソースの表を自動的に準備します。Replicatは、(インポート時の) Oracle Data Pumpで設定される表単位のインスタンス化CSNを使用して、トレイル・レコードを除外します。ターゲットでは、データ・ポンプ・インポートによってDBOPTIONS ENABLE_INSTANTIATION_FILTERINGパラメータを使用してシステム表およびビューにインスタンス化SCNが移入されて、表レベルのインスタンス化フィルタリングが有効になります。
WAIT
処理中のトランザクションを待機して表のインスタンス化を準備します。
LOCK
(表のインスタンス化を準備するために)表をロックします。
NOWAIT
デフォルトの動作で、インスタンス化の準備は即座に行われます。
NONE
インスタンス化の準備は発生しません。
例
次の例は、スキーマhrに対するサプリメンタル・ロギングを有効にします。
ADD SCHEMATRANDATA hr
次の例では、hrというスキーマの現在および将来のすべての表で、サポートされているすべてのキー列および非キー列を記録します。
ADD SCHEMATRANDATA hr ALLCOLS
次の例では、追加の表情報の処理を抑制します。
ADD SCHEMATRANDATA hr NOVALIDATE