全部產品
Search
文件中心

Data Transmission Service:建立Oracle資料訂閱通道

更新時間:Jul 06, 2024

通過資料訂閱功能,您可以即時訂閱源庫的增量資料,輕鬆協助業務實現輕量級緩衝更新、業務非同步解耦、含ETL邏輯的資料即時同步等情境。本文為您介紹如何建立Oracle資料訂閱通道。

前提條件

  • 自建Oracle資料庫的版本為9i、10g、11g版本,且不支援為RAC執行個體。

  • 自建Oracle資料庫已開啟Supplemental Logging,且要求supplemental_log_data_pk,supplemental_log_data_ui已開啟,詳情請參見Supplemental Logging

  • 自建Oracle資料庫已開啟ARCHIVELOG(歸檔模式),設定合理的歸檔日誌保持周期且歸檔日誌能夠被訪問,詳情請參見ARCHIVELOG

注意事項

  • 由於使用gh-ost或pt-online-schema-change等類似工具執行線上DDL變更不會被訂閱到,用戶端在將消費到的資料寫入目標表時可能會因為表結構不一致而導致寫入失敗。
  • 如果訂閱的來源資料庫還處於其他任務中(例如該資料庫還存在於某個正在啟動並執行資料移轉任務中),您可能會訂閱到訂閱對象以外的資料,此類情境中,您需要手動在訂閱用戶端中過濾掉不需要的資料。

準備工作

登入待訂閱的Oracle資料庫,建立用於資料訂閱的資料庫帳號並授予DBA許可權。

重要

如需訂閱增量資料,且不允許授予DBA許可權,您需要按照如下方法開啟歸檔和補充日誌,並為Oracle資料庫帳號授予更精細化的許可權。

  1. 開啟歸檔和補充日誌。

    日誌類型

    開啟步驟

    歸檔日誌

    執行如下命令,開啟歸檔日誌:

    shutdown immediate;
    startup mount;
    alter database archivelog;
    alter database open;
    archive log list;

    補充日誌

    按業務需求,選擇開啟庫層級補充日誌或者表層級補充日誌:

    說明

    開啟庫層級補充日誌,則DTS任務運行更為穩定;開啟表層級補充日誌,則更節約源Oracle資料庫的磁碟空間。

    • 開啟庫層級補充日誌

      1. 開啟最小補充日誌:

        alter database add supplemental log data;
      2. 開啟庫級主鍵、唯一鍵補充日誌:

        alter database add supplemental log data (primary key,unique index) columns;
    • 開啟表級補充日誌

      1. 開啟最小補充日誌:

        alter database add supplemental log data;
      2. 開啟表級補充日誌(兩者選其一) :

        • 開啟表層級主鍵補充日誌

          alter table table_name add supplemental log data (primary key) columns;
        • 開啟表層級全欄位補充日誌

          alter table tb_name add supplemental log data (all) columns ;
  2. 為Oracle資料庫帳號授予更精細化的許可權。

    Oracle 9i~11g版本

    #建立資料庫帳號(以rdsdt_dtsacct為例)並進行授權
    create user rdsdt_dtsacct IDENTIFIED BY rdsdt_dtsacct;
    grant create session to rdsdt_dtsacct;
    grant connect to rdsdt_dtsacct;
    grant resource to rdsdt_dtsacct;
    grant execute on sys.dbms_logmnr to rdsdt_dtsacct;
    grant select on V_$LOGMNR_LOGS to rdsdt_dtsacct;
    grant select on all_objects to rdsdt_dtsacct;
    grant select on all_tab_cols to rdsdt_dtsacct;
    grant select on dba_registry to rdsdt_dtsacct;
    grant select any table to rdsdt_dtsacct;
    grant select any transaction to rdsdt_dtsacct;
    -- v$log privileges
    grant select on v_$log to rdsdt_dtsacct;
    -- v$logfile privileges
    grant select on v_$logfile to rdsdt_dtsacct;
    -- v$archived_log privileges
    grant select on v_$archived_log to rdsdt_dtsacct;
    -- v$parameter privileges
    grant select on v_$parameter to rdsdt_dtsacct;
    -- v$database privileges
    grant select on v_$database to rdsdt_dtsacct;
    -- v$active_instances privileges
    grant select on v_$active_instances to rdsdt_dtsacct;
    -- v$instance privileges
    grant select on v_$instance to rdsdt_dtsacct;
    -- v$logmnr_contents privileges
    grant select on v_$logmnr_contents to rdsdt_dtsacct;
    -- system tables
    grant select on sys.USER$ to rdsdt_dtsacct;
    grant select on SYS.OBJ$ to rdsdt_dtsacct;
    grant select on SYS.COL$ to rdsdt_dtsacct;
    grant select on SYS.IND$ to rdsdt_dtsacct;
    grant select on SYS.ICOL$ to rdsdt_dtsacct;
    grant select on SYS.CDEF$ to rdsdt_dtsacct;
    grant select on SYS.CCOL$ to rdsdt_dtsacct;
    grant select on SYS.TABPART$ to rdsdt_dtsacct;
    grant select on SYS.TABSUBPART$ to rdsdt_dtsacct;
    grant select on SYS.TABCOMPART$ to rdsdt_dtsacct;

