Oracle 数据源权限配置(Xstream)

Xstream 方式权限配置

CDC(Change Data Capture),即数据变更抓取,通过为源端数据源开启CDC,作业可实现数据源的实时数据同步。 本章节主要介绍如何为oracle数据库开启Xstream方式CDC功能。
本文以非CDB 数据库作为案例进行说明,需要注意的是如果数据库为CDB数据库时,在用户分配的命令可能存在差异,一般情况下,角色使用 C##角色名 即可

前提条件

Oracle 数据库为11g 以上版本
Oracle数据库需具备OGG License(无需安装OGG)
若Oracle数据库为主从模式,不支持使用Oracle从库。
不支持采集二进制类型的字段,例如:BINARY,VARBINARY,TINYBLOB,BLOB,MEDIUMBLOB,LONGBLOB

操作步骤

建议由数据库管理员对数据源配置进行操作
必须为Oracle数据库启用日志归档,并为Debezium Oracle连接器监视的所有数据库定义一个具有适当权限的Oracle用户

  1. 开启日志归档和XStream
    a. 在命令行工具中执行以下命令以sys用户连接到数据库。在实际使用过程中,可以有多种方式连接数据库,此处以命令行方式为例进行说明。

       sqlplus /nolog  
      CONNECT sys/password@host:port AS SYSDBA; 

    b. 执行以下命令开启Xstream

       alter system set enable_goldengate_replication=true;

    c. 执行以下命令,检查日志归档是否已开启

       archive log list;  
    若回显打印“Database log mode: No Archive Mode”,说明日志归档未开启,继续执行下一步。  
    若回显打印“Database log mode: Archive Mode”,说明日志归档已开启,直接跳到 g

    d. 执行以下命令配置归档日志参数

       alter system set db_recovery_file_dest_size = 100G;   
     alter system set db_recovery_file_dest = '/opt/oracle/oradata/recovery_area' scope=spfile; 
    
      100G为日志文件存储空间的大小,请根据实际情况设置。  
     /opt/oracle/oradata/recovery_area为日志存储路径,请根据实际规划设置,但须确保路径提前创建。

    e. 执行以下命令开启日志归档

     shutdown immediate;  
     startup mount;  
     alter database archivelog;

    f. 执行以下命令,确认日志归档是否已成功开启

      archive log list;  
     当回显打印“Database log mode: Archive Mode”,说明日志归档已开启。

    g. 退出连接

     `exit;`
  2. 创建XStream用户并给用户赋予权限

    a. 在命令行工具中执行以下命令以sys用户连接到数据库实例。

      sqlplus sys/password@host:port/SID as sysdba

    b.执行以下命令创建XStream管理员用户并配置权限。

      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_tbsXStream管理员用户的表空间名,请根据实际规划设置。
         /opt/oracle/oradata/orcl/xstream_adm_tbs.dbfXStream管理员用户的表空间文件,请根据实际规划设置。
         xstrmadminXStream管理员用户名,请根据实际规划设置。
         passwordXStream管理员用户密码,请根据实际规划设置。
         container => 'ALL'”仅当Oracle12c或以上版本时,才需要添加,否则删除此行内容。

    c. 执行以下命令创建CDC Connect连接数据库的用户并配置权限。

       CREATE TABLESPACE xstream_tbs DATAFILE '/opt/oracle/oradata/orcl/xstream_tbs.dbf' SIZE 25M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;  
       CREATE USER xstrm IDENTIFIED BY password DEFAULT TABLESPACE xstream_tbs QUOTA UNLIMITED ON xstream_tbs;  
       GRANT CREATE SESSION TO xstrm;  
       GRANT SELECT ON V_$DATABASE to xstrm;  
       GRANT FLASHBACK ANY TABLE TO xstrm;  
       GRANT SELECT ANY TABLE to xstrm;  
       GRANT LOCK ANY TABLE TO xstrm;  
       grant select_catalog_role to xstrm;  
    
         其中:x
         stream_tbsCDC Connect连接用户的表空间名,请根据实际规划设置。
         /opt/oracle/oradata/orcl/xstream_tbs.dbfCDC Connect连接用户的表空间文件,请根据实际规划设置。
         xstrmCDC Connect连接用户名,请根据实际规划设置。
         passwordCDC Connect连接用户密码,请根据实际规划设置。

    d. 执行以下命令修改日志记录参数。

       alter database add supplemental log data (all) columns;

    e. 退出连接

     `exit;` 
  3. 创建XStream出站服务器。
    一个XStream出站服务器只能在一个任务中使用,若该数据库需要用于多个任务,需创建多个XStream出站服务器。

    a.在命令行工具中执行以下命令以xstrmadmin用户连接到数据库实例。

     sqlplus xstrmadmin/password@host:port/SID

    b.执行以下命令创建XStream出站服务器。

       DECLARE  
      tables DBMS_UTILITY.UNCL_ARRAY;  
      schemas DBMS_UTILITY.UNCL_ARRAY;  
      BEGIN  
      tables(1) := NULL;  
      schemas(1) := 'CDC';   
      DBMS_XSTREAM_ADM.CREATE_OUTBOUND(  
      server_name => 'dbzxout',  
      table_names => tables,  
      schema_names => schemas  
      );  
      END;  
    
     其中:
     CDC为要同步数据表所在的schemas,即CDC需要抓取哪个schemas下的数据,请根据实际情况设置。
     dbzxout为出站服务器名称,需保证唯一,请根据实际规划设置。   

    c. 退出连接

          `exit;`

    d. 执行以下命令以sys用户连接到数据库实例

      sqlplus sys/password@host:port/SID as sysdba

    e. 执行以下命令允许xstrm用户连接XStream出站服务器。

      BEGIN  
      DBMS_XSTREAM_ADM.ALTER_OUTBOUND(  
      server_name  => 'dbzxout',  
      connect_user => 'xstrm'  
      );  
      END;  
    
     其中:
     dbzxout为出站服务器名称,在3.b中设置。
     xstrmCDC Connect连接用户名,在2.c中设置。  

    f. 退出连接

      `exit;`

Xstream客户端配置

CDC作业运行时,需要通过Xstream client 去获取数据,因此需要在yarn 集群所在机器进行客户端的安装
a.下载oracle的instantclient客户端 进入下载页面,根据操作系统以及oracle版本选择合适的package包,建议下载客户端版本 instantclient_19_13。 解压后的包结构如下

```
instantclient_XX_X/
├── adrci
├── BASIC_LITE_LICENSE
├── BASIC_LITE_README
├── genezi
├── libclntshcore.so -> libclntshcore.so.21.1
├── libclntshcore.so.12.1 -> libclntshcore.so.21.1
...
├── ojdbc8.jar
├── ucp.jar
├── uidrvci
└── xstreams.jar
```

b. 机器环境配置
● linux
使用root用户权限将目录里内容复制到/usr/lib64下

平台数据源添加注意事项

a. cdc任务数据同步方式选用xstream时,需要在数据源管理新增oracle 数据源时,增加Xstream 出站服务器的账号密码配置
单击加号,填入如下两个key,如下图:

xstream.password  
xstream.user