通過Tapdata Cloud的可視化界面,您可以將Oracle數據實時同步到表格存儲(Tablestore)中。
前提條件
使用Tapdata Cloud同步Oracle數據到表格存儲前,需要完成如下準備工作。
已注冊Tapdata Cloud賬號。
已創建表格存儲實例和表。具體操作,請參見通過控制臺使用。
創建RAM用戶并完成授權。
已創建RAM用戶,并授予RAM用戶管理表格存儲服務的權限(AliyunOTSFullAccess)。具體操作,請參見配置RAM用戶權限。
重要創建RAM用戶時,請選中OpenAPI調用訪問。
已為RAM用戶創建AccessKey。具體操作,請參見創建AccessKey。
背景信息
Tapdata Cloud是由Tapdata提供的集數據復制、數據開發為一體的實時數據服務,能夠在跨云、跨地域、多類型數據源的場景下,提供毫秒級的實時數據同步服務和數據融合服務。更多信息,請參見什么是Tapdata。
注意事項
當前只支持Oracle 9i、10g、11g、12c、19c版本的數據同步。
如果設置了Oracle數據庫的connect_time參數,則可能導致實時同步異常。
您可以通過執行如下命令查看connect_time參數的設置。其中username請設置為數據庫賬號。
、
select resource_name, limit from dba_profiles where profile=( select profile from dba_users where username = 'username');
請為歸檔日志預留足夠的存儲空間,避免由于存儲占滿影響Oracle數據庫的運行。
使用流程
使用Tapdata Cloud將Oracle數據同步到表格存儲的使用流程如下:
配置Oracle數據庫和授權賬號。具體操作,請參見步驟一:配置Oracle數據庫和授權賬號。
在Oracle數據庫所屬機器或相同網絡的機器上部署Tapdata Agent。具體操作,請參見步驟二:部署Tapdata Agent。
Tapdata Agent(簡稱Agent)是數據同步、數據異構、數據開發場景中的關鍵程序,通過流式技術從源端獲取數據、處理轉換數據并發送到目標端。
重要Agent通過流式技術從源端獲取數據、處理轉換數據并發送到目標端,數據不會流經 Tapdata Cloud,也不會上傳和留存您的數據。
使用Tapdata Cloud連接源數據庫和目標數據庫。具體操作,請參見步驟三:連接源數據庫和目標數據庫。
創建數據復制任務用于進行源數據庫到目標數據庫的數據復制。具體操作,請參見步驟四:配置數據復制任務。
步驟一:配置Oracle數據庫和授權賬號
數據同步前,為Oracle數據庫開啟數據庫歸檔模式、開啟補充日志、開啟標識鍵日志、開啟全補充日志以及創建用于數據同步任務的賬號。
以具有DBA權限的用戶身份登錄Oracle數據庫。
開啟數據庫歸檔模式(ARCHIVELOG)。
您可以執行如下命令檢查是否已開啟數據庫歸檔模式。
select log_mode from v$database;
當返回結果為ARCHIVELOG時,表示已經開啟,請跳過此步驟。否則請執行如下步驟開啟。
執行如下命令關閉數據庫。
重要請務必在業務低峰期再進行此操作,避免影響業務正常運行。
shutdown immediate;
執行如下命令啟動并掛載數據庫。
startup mount;
執行如下命令開啟歸檔并打開數據。
alter database archivelog; alter database open;
開啟補充日志(Supplemental Logging),請根據數據庫版本執行相應命令。
數據庫版本
命令
Oracle 9i
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
Oracle 10g
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; ALTER system switch logfile; ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
Oracle 11g
Oracle 12c
執行如下命令,確認是否開啟了補充日志。
SELECT supplemental_log_data_min, supplemental_log_data_pk, supplemental_log_data_all FROM v$database;
當返回結果的前兩列為Yes或Implicit時,表示只開啟了標識鍵日志(Identification Key Logging),您還需要開啟全補充日志(Full Supplemental Logging)。
開啟標識鍵日志。
請根據實際選擇為單個表開啟或者為所有表開啟
為單個表開啟標識鍵日志。
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;
開啟全補充日志。
請根據實際選擇為單個表開啟或者為所有表開啟。
為單個表開啟全補充日志
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; ALTER TABLE <schema name>.<table name> ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
為所有表開啟全補充日志
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
執行如下命令提交變更。
ALTER SYSTEM SWITCH LOGFILE;
創建用于數據同步任務的賬號并授權,請根據數據庫版本執行相應命令。
數據庫版本
命令
Oracle 10g
CREATE USER username IDENTIFIED BY password; GRANT create session, alter session, execute_catalog_role, select any dictionary, select any transaction, select any table, create any table, create any index, unlimited tablespace to user name;
Oracle 11g
Oracle 12c(標準模式)
CREATE USER username IDENTIFIED BY password; GRANT create session, alter session, select any dictionary, select any transaction, logmining, execute_catalog_role, create any table, create any index, unlimited tablespace TO username;
請根據您對表的權限需求,重復執行GRANT命令來賦予SELECT權限。
Oracle 12c(多租戶模式)
重要在Oracle 12c的多租戶模式下創建用戶時,必須在cdb中創建并且命名格式約定為
c##name
。ALTER SESSION SET CONTAINER=cdb$root; CREATE USER username IDENTIFIED BY password CONTAINER=all; GRANT create session, alter session, set container, select any dictionary, select any transaction, logmining, execute_catalog_role, create any table, create any index, unlimited tablespace TO username CONTAINER=all; ALTER SESSION SET CONTAINER=pdb;
請根據您對表的權限需求,重復執行GRANT命令來賦予SELECT權限。
當Oracle數據庫作為源庫時,請使用該用戶來進行JDBC身份驗證。
重要使用該用戶進行JDBC的身份驗證時,必須使用整個用戶名(包含
c##
)作為JDBC連接的用戶名。
步驟二:部署Tapdata Agent
待部署Agent的機器必須能夠訪問互聯網。
由于數據流轉通常對時效性有較高的要求,因此,推薦將Tapdata Agent部署在Oracle數據庫所屬機器或相同網絡的機器中,可極大降低網絡延遲帶來的影響。
此處以Linux操作系統(64位)為例介紹Agent部署流程,如果需要部署到其他平臺(例如Windows、阿里云計算巢),請參見安裝Agent文檔。
在左側導航欄,單擊Agent管理。
在Agent管理頁面,單擊創建Agent。
在Agent下載與安裝對話框,選擇Linux(64 bit),然后根據界面提示進行Agent安裝。
重要安裝前請確認您的部署環境中已安裝JAVA 1.8版本并正確配置環境變量。
登錄到待部署Agent的機器。
執行如下命令創建tapdata目錄用于安裝和部署Tapdata Agent。
mkdir tapdata
單擊界面中的復制,復制步驟3的命令,并在tapdata目錄下執行命令。
說明執行該命令后,Tapdata Agent會自動下載、自動部署以及啟動。
等待命令執行完成,即可完成Tapdata Agent的安裝和啟動。
Tapdata Agent啟動成功的示例如下圖所示。
步驟三:連接源數據庫和目標數據庫
通過Tapdata Cloud連接源數據庫和目標數據庫。
在左側導航欄,單擊連接管理。
連接作為源庫的Oracle數據庫。
在連接管理頁面,單擊創建連接。
在創建連接對話框的認證數據源頁簽,單擊Oracle。
在創建連接頁面,根據下表說明配置數據源參數。
參數
描述
連接名稱
數據連接名稱,請根據實際設置。多個連接的名稱不能相同。
連接類型
支持將Oracle作為源頭或者目標。此處取值為源頭和目標或者源頭。
連接方式
連接Oracle數據庫的方式。取值范圍如下:
SID:數據庫實例名,是數據庫和操作系統交互時用到的名稱。
Service Name:服務名。當數據庫有域名時,Service Name與Global DB Name相同;當數據庫無域名時,Service Name與數據庫名稱相同。
數據庫地址
數據庫連接地址。
端口
數據庫的服務端口。
SID
數據庫實例名。當連接方式選擇為SID時需要配置此參數。
Service Name
服務名。當連接方式選擇為Service Name時需要配置此參數。
Schema
Schema名稱,即一個連接對應一個 Schema。
說明如果需要連接多個Schema,請創建多個數據連接。
其他連接串參數
額外的連接參數,默認為空。
賬號
數據庫的賬號。
密碼
數據庫的密碼。
多租戶模式
如果Oracle為多租戶模式,則打開多租戶模式開關并填寫PDB信息。
日志插件
保持默認值logMiner即可。
時間類型的時區
默認為數據庫所用的時區,您也可以根據業務需求指定。
包含表
要包含的表。取值范圍如下:
全部(默認):包含數據庫中的所有表。
自定義:自定義要包含的表。多個表或表達式之間用半角逗號(,)分隔。表達式支持使用星號(*)表示任意長度的字符。
排除表
從包含表規則匹配到的表中將指定的表排除。
打開排除表開關并設置要排除的表。多個表或者表達式之間用半角逗號(,)分隔。表達式支持使用星號(*)表示任意長度的字符。
agent設置
使用的Agent信息。取值范圍如下:
平臺自動分配(默認):由平臺分配節點進行連接訪問。
用戶手動指定:設置此參數為用戶手動指定后,選擇要使用的Agent。
模型加載頻率
數據源中模型數量大于1萬時,Tapdata Cloud會按此參數設置定期進行模型刷新。
單擊連接測試,測試通過后單擊保存。
說明如果提示連接測試失敗,請根據頁面提示進行修復。
連接作為目標庫的表格存儲。
在連接管理頁面,單擊創建連接。
在創建連接對話框的Beta數據源頁簽,單擊Tablestore。
在創建連接頁面,根據下表說明配置數據源參數。
參數
描述
連接名稱
數據連接名稱,請根據實際設置。
連接類型
固定取值為目標。此數據連接在Tapdata Cloud中只能作為目標使用,不能作為源頭。
服務地址
表格存儲實例的服務地址。更多信息,請參見服務地址。
實例名稱
表格存儲實例的名稱。更多信息,請參見實例。
AccessKey ID
RAM用戶的AccessKey ID和AccessKey Secret。
說明當使用從STS獲取的臨時訪問憑證訪問表格存儲時,請設置為臨時訪問憑證的AccessKey ID和AccessKey Secret。
AccessKey Secret
AccessKey Token
臨時訪問令牌。當使用從STS獲取的臨時訪問憑證訪問表格存儲時,需要設置此參數。
agent設置
使用的Agent信息。取值范圍如下:
平臺自動分配(默認):由平臺分配節點進行連接訪問。
用戶手動指定:設置此參數為用戶手動指定后,選擇要使用的Agent。
模型加載頻率
數據源中模型數量大于1萬時,Tapdata Cloud會按此參數設置定期進行模型刷新。
單擊連接測試,測試通過后單擊保存。
說明如果提示連接測試失敗,請根據頁面提示進行修復。
步驟四:配置數據復制任務
通過配置數據復制任務,可以現同構或者異構數據源間的實時同步,適用于數據遷移、數據同步、數據災備、讀性能擴展等多種業務場景。
在左側導航欄,單擊數據復制。
在數據復制頁面,單擊創建。
在頁面左側,將Oracle和表格存儲數據庫拖拽到右側畫布中,然后將其連接起來。
單擊Oracle數據庫,根據下表說明在右側面板配置參數。
參數
描述
節點名稱
默認為連接名稱,請根據實際設置。
DDL事件采集
暫不支持對表格存儲執行DDL語句同步,無需配置此參數。
選擇表
選擇要復制的表。取值范圍如下:
按表名選擇:按照表名選擇待復制的表。
在待復制表區域選中表,然后單擊圖標完成設置。
您也可以單擊批量選表,輸入多個表名來批量選擇要復制的表。多個表名之間用半角逗號(,)分隔。
按正則表達式進行匹配:使用正則表達式匹配滿足表達式的表作為要復制的表。
使用此方式時,當源庫中新增的表滿足表達式時,該表也會被自動同步到目標庫。
批量讀取條數
全量同步時,每批次讀取的記錄條數,默認值為100。 一般保持默認值即可。
日志連續挖掘
是否開啟日志連續挖掘。默認已開啟。請根據使用的Oracle版本設置。
當Oracle版本低于19c時,建議開啟此開關,延遲更低。
當Oracle版本高于等于19c時,必須關閉此開關。
重要當Oracle版本高于等于19c時,請務必關閉此開關。
日志積壓數量
日志連續挖掘時的最大日志積壓數量。只有當開啟日志連續挖掘開關時才能設置此參數。請根據源端更新頻率設置。
當源端更新頻率較低時,請設置較低的值,延遲更低。
當源端更新頻率較高時,請設置較高的值,吞吐更高。
一般可以按照
源端數據變化QPS/10
計算,建議值為1~1000。挖掘線程數
日志挖掘時,以占用數據庫CPU資源為代價來提高日志挖掘速度。只有當關閉日志連續挖掘開關時才能設置此參數。
建議當源端更新頻率超過1萬時設置,最大不建議超過8。
大事務事件界限
將事務事件定義為大事務的臨界值,默認值為10000。當事務事件超過該數值時會進入大事務邏輯。
重要該值設置過大可能會影響內存。
按照大事務處理后會存在本地磁盤緩存。當復制任務出現異常時,請注意磁盤清理。
關聯鍵更新
是否進行關聯鍵更新。默認已開啟,表示會進行關聯鍵更新。
關閉關聯鍵更新開關可以提升性能,但是關聯鍵的更新會被忽略。
開啟同步LOB類型(BLOB,CLOB,NCLOB)
是否開啟同步LOB類型。默認已開啟,表示會同步LOB類型。
關閉開啟同步LOB類型(BLOB,CLOB,NCLOB)開關可以提升性能,但是LOB類型解析會不可靠。
未提交事務生命時長(分鐘)
未提交事務的最長保留時間,默認值為60。單位為分鐘。
長時間未提交的事務會導致每次啟停任務將從該事務開始挖掘,會影響性能,因此超過該時長未提交的事務將被清理。
單擊Tablestore數據庫,預覽數據結構并設置高級選項。
參數
描述
節點名稱
默認為連接名稱,請根據實際設置。
推演結果
查看表的數據結構(例如字段名稱、字段類型)以及根據需要設置字段類型。
說明如需調整字段類型,單擊目標字段類型中的圖標,然后在彈出的對話框中完成設置。
由于Tablestore單個表的列數量不可超過32個,如果Oracle中待同步表的列數量超過32,您可以在頁面左側拖拽一個字段編輯節點進來,將其作為Oracle和Tablestore的中間節點連接起來,然后在字段編輯節點中屏蔽與業務無關的列以滿足需求。
高級設置
重復處理策略
當目標表已存在時的處理策略,默認為保持目標端原有結構及數據。如果目標表沒有數據且結構和源表不一致,可選擇為清除目標表原有表結構及數據。
數據寫入模式
數據寫入表格存儲的處理方式。取值范圍如下:
按事件類型處理:根據插入事件、更新事件和刪除事件分別設置數據寫入策略。
追加寫入:只處理插入事件,丟棄更新事件和刪除事件。
數據寫入策略
按照事件類型處理數據寫入時的策略。當數據寫入模式選擇為按事件類型處理時才能設置此參數。
處理插入事件的策略為目標存在時更新,處理更新事件和刪除事件的策略為不存在時丟棄。
全量多線程寫入
全量數據寫入的并發線程數,默認值為8,可基于目標端寫性能適當調整。
增量寫入線程數
增量數據寫入的并發線程數,默認未啟用。打開增量寫入線程數開關后可基于目標端寫性能適當調整。
可選:單擊上方的圖標,請根據下表說明配置任務屬性。
參數
描述
任務名稱
同步任務的名稱,請根據實際設置。
同步類型
數據同步的類型。取值范圍如下:
全量+增量:全量數據同步完成后,再同步增量數據。
全量:將源端的存量數據復制到目標端。
增量:將源端實時產生的新數據或數據變更復制到目標端。
任務描述
任務的描述信息。
高級設置
計劃開始時間
任務的計劃開始時間。
如果需要指定任務開始時間,打開計劃開始時間開關后,選擇開始的日期和時間。
數據校驗
打開數據校驗開關后,任務會自動對同步結果的一致性進行全量校驗和增量校驗,并會在運行監控頁面展示校驗不一致的數據行數。
重要當任務符合以下任意一種情況時,即使打開數據校驗開關,任務也不會進行校驗。
添加了中間處理節點。
源連接不支持校驗。
目標連接不支持校驗。
增量同步并發寫入
打開增量同步并發寫入開關后,增量同步時,源端數據會并發寫入目標端。
增量滯后判斷時間設置
用于快速判斷復制任務是否存在滯后。
打開增量滯后判斷時間設置開關并設置判斷時間。增量同步時,如果增量同步的滯后時間大于設置的判斷時間,則復制任務存在滯后。
默認值為1,單位為秒。
處理器線程數
處理器的線程數。
增量數據處理模式
增量同步時,增量數據的處理模式。取值范圍為批量、逐條。
agent設置
使用的Agent信息。取值范圍如下:
平臺自動分配(默認):由平臺分配節點進行連接訪問。
用戶手動指定:設置此參數為用戶手動指定后,選擇要使用的Agent。
確認無誤后,單擊啟動。
操作完成后,您可以查看任務的執行情況,例如QPS、延遲、任務時間統計等信息。