反馈已提交

网络繁忙

Oracle环境准备(XStream)

  • 文档创建者:Roxy
  • 历史版本:17
  • 最近更新:Wendy123456 于 2024-09-05
  • 1. 概述

    1.1 版本

    FineDataLink 版本
    功能变动
    4.1-
    4.1.2
    支持多租户模式

    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、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'

    1717488911245639.png

    如果为 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权限,如下图所示:

    1717489237734198.png

    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 豆!

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭



    AI

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持