CDC(Change Data Capture),即數據變更抓取,通過爲源端數據源開啓CDC,FineDataLink 數據管道可實現數據源的實時數據同步以及數據表的物理删除同步。
FineDataLink 數據管道支持 Oracle 的 XStream 和 LogMiner 兩種 CDC 模式,本章節主要介紹如何爲 Oracle 數據庫開啓 XStream 模式的 CDC 功能。
在執行同步任務前,需要參考本文在數據源中進行一些配置,爲後續的數據同步做好準備。
注:歸檔日志會占用較多的磁盤空間,若磁盤空間滿了會影響業務,請定期清理過期歸檔日志,詳情參見:清理Oracle归档日志
Oracle數據庫需具備OGG License 。
XStream的實現機制類似於PG的插槽,僅增量時,在設置管道任務時不支持「自定義任務起點」。
不支持采集二進制類型的字段,例如:BFILE、LONG、LONG RAW、RAW、BLOB、CLOB、NCLOB等。
确認是否爲數據管道同步任務所支持的版本。
數據管道支持讀取的 Oracle 數據庫版本如下表所示:
Oracle 10g、11g、12c、18c、19c、21c、Oracle RAC集群
命令提示符中輸入:sqlplus / as sysdba 進入數據庫操作界面。
同時可以查看到當前數據庫的版本,如下圖所示:
注:數據來源爲單實例時,參考本節内容進行操作。
建議由數據庫管理員進行 CDC 功能的配置操作。
在命令行工具中執行以下命令連接到數據庫。
sqlplus / as sysdba
注:在實際使用過程中,可以有多種方式連接數據庫,此處以命令行方式爲例進行說明。
enable_goldengate_replication 可以控制是否允許使用 Golden Gate 來實現數據庫之間的複制功能。
使用命令查看是否已經開啓:
select VALUE from V$PARAMETER where name = 'enable_goldengate_replication'
如果爲 true 代表配置已開啓,爲 false 需要手動開啓配置,執行sql如下:alter system set enable_goldengate_replication=true;執行完成後再次查看,顯示 value爲 true 則開啓成功,如下圖所示:3.2 開啓歸檔日志
alter system set enable_goldengate_replication=true;
執行完成後再次查看,顯示 value爲 true 則開啓成功,如下圖所示:
參考 開啓 Archive Log 開啓歸檔日志。
在連接的數據庫輸入以下命令:
CREATE TABLESPACE xstream_adm_tbs DATAFILE '/opt/oracle/oradata/orcl/xstream_adm_tbs.dbf' SIZE 25M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;CREATE USER xstrmadmin IDENTIFIED BY password DEFAULT TABLESPACE xstream_adm_tbs QUOTA UNLIMITED ON xstream_adm_tbs;GRANT CREATE SESSION TO xstrmadmin;BEGIN DBMS_XSTREAM_AUTH.GRANT_ADMIN_PRIVILEGE( grantee => 'xstrmadmin', privilege_type => 'CAPTURE', grant_select_privileges => TRUE, container => 'ALL' );END;
xstream_adm_tbs爲XStream管理員用戶的表空間名,請根據實際規劃設置。
/opt/oracle/oradata/orcl/xstream_adm_tbs.dbf爲XStream管理員用戶的表空間文件,請根據實際規劃設置,此處的路徑爲 Oracle 安裝地址中存放 dbf 文件的位置。
xstrmadmin爲XStream管理員用戶名,請根據實際規劃設置。
password爲XStream管理員用戶密碼,請根據實際規劃設置。
“container => 'ALL'”僅當Oracle爲12c或以上版本并且開啓CDB時,才需要添加,否則删除此行内容。
判斷數據庫是否開啓 CDB 的語句如下,返回 true 或者 yes 則表示開啓了 CDB,返回 false 或者 No 表示未開啓:
SELECT CDB FROM V$DATABASE;
然後爲 XStream 管理員賦權限,使用如下命令:
GRANT create session, alter session, select any table, EXECUTE_CATALOG_ROLE TO <username>;
完成後即可使用命令檢查是否權限是否開啓成功:
select * from DBA_XSTREAM_ADMINISTRATOR;
例如此處授權的 XStream 管理員爲 c#roxy,則顯示其擁有了xstream權限,如下圖所示:
下載地址:Oracle Instant Client Downloads
根據 FineDataLink 工程所在的操作系統下載對應的安裝包,并選擇 19.20 版本。
并将安裝包解壓安裝。
将 xstream 和 ojdbc 兩個 JAR 包複制到 FineDataLink 安裝目錄:%finedatalink%/webapps/webroot/WEB-INF/lib中。
FineDataLink 部署在 Windows 系統:
将 oracle client 中的其他的文件複制到 %finedatalink%/jdk/jre/bin中,并重啓 FineDataLink 工程。
FineDataLink 部署在 Linux 系統:
将 oracle client 中的其他的文件複制到 %finedatalink%/jdk/jre/lib/amd64中。
然後重啓 FineDataLink 工程。
由於 XStream 連接依賴了oci 連接,所以不能通過 thin 方式連接來同步。
因此數據連接 URL 需要改爲:
jdbc:oracle:oci:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1533))(CONNECT_DATA=(SID=名稱)))
其中 localhost 爲 oracle 所在服務器 IP,PORT 爲端口、SID後需要寫數據庫名稱。
完成後即可配置管道任务。
4.1 開啓XStream建議由數據庫管理員進行 CDC 功能的配置操作。在命令行工具中執行以下命令連接到數據庫。sqlplus / as sysdba注:在實際使用過程中,可以有多種方式連接數據庫,此處以命令行方式爲例進行說明。enable_goldengate_replication 可以控制是否允許使用 Golden Gate 來實現數據庫之間的複制功能。使用命令查看是否已經開啓:select VALUE from V$PARAMETER where name = 'enable_goldengate_replication'如果爲 true 代表配置已開啓,爲 false 需要手動開啓配置,執行sql如下:alter system set enable_goldengate_replication=true;執行完成後再次查看,顯示 value爲 true 則開啓成功,如下圖所示:4.2 開啓歸檔日志
查詢表空間:
SELECT tablespace_name, file_name, bytes/1024/1024 AS size_mbFROM dba_data_files;
按照查詢的路徑添加 xstream 表空間:
CREATE TABLESPACE xstream_adm_tbs DATAFILE '/u01/app/oracle/oradata/fr/xstream_adm_tbs.dbf' SIZE 25M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
xstream_adm_tbs 爲XStream管理員用戶的表空間名,請根據實際規劃設置。
/u01/app/oracle/oradata/fr/xstream_adm_tbs.dbf 爲XStream管理員用戶的表空間文件,請根據實際規劃設置,此處的路徑爲 oracle 安裝地址中存放 dbf 文件的位置。
注:需保證 PDB 下有 xstream 表空間。
在 sqlplus 下使用命令查看當前 PDB 狀态,如下圖所示:
show pdbs;
如果 PDB 表空間沒有開啓,則需要使用命令:
ALTER PLUGGABLE DATABASE ORCLPDB1 OPEN;
使用命令切換到 PDB 模式:
注:下面語法切換到了 ORCLPDB1 中。
alter session set container=ORCLPDB1;
在 PDB 模式下先查詢表空間:
如果未顯示有 xstream_adm_tbs 表空間,則需要添加:
CREATE TABLESPACE xstream_adm_tbs DATAFILE '/u01/app/oracle/oradata/fr/orclpdb1/xstream_adm_tbs.dbf' SIZE 25M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
/u01/app/oracle/oradata/fr/orclpdb1/xstream_adm_tbs.dbf 爲 XStream 管理員用戶的表空間文件,請根據實際規劃設置,此處的路徑爲 oracle 安裝地址中存放dbf文件的位置。注: PDB 表空間比 CDB 多一層。
再返回 CDB下進行添加用戶和賦權操作。
使用命令:
alter session set container=CDB$ROOT;
然後使用命令賦權:
CREATE USER "C##ROXY10" IDENTIFIED BY PASSWORD DEFAULT TABLESPACE XSTREAM_ADM_TBS QUOTA UNLIMITED ON XSTREAM_ADM_TBS container = all;GRANT CREATE SESSION,SET CONTAINER TO "C##ROXY10" container = all; BEGIN DBMS_XSTREAM_AUTH.GRANT_ADMIN_PRIVILEGE( grantee => 'C##ROXY10', privilege_type => 'CAPTURE', grant_select_privileges => TRUE, container => 'ALL' );END;GRANT alter session, select any table, EXECUTE_CATALOG_ROLE,SELECT ANY DICTIONARY TO "C##ROXY10" container = all;
C##ROXY10 爲 XStream管理員用戶名,請根據實際規劃設置。
注:若在 sqlplus 執行語句,需要在 END;後加一個/,如下圖所示:
執行命令繼續賦權:
grant restricted session TO "C##ROXY10" container=all;
注:C##ROXY10 爲XStream管理員用戶的表空間名,請根據實際規劃設置。
然後執行命令,賦予建表權限:
GRANT CREATE TABLE TO <username> CONTAINER=ALL;
執行後查詢是否還有建表權限:
SELECT PRIVILEGE FROM USER_SYS_PRIVS WHERE PRIVILEGE = 'CREATE TABLE';
此時可以正常建表。
如果需要插表、函數等權限,再繼續執行:
grant create sequence to "C##ROXY10" CONTAINER=ALL;grant create TRIGGER to "C##ROXY10" CONTAINER=ALL;
然後即可使用命令檢查權限是否開啓成功:
參考本文 3.4 節進行配置。
在創建數據連接時,需要将數據庫改爲 PDB 來源,如下圖所示:
創建管道任務後,即可點擊數據源權限檢測,看到檢測成功,如下圖所示:
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
反馈已提交
网络繁忙