表からの競合検出および解消の削除
Oracle Database 23ai以降では、AUTO_CDR
が削除されるとAUTO_CDR
関連の列がUNUSED
とマークされるため、表から完全に自動競合検出および解決(ACDR)を削除すると、表への影響が少なくなります。
REMOVE_AUTO_CDR
プロシージャをコールした後、メンテナンス・ウィンドウで未使用列を手動で削除できます。これは、ALTER TABLE ... DROP COLUMN
操作がリソースを大量に消費する大規模な表の場合に役立ちます。
REMOVE_AUTO_CDR
プロシージャのコール時にすべてのAUTO_CDR
内部列をすぐに削除する場合は、最初にADD_AUTO_CDR
またはALTER_AUTO_CDR
プロシージャのadditional_options
パラメータREMOVE_HIDDEN_COLUMNS
を使用して表をマークする必要があります。
DBMS_GOLDENGATE_ADM
パッケージのREMOVE_AUTO_CDR
プロシージャを使用して、表をUNUSED
としてタグ付けし、ブロックを最小限に抑えます。後のステージで、列を削除するか、列を保持するかを選択できます。
- Oracle GoldenGate管理者としてインバウンド・サーバー・データベースに接続します。
REMOVE_AUTO_CDR
プロシージャを実行して表を指定します。- 表をレプリケートする各Oracle Databaseに対して前述のすべてのステップを繰り返します。
例9-28 表の競合検出および解決の削除
この例では、HR.EMPLOYEES
表の競合検出および解決を削除します。
BEGIN
DBMS_GOLDENGATE_ADM.REMOVE_AUTO_CDR(
SCHEMA_NAME => 'HR',
TABLE_NAME => 'EMPLOYEES');
END;
/
列を削除するには、ADD_AUTO_CDR.REMOVE_HIDDEN_COLUMNS
フラグをADD_AUTO_CDR
プロシージャのadditional_flags
パラメータとして使用します。
表内の非表示列の表示に使用できる例を次に示します。
DBA_UNUSED_COL_TABS
パッケージを使用して、EMPLOYEES
表に未使用列があるかどうかを判断します。
SELECT OWNER, TABLE_NAME, COUNT
FROM DBA_UNUSED_COL_TABS
WHERE OWNER = 'HR'
AND TABLE_NAME = 'EMPLOYEES'
ORDER BY OWNER, TABLE_NAME;
OWNER TABLE_NAME COUNT
-------- ------------ ----------
HR EMPLOYEES 1
EMPLOYEES
表の列グループに対してACDRが削除されたときにシステムによってタグ付けされた非表示列をリストします。SELECT OWNER, TABLE_NAME, COLUMN_ID, COLUMN_NAME, DATA_TYPE, HIDDEN_COLUMN
FROM DBA_TAB_COLS
WHERE OWNER = 'HR'
AND TABLE_NAME = 'EMPLOYEES'
AND HIDDEN_COLUMN = 'YES' AND USER_GENERATED= 'NO'
ORDER BY OWNER, TABLE_NAME, COLUMN_ID;
OWNER TABLE_NAME COLUMN_ID COLUMN_NAME DATA_TYPE HIDDEN_COLUMN
------------ ------------ ---------- ------------- ------------ ---------------
HR EMPLOYEES SYS_C00014_22092220:30:52$ TIMESTAMP(6) YES