数据库准备

创建用户

容器模式

创建数据库用户
CREATE TABLESPACE ZCTBS DATAFILE '数据文件路径/ZCTBS.DBF' SIZE 100M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
CREATE USER ZCBUS_USER IDENTIFIED BY ZCBUS_PASSWD DEFAULT TABLESPACE ZCTBS QUOTA UNLIMITED ON ZCTBS;
权限
GRANT CREATE SESSION TO ZCBUS_USER;
GRANT RESOURCE TO ZCBUS_USER;
GRANT SELECT ANY TABLE TO ZCBUS_USER;
GRANT SELECT ANY DICTIONARY TO ZCBUS_USER;
GRANT SELECT_CATALOG_ROLE TO ZCBUS_USER;
注:12C的CDB模式zcbus_user要以c##开头

非容器模式

需要创建CDB用户/PDB用户两种

CDB用于分析日志
创建cdb用户(web配置页面中集群管理的db_type,db_name,host,user,password等信息添加cdb信息)
SQLPLUS SYS/PASSWORD@HOST:PORT/sid AS SYSDBA
CREATE USER c##ZCBUS_USER IDENTIFIED BY ZCBUS_USER;
ALTER USER C##ZCBUS_USER QUOTA 100M USERS;
GRANT CREATE SEESION TO C##ZCBUS_USER container=all;
GRANT RESOURCE TO C##ZCBUS_USER container=all;
GRANT SELECT ANY TABLE TO C##ZCBUS_USER container=all;
GRANT SELECT ANY DICTIONARY TO C##ZCBUS_USER container=all;
GRANT SELECT ON SYS.USER$ TO C##ZCBUS_USER container=all;
GRANT SELECT ON SYS.COL$ TO C##ZCBUS_USER container=all;
GRANT SELECT ON SYS.OBJ$ TO C##ZCBUS_USER container=all;
GRANT SELECT_CATALOG_ROLE TO C##ZCBUS_USER container=all;
PDB用户PDB中数据导出
--创建pdb用户(web配置页面中集群管理的source_db_name,source_host,source_user,source_passwd填写pdb信息)
aLTER SESSION SET CONTAINER=PDB01;
CREATE USER ZCBUS_USER IDENTIFIED BY ZCBUS_PASSWD DEFAULT TABLESPACE ZCTBS QUOTA UNLIMITED ON ZCTBS;
GRANT CREATE SESSION TO ZCBUS_USER;
GRANT RESOURCE TO ZCBUS_USER;
GRANT SELECT ANY TABLE TO ZCBUS_USER;
GRANT SELECT ANY DICTIONARY TO ZCBUS_USER;
GRANT SELECT ON SYS.USER$ TO ZCBUS_USER;
GRANT SELECT ON SYS.COL$ TO ZCBUS_USER;
GRANT SELECT ON SYS.OBJ$ TO ZCBUS_USER;
GRANT SELECT_CATALOG_ROLE TO ZCBUS_USER;
GRANT FLASHBACK ANY TABLE TO ZCBUS_USER;
GRANT LOCK ANY TABLE TO ZCBUS_USER;
GRANT SELECT_CATALOG_ROLE TO ZCBUS_USER;

发布服务配置

  1. 数据库配置
SQLPLUS / AS SYSDBA
ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION=TRUE;
ALTER SYSTEM SET OPEN_CURSORS = 3000;
BEGIN
   DBMS_XSTREAM_AUTH.GRANT_ADMIN_PRIVILEGE(
      GRANTEE                 => 'ZCBUS_USER',
      PRIVILEGE_TYPE          => 'CAPTURE',
      GRANT_SELECT_PRIVILEGES => TRUE);
END;
/
#ENABLE_GG_XSTREAM_FOR_STREAMS
BEGIN 
        DBMS_XSTREAM_ADM.ENABLE_GG_XSTREAM_FOR_STREAMS(TRUE);
END;

12C及以上 CDB模式配置:

BEGIN
   DBMS_XSTREAM_AUTH.GRANT_ADMIN_PRIVILEGE(
      GRANTEE                 => 'C##ZCBUS_USER',
      PRIVILEGE_TYPE          => 'CAPTURE',
      GRANT_SELECT_PRIVILEGES => TRUE,
      CONTAINER               => 'ALL');
END;
/

b)开启补充加日志

SQLPLUS / AS SYSDBA
ALTER TABLE 数据库名.表名 ADD SUPPLEMENTAL LOG DATA(ALL) COLUMNS; 表级别
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; 库级别最小日志
###根据实际情况选择添加附加日志级别
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA(ALL) COLUMNS; 库级别

c)使用创建用户连接进行数据参数配置
sqlplus zcbus_user/zcbus_passwd
注:12C的CDB模式zcbus_user要以c##开头【CDB用户】
d)创建xout服务【创建服务的时候,需要所有的PDB处于OPEN状态才可以(可以视情况临时开启所有关闭的PDB)】

DECLARE
    TABLES  DBMS_UTILITY.UNCL_ARRAY;
    SCHEMAS DBMS_UTILITY.UNCL_ARRAY;
  BEGIN
TABLES(1) :='ZCBUS_USER.TAB1'; 
    SCHEMAS(1) := NULL;
    DBMS_XSTREAM_ADM.CREATE_OUTBOUND(
    SERVER_NAME     =>  'XOUT',
    TABLE_NAMES     =>  TABLES,
    SCHEMA_NAMES    =>  SCHEMAS);