操作步驟

  1. 購買資料訂閱通道,詳情請參見購買流程

    說明

    購買時選擇訂閱執行個體類型Oracle並選擇源執行個體所屬的地區。

  2. 登入資料轉送控制台

  3. 在左側導覽列,單擊資料訂閱

  4. 資料訂閱列表頁面上方,選擇訂閱通道所屬地區。

  5. 定位至已購買的資料訂閱通道,單擊配置訂閱通道

  6. 配置資料訂閱的源庫資訊和網路類型。

    配置源庫資訊和網路類型

    類別

    配置

    說明

    訂閱名稱

    DTS會自動產生一個訂閱名稱,建議配置具有業務意義的名稱(無唯一性要求),便於後續識別。

    源庫資訊

    執行個體類型

    根據源執行個體的類型進行選擇,本文以ECS上的自建資料庫為例介紹配置流程。

    說明

    當自建資料庫為其他執行個體類型時,您還需要執行相應的準備工作,詳情請參見準備工作概覽

    資料庫類型

    固定為Oracle,不可變更。

    執行個體地區

    購買資料訂閱通道時選擇的源執行個體地區,不可變更。

    ECS執行個體ID

    選擇自建Oracle資料庫所屬的ECS執行個體ID。

    連接埠

    填入自建Oracle資料庫的服務連接埠。

    SID

    填入自建Oracle資料庫的SID資訊。

    資料庫帳號

    填入自建Oracle的資料庫帳號。

    說明

    建立及授權方法請參見準備工作

    資料庫密碼

    填入該資料庫帳號對應的密碼。

    消費網路類型

    設定資料訂閱執行個體所屬的網路類型。

    說明
    • 建議配置同部署資料訂閱用戶端的ECS執行個體屬於同一網路。例如ECS是專用網路,那麼此處的網路類型選擇為專用網路並指定ECS所屬的專用網路虛擬交換器

    • 通過內網地址進行資料訂閱時,網路延遲最小。

    • 傳統網路

      如果設定為傳統網路,無需其他配置。關於傳統網路介紹請參見傳統網路

    • 專用網路

      如果設定為專用網路,您還需要選擇專用網路虛擬交換器。關於專用網路介紹請參見專用網路

  7. 上述配置完成後,單擊授權白名單並進入下一步

    如果來源資料庫是阿里雲資料庫執行個體(例如RDS MySQLApsaraDB for MongoDB等),DTS會自動將對應地區DTS服務的IP地址添加到阿里雲資料庫執行個體的白名單;如果來源資料庫是ECS上的自建資料庫,DTS會自動將對應地區DTS服務的IP地址添到ECS的安全規則中,您還需手動在ECS上的自建資料庫中添加對應地區DTS服務的IP地址,以允許來自DTS伺服器的訪問;如果來源資料庫是IDC自建資料庫或其他雲資料庫,則需要您手動添加對應地區DTS服務的IP地址,以允許來自DTS伺服器的訪問。DTS服務的IP地址,請參見DTS伺服器的IP位址區段

    警告 DTS自動添加或您手動添加DTS服務的公網IP位址區段可能會存在安全風險,一旦使用本產品代表您已理解和確認其中可能存在的安全風險,並且需要您做好基本的安全防護,包括但不限於加強帳號密碼強度防範、限制各網段開放的連接埠號碼、內部各API使用鑒權方式通訊、定期檢查並限制不需要的網段,或者使用通過內網(專線/VPN網關/智能網關)的方式接入。
  8. 配置需要訂閱的資料類型和訂閱對象。

    選擇資料類型和訂閱對象

    配置說明
    需要訂閱的資料類型
    • 資料更新

      訂閱已選擇對象的增量資料更新,包含資料的INSERT、DELETE和UPDATE操作。

    • 結構更新

      訂閱整個執行個體所有對象的結構建立、刪除及修改,您需要使用資料訂閱用戶端過濾所需的資料。

    說明
    • 如果選擇整個庫作為訂閱對象,那麼該庫中新增對象的增量資料也可以被訂閱到。
    • 如果選擇某個表作為訂閱對象,那麼只有這個表的增量資料可以被訂閱到。此時如果需要加入一個新的表作為訂閱對象,您需要將其加入至訂閱對象中,詳情請參見修改訂閱對象
    訂閱對象

    訂閱對象框中將想要訂閱的對象選中,單擊向右小箭頭表徵圖將其移動到已選擇對象框。

    說明 訂閱對象支援選擇的粒度為庫、表。
  9. 上述配置完成後,單擊頁面右下角的儲存並預檢查

    說明
    • 在訂閱任務正式啟動之前,會先進行預檢查。只有預檢查通過後,才能成功啟動訂閱任務。

    • 如果預檢查失敗,單擊具體檢查項後的提示,查看失敗詳情。根據提示修複問題後,重新進行預檢查。

  10. 預檢查對話方塊中顯示預檢查通過後,關閉預檢查對話方塊。

    配置完成後,資料訂閱通道會進入初始化階段,該階段一般會持續1分鐘左右。初始化完成後即可進行新增消費組與消費訂閱資料的操作。

後續步驟

  1. 新增消費組

  2. 使用Kafka用戶端消費訂閱資料

  3. 使用SDK範例程式碼消費訂閱資料