表からの競合検出および解消の削除

Oracle Database 23c以降では、表から自動競合検出および解決(ACDR)を完全に削除すると、ACDR関連の列がUNUSEDとマークされるため、表への影響が少なくなります。

DBMS_GOLDENGATE_ADMパッケージのREMOVE_AUTO_CDRプロシージャを使用して、表をUNUSEDとしてタグ付けし、ブロックを最小限に抑えます。後のステージで、列を削除するか、列を保持するかを選択できます。

例については、「列グループの削除」を参照してください。

  1. Oracle GoldenGate管理者としてインバウンド・サーバー・データベースに接続します。
  2. REMOVE_AUTO_CDRプロシージャを実行して表を指定します。
  3. 表をレプリケートする各Oracle Databaseに対して前述のすべてのステップを繰り返します。

例8-15 表の競合検出および解決の削除

この例では、HR.EMPLOYEES表の競合検出および解決を削除します。

BEGIN
  DBMS_GOLDENGATE_ADM.REMOVE_AUTO_CDR(
    SCHEMA_NAME => 'HR',
    TABLE_NAME  => 'EMPLOYEES');
END;
/

ADD_AUTO_CDR.REMOVE_HIDDEN_COLUMNSプロシージャを使用して非表示列を表示および削除することで、列を削除できます。

表内の非表示列の表示に使用できる例を次に示します。

次の問合せでは、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