END;
/

调整优化参数

DECLARE
  CURSOR C_CAP IS SELECT CAPTURE_NAME FROM DBA_CAPTURE;
 BEGIN
  FOR C IN C_CAP LOOP
    DBMS_CAPTURE_ADM.SET_PARAMETER(CAPTURE_NAME=>C.CAPTURE_NAME,
PARAMETER=>'INLINE_LOB_OPTIMIZATION',VALUE=>'y');
DBMS_CAPTURE_ADM.ALTER_CAPTURE(CAPTURE_NAME=>C.CAPTURE_NAME,
CHECKPOINT_RETENTION_TIME=>1/24);
  END LOOP;
 END;
 /
  • 至少添加一个表,用户名,表名可以不存在【保证服务正常】

ZCBUS准备

  1. 添加发布节点
  • 资源管理-发布节点
      添加发布节点,选择运行容器位置
      配置发布数据库配置信息【ORACLE】即可
序号 变量名 默认值 是否隐藏函数 描述
1 db_type oracle 不隐藏 源数据库类型
2 logmnr_mode 0 不隐藏 支持XSTREAM/LOGMNR两种模式,设为1时,用logmnr模式分析日志,默认为0,XSTREAMS【11.2.0.4以上版本】
3 logmnr_scn_range 20000 不隐藏 logmnr分析模式时,一轮日志分析的最大scn范围,默认为20000;XSTREAM模式可忽略
4 logmnr_scn_back 10 不隐藏 logmnr分析模式时,在线日志回退scn分析数,默认为10;XSTREAM模式可忽略
5 server_name xout 不隐藏 Oracle捕获服务名,XSTREAM模式中,数据库获取增量数据的服务名,在LOGMNR中可忽略
6 db_name oracle12c 不隐藏 捕获数据库登录服务名
7 host 172.17.58.145 不隐藏 数据库IP地址
8 port 1521 不隐藏 数据库端口号
9 user zcbus 不隐藏 捕获数据库用户名
10 password zcbus 不隐藏 捕获数据库密码
11 source_db_type oracle 不隐藏 源数据库的类型,用于全量发布
12 source_db_name oracle12c 不隐藏 源端数据库名
13 source_host 172.17.58.145 不隐藏 源端主机IP地址
14 source_port 1521 不隐藏 源端数据库端口
15 source_user zcbus 不隐藏 源端用户名
16 source_password zcbus 不隐藏 源端密码
17 read_log_from_remote 1 不隐藏 1为远程读日志
18 real_export_buffer 0 不隐藏 定时导出每个线程使用的最大内存,单位(M),最小50M
19 real_export_by_where 0 不隐藏 设置为1时,实时发布时采用定时导出的模式
20 real_export_threads 1 不隐藏 定时导出使用的线程数,默认为4
21 real_send_queues 0 不隐藏 实时发送队列
22 single_message_max_len 209715200 不隐藏 单条消息的最大长度,单条消息超过此长度时,会被拆分成多条消息,单位(BYTE),默认为10485760(10M),最小为5242880(5M),如果设置值比message_max_len小,则调整为和message_max_len一致,-1为无限制
26 parallel_query_count 4 不隐藏 数据库查询并行度
27 file_multiblock_read_count 256 不隐藏 Oracle一次读取的块的数量
28 full_sync_threads 4 不隐藏 全量并发线程数
29 max_packet_len 5242880 不隐藏 发送到kafka的最大包长度(BYTE)
30 full_publish_interval 0 不隐藏 全量发送每个包的间隔(毫秒),0为不限制,测试版本每秒钟发送1个包,正式版100毫秒发送一个包,可以设置为不限制
31 log_extract_interval 2000 不隐藏 增量每轮分析日志的时间间隔(毫秒),注册版默认为2000(2秒),可修改,最小为50,试用版固定每轮日志分析时间间隔为10秒
32 message_max_len 0 不隐藏 发送到kafka的最大消息长度(BYTE),默认为5242880(5M),最小10240(10K)
33 full_sync_buffer 100 不隐藏 全量导出的Buffer
35 land_to_file 0 不隐藏 是否落地缓存,1:是 0:否
36 land_file_reserve_cont 0 不隐藏 文件发送到kafka之后,保留暂时不删除的文件个数,默认为0,发送成功之后马上删除文件
37 auto_add_table_real_rule 1 不隐藏 设置为1是,实时进程启动或者设置实时刷新标志为1时,bus_push_sync_tb表里自动添加实时streams规则,默认为1
38 to_single_byte 1 不隐藏 设置为1时,全量发布select查询时,varchar2类型字段加to_single_byte转换,默认为0,在某些特殊情况下,全量导出报错。 ORA-29275: partial multibyte character
39 message_encrypt 0 不隐藏 发送到kafka的消息是否加密,默认为0不加密,1为加密
40 parallelism 0 不隐藏 CAPTURE进程的并发数,设置大于等于1的时候生效
41 write_alert_log 0 不隐藏 CAPTURE进程是否写alert日志,0为不写日志,1为写日志
42 nls_lang 0 不隐藏 Oracle客户端连接时的环境变量,默认为AMERICAN_AMERICA.AL32UTF8
文档更新时间: 2023-02-02 14:00   作者:操李红