Oracle DDLのオブジェクトと操作のサポートの詳細
DDL操作の取得とレプリケーションについてOracle GoldenGateでサポートされるOracleオブジェクトと操作について学習します。
Oracle DDLでサポートされているオブジェクトおよび操作
DDLキャプチャのサポートは、データベース・ログマイニング・サーバーに統合されています。データベース・パラメータの互換性は11.2.0.4.0以上に設定する必要があります。Extractは次のようなパスワード・ベースの列の暗号化を含むDDLをサポートします。
-
CREATE TABLE t1 (a number, b varchar2(32) ENCRYPT IDENTIFIED BY my_password); -
ALTER TABLE t1 ADD COLUMN c varchar2(64) ENCRYPT IDENTIFIED BY my_password;
DDLサポートに関して、Extractに次の追加の文が適用されます。
-
Oracle GoldenGateのすべてのトポロジ構成は、Oracle DDLレプリケーションでサポートされています。
-
Oracle DDLのアクティブ/アクティブ(双方向)レプリケーションは、同一のメタデータが含まれている2つ(および2つだけ)のデータベース間でサポートされています。
-
Oracle GoldenGateでは、次のオブジェクトでDDLがサポートされます。
-
クラスタ
-
ディレクトリ
-
関数
-
索引
-
パッケージ
-
プロシージャ
-
テーブル
-
表領域
-
ロール
-
シーケンス
-
シノニム
-
トリガー
-
タイプ
-
ビュー
-
マテリアライズド・ビュー
-
ユーザー
-
非表示の列
-
-
Oracle DDLの Oracle Edition-Based Redefinition (EBR)データベース・レプリケーションは、次のOracle AI Databaseオブジェクトに対するExtractでサポートされています。
-
関数
-
ライブラリ
-
パッケージ(仕様と本体)
-
プロシージャ
-
シノニム
-
型(仕様と本体)
-
ビュー
-
-
Oracle GoldenGate 21c以降、サイズが4MBを超えるDDLにレプリケーション・サポートが提供されます。
-
Oracle GoldenGate 23ai以降では、SQLドメインがサポートされています。
-
Oracle GoldenGateでは、行サイズが4MB未満の場合に4000列の表を管理できます。
-
Oracle GoldenGateは、グローバル一時表(GTT) DDL操作をレプリケートできるように、Extractへのこの操作の表示をサポートしています。この操作はデフォルトでは設定されていないため、有効にするには
DDLOPTIONSパラメータを設定する必要があります。 -
Oracle GoldenGateは、
NOUSERIDおよびTRANLOGOPTIONS GETCTASDMLとともに使用するディクショナリをサポートしています。これは、Extractは、ディクショナリ・オブジェクトを問い合せることなく、LogMinerディクショナリからオブジェクト・メタデータを受信することを意味します。ソース・データベースの互換性パラメータが11.2.0.4以上である場合、Oracle GoldenGateは自動的にディクショナリを使用します。Oracle GoldenGateリリース12.2.xでディクショナリおよび証跡形式を使用する場合、Oracle Databaseリリースが12.1.0.2より前の場合は、Extractがマイニング・データベースにLogminerパッチを適用する必要があります。
-
Oracle GoldenGateは、Extractでの非表示列のレプリケーションをサポートしています。証跡フォーマット・リリース12.2が必要です。Replicatでは、
MAPINVISIBLECOLUMNSパラメータを指定するか、MAPパラメータのCOLMAP句で非表示列に明示的にマップする必要があります。SOURCEDEFSまたはTARGETDEFSを使用する場合、Oracle表の定義ファイルのメタデータ・フォーマットは証跡フォーマットと互換性があることが必要です。メタデータ・フォーマット12.2は証跡フォーマット12.2と互換性があり、12.2より前のメタデータ・フォーマットは12.2より前の証跡フォーマットと互換性があります。定義ファイルのメタデータ・フォーマットを指定するには、DEFGENで定義ファイルを生成するときに、DEFSFILEパラメータのFORMAT RELEASEオプションを使用します。 -
ネームスペースのコンテキストを作成するDDL文(
CREATE CONTEXT)は、Extractによってキャプチャされ、Replicatによって適用されます。 -
ポンプ・モードのExtractは、次のDDLオプションをサポートしています。
-
DDL INCLUDE ALL -
DDL EXCLUDE ALL -
DDL EXCLUDE OBJNAME
DDL EXCLUDEのSOURCECATALOGおよびALLCATALOGオプションもサポートされています。DDLパラメータが指定されていない場合、すべてのDDLが証跡に書き込まれます。
DDL EXCLUDE OBJNAMEが指定されている場合は、オブジェクト所有者が除外ルールに一致しないと証跡に書き込まれます。 -
-
Oracleデータベース21c以降では、Oracle GoldenGateによってレプリケートされないDML/DDLの変更のブロックをサポートするために、次のDDLを使用できます。
ALTER DATABASE [ENABLE | DISABLE] goldengate blocking mode;Oracle GoldenGateのブロック・モードが有効な場合、表で
support_mode NONEを使用して、サポートされていないOracle PL/SQL文を実行するDMLは、次のエラーで失敗します。ORA-26981: "operation was unsupported during Oracle GoldenGate blocking mode"Oracleデータベース21cの場合は、次の機能により、Oracle GoldenGateで表に
support_mode NONEが設定されます。-
ADT列または型指定表の属性としての
BFILE -
スカラーのない表
-
OLAP AW$表
-
シャード・キュー表
-
ソートされたハッシュ・クラスタ表
-
リレーショナル表のADT属性に対する主キー制約
-
長い(4000バイトを超える)
raw/varcharに対する主キー/一意キー制約 -
V$DATABASE列、Goldengate_Blocking_Modeを問い合せると、現在のブロック・モードのステータスを確認できます。
-
-
DDL自動取得モードの場合:
-
Extractは
TABLEおよびTABLEEXCLUDEパラメータに基づいてDDLを取得するため、DDL INCLUDE MAPPEDにのみ関連します。 -
自動取得できるのは、表関連のDDLのみです。
-
表レベルで自動取得を有効にするDDL:
CREATE/ALTER TABLE ... ENABLE LOGICAL REPLICATION ALLKEYS;
または
<pre class="copy"><code>CREATE/ALTER TABLE ... ENABLE LOGICAL REPLICATION ALLOW NOVALIDATE KEYS;</code></pre>Oracle AI DatabaseユーティリティのOracle GoldenGateのサプリメンタル・ロギングの取得方法を参照してください。
-
-
次の操作は、パーティション関連のDDLとパーティション・メンテナンス操作でサポートされます。
- パーティションの削除:
同じ名前でパーティションが再作成されると、新しいオブジェクト番号が取得されます。内部キャッシュは、パーティション削除DDLの処理時に、領域の消費量が最小限になるようにクリアされます。
- 切り捨てるパーティション:
パーティション名とオブジェクト番号は同じままです。元表のオブジェクト・バージョンは同じままです。
- パーティション名の変更:
パーティション・オブジェクト番号は同じままですが、新しい名前が付与されます。実表のオブジェクト・バージョンがバンプされます。メモリー内の名前キャッシュは、このDDLが確認されると無効になり、次のDML時に再移入されます。特定のパーティション・オブジェクト番号が重要かどうかを格納するキャッシュは、新しいパーティション名がフィルタ処理済からフィルタ処理なしに切り替わる可能性があるため、再評価する必要もあります。
- 交換パーティション:
パーティション内のデータを表内のデータと交換します(またはその逆に交換します)。交換されるパーティションのオブジェクト番号は変更されません。データ・オブジェクト番号は変更されますが、Extractでは使用しません。パーティション自体は引き続き同じ表に属します。
- パーティションをマージ:
1つ以上のパーティションを新しいパーティションにマージします。DDLによって新しいパーティションが作成され、マージ元のパーティションが削除されます。メモリー内のキャッシュは領域を節約するためにクリアする必要があり、ユーザーはフィルタ・ルールが新しく作成されたパーティションに対して適切なことを確認する必要があります。
- 分割パーティション:
分割されるパーティションには元の名前とオブジェクト番号が保持され、分割されたデータのための新しいパーティションが作成されます。ユーザーは、パーティションのフィルタ・ルールが新しく作成されたパーティションに適していることを確認する必要があります。
- パーティションの結合:
ハッシュ・パーティション表のパーティション数を減らします。結合される特定のパーティションはデータベースにより選択され、コンテンツの再配布後に削除されます。残存するパーティションでは、同じ名前とオブジェクト番号が維持されます。内部キャッシュは、領域の消費量が最小限になるようにクリアする必要があります。
- パーティションの変更:
リスト・パーティションの値の追加または削除とは別に、パーティションのデフォルトの属性と実際の属性を変更します。すべての変更で、パーティション名とオブジェクト番号は維持されます。
- パーティションの移動:
パーティション・データが新しい表領域に移動されます。パーティション名と番号は同じままです。
- 表の再定義:
dbms_redefinitionは、暫定表を使用して表をパーティション化するために使用できます。パーティションは暫定表に作成され、finish_redef操作後に表の名前がスワップされる。暫定表に作成されたパーティションでは、表のスワップ時に名前とオブジェクト番号が保持されます。パーティションは元表に属するようになっているため、Extractフィルタ・キャッシュはfinish_redef時に再評価する必要があります。ユーザーはフィルタ・ルールが適切なことを確認する必要があります。- パーティションの再定義:
表を再定義する場合、パーティションは元の表から暫定表に引き継がれます。たとえば、元の表には
USER表領域に存在するパーティションがあり、暫定表がパーティションなしで作成され、その表がNEW表領域に存在する場合について考えてみます。この場合、finish_redef操作後に、表がスワップされたときにもパーティションは引き続きUSER表領域に存在します。再定義パーティションによって、パーティションを暫定表のNEW表領域に移動できるようになります。パーティションの名前とオブジェクト番号は維持されます。- システム生成のパーティション名:
ハッシュ・パーティションや分割パーティションなどの操作に対してパーティションが自動的に作成される場合、パーティション名の形式は
SYS_P sequence valueです。同様に、サブパーティションの形式はSYS_SUBP sequence valueです。フィルタ・ルールに準拠するDMLを除外する前に、このパーティション名の変更をお薦めします。
サポートされていないOracle DDLのオブジェクトおよび操作
ここでは、Oracle DDLでサポートされていないオブジェクトと操作を示します。
除外されるオブジェクト
次の名前または名前の接頭辞はOracle予約済とみなされ、Oracle GoldenGate DDL構成から除外する必要があります。これらの名前を含むオブジェクトはOracle GoldenGateによって無視されます。
除外されたスキーマ:
"ANONYMOUS", // HTTP access to XDB
"APPQOSSYS", // QOS system user
"AUDSYS", // audit super user
"BI", // Business Intelligence
"CTXSYS", // Text
"DBSNMP", // SNMP agent for OEM
"DIP", // Directory Integration Platform
"DMSYS", // Data Mining
"DVF", // Database Vault
"DVSYS", // Database Vault
"EXDSYS", // External ODCI System User
"EXFSYS", // Expression Filter
"GSMADMIN_INTERNAL", // Global Service Manager
"GSMCATUSER", // Global Service Manager
"GSMUSER", // Global Service Manager
"LBACSYS", // Label Security
"MDSYS", // Spatial
"MGMT_VIEW", // OEM Database Control
"MDDATA",
"MTSSYS", // MS Transaction Server
"ODM", // Data Mining
"ODM_MTR", // Data Mining Repository
"OJVMSYS", // Java Policy SRO Schema
"OLAPSYS", // OLAP catalogs
"ORACLE_OCM", // Oracle Configuration Manager User
"ORDDATA", // Intermedia
"ORDPLUGINS", // Intermedia
"ORDSYS", // Intermedia
"OUTLN", // Outlines (Plan Stability)
"SI_INFORMTN_SCHEMA", // SQL/MM Still Image
"SPATIAL_CSW_ADMIN", // Spatial Catalog Services for Web
"SPATIAL_CSW_ADMIN_USR",
"SPATIAL_WFS_ADMIN", // Spatial Web Feature Service
"SPATIAL_WFS_ADMIN_USR",
"SYS",
"SYSBACKUP",
"SYSDG",
"SYSKM",
"SYSMAN", // Adminstrator OEM
"SYSTEM",
"TSMSYS", // Transparent Session Migration
"WKPROXY", // Ultrasearch
"WKSYS", // Ultrasearch
"WK_TEST",
"WMSYS", // Workspace Manager
"XDB", // XML DB
"XS$NULL",
"XTISYS", // Time Index
特別なスキーマ:
"AURORA$JIS$UTILITY$", // JSERV
"AURORA$ORB$UNAUTHENTICATED", // JSERV
"DSSYS", // Dynamic Services Secured Web Service
"OSE$HTTP$ADMIN", // JSERV
"PERFSTAT", // STATSPACK
"REPADMIN",
"TRACESVR" // Trace server for OEM
除外される表は次のとおりです(*ワイルドカードは任意のスキーマまたは文字を示します)。
"*.AQ$*", // advanced queues
"*.DR$*$*", // oracle text
"*.M*_*$$", // Spatial index
"*.MLOG$*", // materialized views
"*.OGGQT$*",
"*.OGG$*", // AQ OGG queue table
"*.ET$*", // Data Pump external tables
"*.RUPD$*", // materialized views
"*.SYS_C*", // constraints
"*.MDR*_*$", // Spatial Sequence and Table
"*.SYS_IMPORT_TABLE*",
"*.SYS_EXPORT_TABLE*",
"*.CMP*$*", // space management, rdbms >= 12.1
"*.DBMS_TABCOMP_TEMP_*", // space management, rdbms < 12.1
"*.MDXT_*$*" // Spatial extended statistics tables
サポートされていないその他のDDL
Oracle GoldenGateでは次のものはサポートされていません。
-
ネストされた表に対するDDL。
-
IDENTITY列に対するDDL。
-
ALTER DATABASEおよびALTER SYSTEM(これらはDDLとはみなされません)。ディクショナリを使用している場合は、ALTER DATABASE DEFAULT EDITIONおよびALTER PLUGGABLE DATABASE DEFAULT EDITIONをレプリケートできます。その他のALTER [PLUGABLE] DATABASEコマンドはすべて無視されます。 -
スタンバイ・データベースに対するDDL。
-
データベース・リンクDDL。
-
FLASHBACK ARCHIVE句を含む表を作成するDDL、またはフラッシュバック・データ・アーカイブ自身を作成、変更または削除するDDL。FLASHBACK ARCHIVEを含む表に対するDMLはサポートされません。 -
一部のDDLでは、システム生成オブジェクト名が生成されます。システム生成オブジェクトの名前は、2つの異なるデータベース間で常に同じであるというとはかぎりません。したがって、システム生成名を持つオブジェクトに対するDDL操作は、ターゲットで名前が完全に同じ場合にのみ実行する必要があります。