②開啓補充日志

  • 文檔創建者:Nikozhan
  • 編輯次數:1
  • 1. 概述

    必須為擷取的表或資料庫啟動補充日誌記錄,以便資料更改能夠擷取已更改的資料庫行之前的狀態。下面將說明如何在表/資料庫級別上配置它。 一般建議對庫進行啟動。

    使用者根據實際的資料庫版本,參考下面文檔進行操作。

    2. Oracle 10g、11g

    使用者根據實際情況,選擇其中一種方案:

    方案說明步驟
    開啟單表補全日誌

    同步某張表時,就需要開啟該表的補全日

    優勢:操作比較精準

    開啟單表的全補充得在運作管道任務前,不然有可能會出現資料丟失

    劣勢:需要一張一張開啟

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;--開啟最小補充日誌
    ALTER TABLE <schema name>.<table name> ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;--為XX表開啟全補充日誌


    開啟全庫補全日誌

    若使用者庫裏的表資料量可控,且希望一勞永逸(不想每同步一張表就開啟一次),可開啟全庫補全日

    劣勢:會佔用較多資料庫空間

    alter database add supplemental log data;
    alter system switch logfile;
    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

    15.png

    3. Oracle 12c、18c、19c、21c、Oracle RAC叢集

    3.1 資料庫是否支援CDB/PDB

    Oracle12c 及之後版本引入了多租使用者環境,其中包含兩個核心概念:容器資料庫-CDB(Container Database)和可插拔資料庫-PDB(Pluggable Database)。

    CDB 是一個包含零個或多個 PDB 的資料庫;PDB 是一個獨立的資料庫,可以插入或拔出 CDB,每個 PDB 都有自己的資料檔案和使用者資料;CDB 管理多個 PDB,PDB 共享 CDB 中的系統資源,但資料和物件是隔離的。

    在使用上二者與非多租戶資料庫實體沒有任何差別,差別主要在於獲取資料變更時,只能從CDB中擷取到,基於此要對其進行適配。

    1)判斷當前連結的資料庫是否是CDB

    以具有 DBA 權限的使用者身分登入資料庫,使用如下命令查看資料庫是否開啟多租戶:

    SELECT CDB FROM V$DATABASE;

    如果查詢結果中的 CDB 列值為 YES,則當前連結的資料庫是容器資料庫(CDB)。如果值為 NO,則當前連結的資料庫是非容器資料庫(非 CDB)

    2)判斷當前連結的是根容器還是 PDB

    SELECT SYS_CONTEXT('USERENV''CON_NAME') FROM DUAL;

    若傳回的是 CDB$ROOT,則表示當前連結的是 CDB 的根容器;若傳回的是其他名稱,則表示當前連結的是 PDB。

    3.2 場景一:非多租戶

    使用以下命令,確認 supplemental logging 是否開啟:

    SELECT supplemental_log_data_min, supplemental_log_data_pk, supplemental_log_data_all FROM v$database;

    1769671638291301.png

    如果傳回的三列都是 Yes 或者 Implicit 

    如果傳回的三列都是 Yes 或者 Implicit ,則表示 identification key logging(標識鍵日誌)和 full supplemental logging(全補充日誌)已同時開啟,可以直接查看第五章資料庫帳號相關內容。

    如果傳回的前兩列是 Yes 或者 Implicit 

    如果傳回的前兩列是 Yes 或者 Implicit,則表示只開啟了 identification key logging(標識鍵日誌),需要開啟全補充日誌。

    單表開啟 full supplemental logging(全補充日誌),使用如下命令:

    ALTER TABLE <schema name>.<table name> ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

    所有表開啟 full supplemental logging(全補充日誌),使用如下命令:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

    提交更改的配置:

    ALTER SYSTEM SWITCH LOGFILE;

    然後可以使用命令查看單表的補全日誌權限是否開啟:

    SELECT OWNER, TABLE_NAME, LOG_GROUP_NAME, ALWAYS, LOGGING_COLUMNS
    FROM DBA_LOG_GROUPS
    WHERE TABLE_NAME = '你的表名';

    3.3 場景二:CDB/PDB

    使用者根據實際情況,選擇其中一種方案:

    方案說明步驟
    開啟單表補全日誌

    同步某張表時,就需要開啟該表的補全日

    優勢:操作比較精準

    開啟單表的全補充得在運作管道任務前,不然有可能會出現資料丟失

    劣勢:需要一張一張開啟

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;    
    ALTER TABLE <schema name>.<table name> ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;


    開啟全庫補全日誌

    若使用者庫裏的表資料量可控,且希望一勞永逸(不想每同步一張表就開啟一次),可開啟全庫補全日

    劣勢:會佔用較多資料庫空間

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;


    4. 後續步驟

    詳情請參見:③讀取資料變更記錄



    附件列表


    主題: 實時管道
    • 有幫助
    • 沒幫助
    • 只是瀏覽
    • 评价文档,奖励 1 ~ 100 随机 F 豆!

    滑鼠選中內容,快速回饋問題

    滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

    不再提示

    10s後關閉

    獲取幫助
    線上支援
    獲取專業技術支援,快速幫助您解決問題
    工作日9:00-12:00,13:30-17:30在线
    頁面反饋
    針對當前網頁的建議、問題反饋
    售前咨詢
    業務咨詢
    電話:0933-790886或 0989-092892
    郵箱:taiwan@fanruan.com
    頁面反饋
    *問題分類
    不能為空
    問題描述
    0/1000
    不能為空

    反馈已提交

    网络繁忙