Oracle環境準備(XStream)

  • 文档创建者:Roxy
  • 历史版本:18
  • 最近更新:Nikozhan 于 2025-03-05
  • 1. 概述

    1.1 版本

    FineDataLink 版本
    功能變動
    4.1-
    4.1.2
    支持多租戶模式
    4.2.2.3數據管道源端适配 Oracle 21c

    CDC(Change Data Capture),即數據變更抓取,通過爲源端數據源開啓CDC,FineDataLink 數據管道可實現數據源的實時數據同步以及數據表的物理删除同步。

    FineDataLink 數據管道支持 Oracle 的 XStream 和 LogMiner 兩種 CDC 模式,本章節主要介紹如何爲 Oracle 數據庫開啓 XStream 模式的 CDC 功能。

    在執行同步任務前,需要參考本文在數據源中進行一些配置,爲後續的數據同步做好準備。

    注:歸檔日志會占用較多的磁盤空間,若磁盤空間滿了會影響業務,請定期清理過期歸檔日志,詳情參見:清理Oracle归档日志

    2. 前提條件

    • Oracle數據庫需具備OGG License 。

    • XStream的實現機制類似於PG的插槽,僅增量時,在設置管道任務時不支持「自定義任務起點」。

    • 不支持采集二進制類型的字段,例如:BFILE、LONG、LONG RAW、RAW、BLOB、CLOB、NCLOB等。

    • 确認是否爲數據管道同步任務所支持的版本。

    數據管道支持讀取的 Oracle 數據庫版本如下表所示:

    數據庫類型支持數據庫版本
    Oracle

    Oracle 10g、11g、12c、18c、19c、21c、Oracle RAC集群

    命令提示符中輸入:sqlplus / as sysdba 進入數據庫操作界面。

    同時可以查看到當前數據庫的版本,如下圖所示:

    3. 數據來源爲 CDB 時 Oracle 數據庫權限配置

    注:數據來源爲單實例時,參考本節内容進行操作。

    3.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 則開啓成功,如下圖所示:

    1717488923548750.png

    3.2 開啓歸檔日志

    建議由數據庫管理員進行 CDC 功能的配置操作。

    參考 開啓 Archive Log 開啓歸檔日志。

    3.3 建立XStream管理員并賦權

    建議由數據庫管理員進行 CDC 功能的配置操作。

    在連接的數據庫輸入以下命令:

    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權限,如下圖所示:

    3.4 FineDataLink 工程配置

    3.4.1 下載并解壓安裝 oracle client

    下載地址:Oracle Instant Client Downloads

    根據 FineDataLink 工程所在的操作系統下載對應的安裝包,并選擇 19.20 版本。

    并将安裝包解壓安裝。

    3.4.2 替換 JAR

    将 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 工程。

    3.5 在 FineDataLink 中創建 Oracle 數據連接

    由於 XStream 連接依賴了oci 連接,所以不能通過 thin 方式連接來同步。

    因此數據連接 URL 需要改爲:

    jdbc:oracle:oci:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1533))(CONNECT_DATA=(SID=名稱)))

    其中 localhost 爲 oracle 所在服務器 IP,PORT 爲端口、SID後需要寫數據庫名稱。

    3.6 後續步驟

    完成後即可配置管道任务

    4. 數據來源爲 PDB 時 Oracle 數據庫權限配置

    4.1 開啓XStream

    建議由數據庫管理員進行 CDC 功能的配置操作。

    在命令行工具中執行以下命令連接到數據庫。

    sqlplus / as sysdba

    注:在實際使用過程中,可以有多種方式連接數據庫,此處以命令行方式爲例進行說明。

    enable_goldengate_replication 可以控制是否允許使用 Golden Gate 來實現數據庫之間的複制功能。

    使用命令查看是否已經開啓:

    select VALUE from V$PARAMETER where name = 'enable_goldengate_replication'
    1717488872198018.png
    如果爲 true 代表配置已開啓,爲 false 需要手動開啓配置,執行sql如下:
    alter system set enable_goldengate_replication=true;

    執行完成後再次查看,顯示 value爲 true 則開啓成功,如下圖所示:

    1717488883692119.png

    4.2 開啓歸檔日志

    建議由數據庫管理員進行 CDC 功能的配置操作。

    參考 開啓 Archive Log 開啓歸檔日志。

    4.3 在 CDB 中添加表空間

    建議由數據庫管理員進行 CDC 功能的配置操作。

    查詢表空間:

    SELECT tablespace_name, file_name, bytes/1024/1024 AS size_mb
    FROM 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 文件的位置。

    4.4 在 PDB 中添加表空間

    注:需保證 PDB 下有 xstream 表空間。

    在 sqlplus 下使用命令查看當前 PDB 狀态,如下圖所示:

    show pdbs;

    如果 PDB 表空間沒有開啓,則需要使用命令:

    ALTER PLUGGABLE DATABASE ORCLPDB1 OPEN;

    使用命令切換到 PDB 模式:

    注:下面語法切換到了 ORCLPDB1 中。

    alter session set container=ORCLPDB1;

    在 PDB 模式下先查詢表空間:

    SELECT tablespace_name, file_name, bytes/1024/1024 AS size_mb
    FROM dba_data_files;

    如果未顯示有 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;
    • xstream_adm_tbs 爲XStream管理員用戶的表空間名,請根據實際規劃設置。

    • /u01/app/oracle/oradata/fr/orclpdb1/xstream_adm_tbs.dbf 爲 XStream 管理員用戶的表空間文件,請根據實際規劃設置,此處的路徑爲 oracle 安裝地址中存放dbf文件的位置。注: PDB 表空間比 CDB 多一層。

    4.5 爲用戶賦權

    再返回 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管理員用戶名,請根據實際規劃設置。

    • password爲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;

    注:C##ROXY10 爲XStream管理員用戶的表空間名,請根據實際規劃設置。

    然後即可使用命令檢查權限是否開啓成功:

    select * from DBA_XSTREAM_ADMINISTRATOR;

    4.5 FineDataLink 工程配置

    參考本文 3.4 節進行配置。

    4.6 在 FineDataLink 中創建 Oracle 數據連接

    在創建數據連接時,需要将數據庫改爲 PDB 來源,如下圖所示:

    4.7 後續操作

    創建管道任務後,即可點擊數據源權限檢測,看到檢測成功,如下圖所示:

    附件列表


    主题: 資料管道
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!