はじめに
Oracle GoldenGate 23ai でレプリケーション環境を構築するケースでは、Database への最小サプリメンタル・ロギングに加えてスキーマ、あるいは表レベルのサプリメンタル・ロギングを行います。(推奨はスキーマ)
この時、GoldenGate 23ai の 管理サービス (GUI) から TRANDATA情報+で実行する場合が多いと思いますが、その確認操作まわりを実施してみたいと思います。
デプロイメントの準備とTRANDATA情報+まで
Oracle GoldenGate 23ai for Oracle 簡易インストール をご参照下さい。
(デプロイメント作成後の管理サービス・ホーム画面)
・ TRANDATA情報 + から SCOTT スキーマレベルのサプリメンタル・ロギング設定をします。
用意された表の数が5となっています。
scott@PDBTK> select TABLE_NAME from user_tables;
TABLE_NAME
--------------------
DEPT
EMP
BONUS
SALGRADE
GALAXIES 👈
これは、Vector型のレプリケーションを試した際に、GALAXIES表を作成したためです。
ちなみにスキーマレベルでTRANDATAしている場合、GALAXIES表は作成直後からサプリメンタル・ロギング対象となります。
Oracle GoldenGate 23ai による Vector 型のレプリケーションについてを参照して下さい。
AdminClient から TRANDATA情報を取得する
GoldenGate 23ai S/Wには AdminClient (管理クライアント)というコマンド・ラインI/Fがあります。GoldenGate が Microservice Architecture (Edition)へ完全移行する前に存在していた ggsciというツールに類似するものです。
・ AdminClient の起動
[oracle@ggtest bin]$ cd /u01/app/oracle/product/goldengate/23ai/bin
[oracle@ggtest bin]$ ./adminclient
Oracle GoldenGate Administration Client for Oracle
Version 23.4.1.24.05 OGGCORE_23.4.0.0.0OGGR_LINUX.X64_240529.0500_FBO
Copyright (C) 1995, 2024, Oracle and/or its affiliates. All rights reserved.
Linux, x64, 64bit (optimized) on May 29 2024 09:21:59
オペレーティング・システムの文字セットはUTF-8と識別されました。
OGG (接続されていません) 1>
OGG (接続されていません) 1>connect http://ggtest:9001 DEPLOYMENT dep01 as ggadmin PASSWORD パスワード <return>
PDBに接続し、EMP表のサプリメンタル・ロギングの状況を確認します。
OGG (http://ggtest:9001 dep01) 2> DBLOGIN USERIDALIAS PDB
データベースに正常にログインしました。
OGG (http://ggtest:9001 dep01 as PDB@ORCL235) 8> INFO TRANDATA scott.EMP <return>
表SCOTT.EMPのサプリメンタル・トランザクション・ログ・データのロギングは有効です。
表SCOTT.EMPの論理レプリケーションは有効化されています。
表SCOTT.EMPの列が補足的にログに記録されます:
- "EMPNO"
表SCOTT.EMPの準備済CSN: 3917223
表SCOTT.EMPのJSONの部分更新が無効化されています
サプリメンタル・ロギングが有効である事に加え、準備済(Instantiation) CSN 値が表示されます。これは、初期データ・ロードの際に使用されるSCNになります。(GoldenGateだとCSNと表記される)
GUIからの ADD (SCHEMA)TRANDATA が正常に処理できた事が確認できました。
Oracle Database 21c 新機能 - LOGICAL REPLICATION
GoldenGateによる ADD (SCHEMA)TRANDATA と同等な機能として、Oracle Database 21c から実装されたDLLにLOGICAL REPLICATION句があるので、ここで試してみます。
Oracle 21cのマニュアル・リンクはこちら
これは表定義に対してENABLE LOGICAL REPLICATION を付加する事でGoldenGate による論理的なレプリケーションが可能なスキーマ・オブジェクトとして作成または変更できる機能です。以下サンプルです。
SQL>Create table foo
(
pk_col number primary key,
b varchar(200)
)
enable logical replication; 👈
表が作成されました。
scott@PDBTK> select TABLE_NAME from user_tables;
TABLE_NAME
--------------------
DEPT
EMP
BONUS
SALGRADE
FOO 👈
GALAXIES
先ほどと同様にAdminClient から状況を確認します。
OGG (http://ggtest:9001 dep01 as PDB@ORCL235) 10> INFO TRANDATA scott.foo
表SCOTT.FOOのサプリメンタル・トランザクション・ログ・データのロギングは有効です。
表SCOTT.FOOの論理レプリケーションは有効化されています。
表SCOTT.FOOの列が補足的にログに記録されます:
- "PK_COL"
表SCOTT.FOOの準備済CSN: 13780348
表SCOTT.FOOのJSONの部分更新が無効化されています
参考までに、以下でサプリメンタル・ロギングを止める事もできます。
scott@PDB>Alter table 表名 disable LOGICAL REPLICATION;
Oracle Database ディクショナリによる確認
AdminClient は PDBに接続して情報を収集していますが、SQL*PlusやSQL Developer などの標準的なツールでディクショナリを検索する事でも確認が可能です。
・ DBA_CAPTURE_PREPARED_TABLES
sys@ORCL235> select * from dba_capture_prepared_tables;
TABLE_OWNER TABLE_NAME SCN TIMESTAM SUPPLEME SUPPLEME SUPPLEME SUPPLEME PARTIAL_
-------------------- -------------------- ---------- -------- -------- -------- -------- -------- --------
SCOTT BONUS 3917218 24-07-19 NO NO NO NO DISABLED
SCOTT DEPT 3917220 24-07-19 NO NO NO NO DISABLED
SCOTT EMP 3917223 24-07-19 NO NO NO NO DISABLED
SCOTT SALGRADE 3917226 24-07-19 NO NO NO NO DISABLED
SCOTT GALAXIES 3976630 24-07-22 NO NO NO NO DISABLED
SCOTT FOO 13780348 24-08-20 NO NO NO NO DISABLED
・ DBA_OGG_AUTO_CAPTURED_TABLES
sys@ORCL235> select* from SYS.DBA_OGG_AUTO_CAPTURED_TABLES;
OWNER NAME ALLOW_NOVALIDATE_PK
-------------------- -------------------- ----------------------------
SCOTT DEPT NO
SCOTT EMP NO
SCOTT BONUS NO
SCOTT SALGRADE NO
SCOTT GALAXIES NO
SCOTT FOO NO
・ USER_OGG_AUTO_CAPTURED_TABLES (scott から)
scott@PDB> select * from USER_OGG_AUTO_CAPTURED_TABLES;
NAME ALLOW_NOVALIDATE_PK
-------------------- --------------------------------
BONUS NO
DEPT NO
EMP NO
FOO NO
GALAXIES NO
SALGRADE NO
最後に
ここでの内容は、あまり表立って話題になるケースは少ないかも知れません。が、GoldenGate による論理的なレプリケーション環境を構築する際には重要です。特定の表だけがレプリケーションに失敗するなどの状況においては、まず調査すべき内容かも知れません。また、ADD (SCHEMA)TRANDATAで表に対する準備済CSNが付加される仕組みは別途まとめたいと考えています。