适用范围
部署环境介绍
源和目标环境信息
dmhs安装包信息
dmhs软件安装
关闭防火墙(源和目标)
源端安装
目标端安装
源库与目标库调整
源端(oracle 11.2.0.4)
目标端(dm8)
源端与目标端配置
源端配置
目标端配置
源和目标端启动
启动目标端
启动源端
源和目标停止过程
创建系统服务管理dmhs源和目标
同步测试
源和目标数据量检查
源端dml操作验证
DDL操作验证
ddl_mask解释
参考文档
适用范围
部署环境介绍
源和目标环境信息
主机名 | 主机IP | 操作系统 | 数据库信息 | dmhs软件 |
---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
dmhs安装包信息
数据库类型 | dmhs部署用户 | dmhs部署路径 | dmhs文件名称 | 连接用户 |
---|---|---|---|---|
oracle |
oracle |
/dmhs |
dmhs_V4.2.60_oracle_rev106302_rh6_64_veri_20220224.zip |
o_dmhs |
dm |
dmdba |
/dm8/dmhs |
dmhs_v3.1.3_dm7.tar.z |
d_dmhs |
dm |
dmdba |
/dm8/dmhs |
dmhs.key |
d_dmhs |
dmhs软件安装
关闭防火墙(源和目标)
systemctl stop firewalld.service
systemctl disable firewalld.service
源端安装
源端软件安装
[root@db onecmd]# mkdir -p /dmhs
[root@db onecmd]# chown -R oracle:oinstall /dmhs
[root@db onecmd]# su - oracle
Last login: Tue Jun 7 12:01:42 EDT 2022 on pts/0
[oracle@db ~]$ cd /dmhs
[oracle@db dmhs]$ unzip /opt/dmhs_V4.2.60_oracle_rev106302_rh6_64_veri_20220224.zip
[oracle@db dmhs]$ ll
total 8
drwxr-xr-x. 4 oracle oinstall 4096 Feb 24 04:05 debug
drwxr-xr-x. 4 oracle oinstall 4096 Feb 24 04:05 release
cp libcpt_ora.so ../release
源端环境变量配置
su - oracle
vi ~/.bash_profile
umask 022
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/dbhome_1
export ORACLE_SID=muggle
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/u01/app/oracle/product/11.2.0.4/dbhome_1/lib:/dmhs/release
export PATH=$PATH:/u01/app/oracle/product/11.2.0.4/dbhome_1/bin/:/u01/app/oracle/product/11.2.0.4/dbhome_1/OPatch
export LANG=en_US.UTF-8
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
su - root
export DMHS_HOME=/dmhs
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/dmhs/bin:/u01/app/oracle/product/11.2.0.4/dbhome_1/lib
umask 022
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/dbhome_1
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORACLE_SID=muggle
export PATH=$PATH:/u01/app/oracle/product/11.2.0.4/dbhome_1/bin/:/u01/app/oracle/product/11.2.0.4/dbhome_1/OPatch
export LANG=en_US.UTF-8
源端ODBC安装
yum install -y unixODBC unixODBC-devel
[root@db ~]# odbcinst -j
unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
[root@db ~]#
[root@db lib]# cat /etc/odbc.ini
[ORACLE]
Description = ORACLE ODBC DSN
Driver = Oracle
SERVER = 192.168.122.7
USERID = o_dmhs
PASSWORD = dmhs123
Servername = muggle
PORT = 1521
[root@db lib]# cat /etc/odbcinst.ini
[Oracle]
Description = ODBC for Oracle
Driver = /u01/app/oracle/product/11.2.0.4/dbhome_1/lib/libsqora.so.11.1
Threading = 0
[root@db lib]#
[root@db ~]# isql -v oracle
[01000][unixODBC][Driver Manager]Can't open lib '/u01/app/oracle/product/11.2.0.4/dbhome_1/lib/libsqora.so.11.1' : file not found
[ISQL]ERROR: Could not SQLConnect
[root@db ~]# cd $ORACLE_HOME/lib
[root@db lib]# ldd libsqora.so.11.1
ldd: warning: you do not have execution permission for `./libsqora.so.11.1'
linux-vdso.so.1 => (0x00007ffca0e6d000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f64c8533000)
libm.so.6 => /lib64/libm.so.6 (0x00007f64c8231000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f64c8015000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f64c7dfb000)
libclntsh.so.11.1 (0x00007f64c538d000)
libodbcinst.so.1 => not found
libc.so.6 => /lib64/libc.so.6 (0x00007f64c4fc0000)
/lib64/ld-linux-x86-64.so.2 (0x00007f64c8737000)
libnnz11.so => /u01/app/oracle/product/11.2.0.4/dbhome_1/lib/libnnz11.so (0x00007f64c483c000)
libaio.so.1 => /lib64/libaio.so.1 (0x00007f64c463a000)
[root@db lib]#
[root@db lib]# find / -name libodbc.so.2
/usr/lib64/libodbc.so.2
[root@db lib]# find / -name libodbcinst.so.2
/usr/lib64/libodbcinst.so.2
cd /usr/lib64/ && sudo ln -s libodbc.so.2 libodbc.so.1 && sudo ln -s libodbcinst.so.2 libodbcinst.so.1
[root@db lib]# ldd libsqora.so.11.1
ldd: warning: you do not have execution permission for `./libsqora.so.11.1'
linux-vdso.so.1 => (0x00007ffc80568000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f0b59614000)
libm.so.6 => /lib64/libm.so.6 (0x00007f0b59312000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f0b590f6000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f0b58edc000)
libclntsh.so.11.1 (0x00007f0b5646e000)
libodbcinst.so.1 => /lib64/libodbcinst.so.1 (0x00007f0b5625c000)
libc.so.6 => /lib64/libc.so.6 (0x00007f0b55e8f000)
/lib64/ld-linux-x86-64.so.2 (0x00007f0b59818000)
libnnz11.so => /u01/app/oracle/product/11.2.0.4/dbhome_1/lib/libnnz11.so (0x00007f0b5570b000)
libaio.so.1 => /lib64/libaio.so.1 (0x00007f0b55509000)
libltdl.so.7 => /lib64/libltdl.so.7 (0x00007f0b552ff000)
[root@db lib]#
[root@db lib]# isql -v oracle
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
目标端安装
目标端软件安装
[root@dm /]# mkdir -p /dmhs
[root@dm /]# chown -R dmdba:dinstall /dmhs
[dmdba@dm ~]$ cd /dmhs
[dmdba@dm dmhs]$ tar -zxvf /opt/dmhs_v3.1.3_dm7.tar.z
[dmdba@dm dmhs]$ cd /dmhs
[dmdba@dm dmhs]$ ll
total 8
drwxr-xr-x. 13 dmdba dinstall 4096 Jun 2 04:16 debug
drwxr-xr-x. 15 dmdba dinstall 4096 Jun 2 04:22 release
[dmdba@dm dmhs]$
cp libexec_ins_dm8.so ../release
目标端环境变量配置
su - dmdba
vi ~/.bash_profile
export DM_HOME="/dm8"
export PATH=$PATH:$DM_HOME/bin
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/dm8/bin"
export DMHS_HOME=/dmhs
export LD_LIBRARY_PATH=$DMHS_HOME/release:$LD_LIBRARY_PATH
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
su - root
vi ~/.bash_profile
export DM_HOME="/dm8"
export PATH=$PATH:$DM_HOME/bin
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/dm8/bin"
export DMHS_HOME=/dmhs
export LD_LIBRARY_PATH=$DMHS_HOME/release:$LD_LIBRARY_PATH
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
目标端odbc安装
yum install -y unixODBC unixODBC-devel
[root@db ~]# odbcinst -j
unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
[root@db ~]#
[root@dm ~]# cat /etc/odbc.ini
[DM8]
Description =DM ODBC DSND
Driver = DM8 ODBC DRIVER
SERVER = 192.168.2.87
UID = d_dmhs
PWD = A12345678a
TCP_PORT = 5236
[root@dm ~]#
[root@dm ~]# cat /etc/odbcinst.ini
[DM8 ODBC DRIVER]
Description =ODBC DRIVER FOR DM8
Driver = /dm8/bin/libdodbc.so
[root@dm ~]#
[root@dm ~]# isql -v dm8
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
源库与目标库调整
源端(oracle 11.2.0.4)
源端数据库信息
目的端IP | 192.168.2.88 |
---|---|
主机名 |
db |
安装用户 |
Oracle |
数据库版本 |
11.2.0.4 |
ORACLE_HOME |
/u01/app/oracle/product/11.2.0.4/dbhome_1 |
db_block_size |
8K |
NLS_CHARACTERSET |
ZHS16GBK |
是否归档 |
是 |
传输用户 |
o_dmhs |
源库开启归档
[oracle@db release]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Tue Jun 7 12:11:23 2022
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> archive log list
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 3
Current log sequence 5
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 3373858816 bytes
Fixed Size 2257920 bytes
Variable Size 738200576 bytes
Database Buffers 2617245696 bytes
Redo Buffers 16154624 bytes
Database mounted.
SQL>
SQL> alter database archivelog;
Database altered.
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 158
Next log sequence to archive 160
Current log sequence 160
SQL> alter database open;
Database altered.
SQL>
开启最小补充日志及全列日志
SQL> alter database add supplemental log data;
Database altered.
SQL> alter database add supplemental log data (all) columns;
Database altered.
SQL> select supplemental_log_data_min,supplemental_log_data_all from v$database;
SUPPLEME SUP
-------- ---
YES YES
SQL>
关闭回收站功能
SQL> alter system set recyclebin=off scope=spfile ;
System altered.
SQL> startup force;
ORACLE instance started.
Total System Global Area 6831239168 bytes
Fixed Size 2266224 bytes
Variable Size 1207962512 bytes
Database Buffers 5603590144 bytes
Redo Buffers 17420288 bytes
Database mounted.
Database opened.
SQL> show parameter recyclebin
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
recyclebin string OFF
SQL>
查看oracle数据库字符集
SQL> select userenv('language') from dual;
USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.ZHS16GBK
SQL>
源端表空间及用户准备
create tablespace dmhs datafile '/oradata/muggle/dmhs01.dbf' size 50m autoextend on next 50m maxsize 30g extent management local;
create temporary tablespace dmhs_temp tempfile '/oradata/muggle/dmhs_temp01.dbf' size 50m reuse autoextend on next 10m maxsize 30g;
create user o_dmhs identified by dmhs123 default tablespace dmhs temporary tablespace dmhs_temp;
log:
SQL> create tablespace dmhs datafile '/oradata/muggle/dmhs01.dbf' size 50m autoextend on next 50m maxsize 30g extent management local;
Tablespace created.
SQL> create temporary tablespace dmhs_temp tempfile '/oradata/muggle/dmhs_temp01.dbf' size 50m reuse autoextend on next 10m maxsize 30g;
Tablespace created.
SQL> create user o_dmhs identified by dmhs123 default tablespace dmhs temporary tablespace dmhs_temp;
User created.
源端配置DDL支持
参数检查
源端数据库必须允许 DDL 触发器的触发动作,即数据库参数_system_trig_enabled为 TRUE 或者未设置。查看该参数的命令如下:
set lines 300
col name for a50
col value for a30
col describ for a30
SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc describ
FROM SYS.x$ksppi x, SYS.x$ksppcv y
WHERE x.inst_id = USERENV('Instance')
AND y.inst_id = USERENV('Instance')
AND x.indx = y.indx
AND x.ksppinm LIKE '%&par%';
_system_trig_enabled
log:
NAME VALUE DESCRIB
-------------------------------------------------- ------------------------------ ------------------------------
_system_trig_enabled TRUE are system triggers enabled
SQL>
DDL脚本
需要在源端数据库以 sys 用户,在 sys 模式下创建 DDL 触发器及 DDL 记录表,详细参照 dmhs_ddl.sql 脚本,oracle12c版本以上数据库需要在cdb和pdb都执行此脚本
ddl_sql_ora.sql
---=======================================================
---version 2.0
---sys用户登录并创建
---=======================================================
create table dmhs_ddl_sql (
objid NUMBER,
dataobj NUMBER,
op_type varchar2(32),
obj_schname varchar2(128),
obj_name varchar2(128),
obj_type varchar2(32),
op_sql varchar(4000),
op_sql2 clob,
ddl_time date,
resvd1 NUMBER,
resvd2 NUMBER,
resvd3 NUMBER,
resvd4 NUMBER,
resvd5 varchar2(1000),
resvd6 varchar2(1000)
);
create or replace trigger dmhs_trigger
before ddl
on database
declare
e1 exception;
sql_text ora_name_list_t;
ddl_sql clob;
op_no number := NULL;
objid number := NULL;
dataobj number := NULL;
v_num number;
sql_item varchar(8000);
sql_temp varchar(8000);
begin
/*
if ora_login_user = 'DMHS' then
return;
end if;
*/
if (SUBSTR(ora_dict_obj_name, 1, 5) = 'DMHS_' and ora_dict_obj_name<>'DMHS_TRXID_TABLE') or (ora_dict_obj_owner = 'SYS' and ora_dict_obj_type != 'TABLESPACE') then
--下面这个条件是为了捕获dmhs_ddl_sql表的TRUNCATE操作的,这个操作不捕获会导致无法解析到该表的OP_SQL2列
if ora_dict_obj_name = 'DMHS_DDL_SQL' and ora_dict_obj_type = 'TABLE' and ora_sysevent = 'DROP' then
raise_application_error(-20002, 'table cannot drop before dmhs_trigger is droped');
end if;
if ora_sysevent != 'TRUNCATE' or ora_dict_obj_name <> 'DMHS_DDL_SQL' then
return;
end if;
end if;
/*
if ora_dict_obj_type <> 'TABLE' and ora_dict_obj_type <> 'VIEW' and ora_dict_obj_type <> 'SEQUENCE' and ora_dict_obj_type <> 'INDEX' and ora_dict_obj_type <> 'SYNONYM' then
return;
end if;
*/
sql_temp := '';
dbms_lob.createtemporary(ddl_sql, TRUE);
v_num := ora_sql_txt (sql_text);
for i in 1 .. v_num
loop
sql_item := sql_text (i);
if length(sql_item) + length(sql_temp) > 3000 then
dbms_lob.append(ddl_sql, sql_temp);
sql_temp := '';
end if;
sql_temp := sql_temp || sql_item;
end loop;
dbms_lob.append(ddl_sql, sql_temp);
if ora_sysevent != 'CREATE' then
if ora_dict_obj_type = 'TABLE' or ora_dict_obj_type = 'SEQUENCE' then
select o.obj#, o.dataobj# into objid, dataobj from sys.obj$ o, sys.user$ u where o.name = ora_dict_obj_name and o.type# in(2, 6) and o.subname is null and u.name = ora_dict_obj_owner and o.owner# = u.user#;
end if;
insert into dmhs_ddl_sql(objid, dataobj, op_type, obj_schname, obj_name, obj_type, op_sql, ddl_time) values(objid, dataobj, ora_sysevent, ora_dict_obj_owner, ora_dict_obj_name, ora_dict_obj_type, SUBSTR(ddl_sql, 1, 2000), sysdate);
else
if ora_dict_obj_type = 'TABLE' then
insert into dmhs_ddl_sql(op_type, obj_schname, obj_name, obj_type, op_sql, op_sql2, ddl_time) values(ora_sysevent, ora_dict_obj_owner, ora_dict_obj_name, ora_dict_obj_type, SUBSTR(ddl_sql, 1, 2000), ddl_sql, sysdate);
elsif ora_dict_obj_type in ('VIEW', 'MATERIALIZED VIEW', 'TRIGGER', 'PROCEDURE', 'FUNCTION', 'PACKAGE', 'PACKAGE BODY', 'TYPE', 'TYPE BODY', 'SYNONYM', 'TABLESPACE', 'USER', 'ROLE', 'INDEX', 'SEQUENCE') then
insert into dmhs_ddl_sql(op_type, obj_schname, obj_name, obj_type, op_sql, op_sql2, ddl_time) values(ora_sysevent, ora_dict_obj_owner, ora_dict_obj_name, ora_dict_obj_type, SUBSTR(ddl_sql, 1, 2000), ddl_sql, sysdate);
end if;
end if;
exception
when e1 then raise e1;
when no_data_found then
dbms_output.put_line('object is not exist');
end dmhs_trigger;
//创建dmhs的源端用户dmhs,并授权
grant all on dmhs_ddl_sql to o_dmhs;
grant select any table to o_dmhs;
grant select any dictionary to o_dmhs;
grant create session to o_dmhs;
grant lock any table to o_dmhs;
grant execute on dbms_flashback to o_dmhs;
grant flashback any table to o_dmhs;
ddl脚本执行:
[oracle@alldb ~]$ cd /dmhs/scripts/
[oracle@alldb scripts]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Mon May 9 16:41:56 2022
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> @ddl_sql_ora.sql
ddl_mask脚本执行
需要日志捕获模块对 ddl_mask 进行设置。例如<ddl_mask>op:obj<ddl_mask>。ddl_mask 可对同步对象进行过滤,详细参数请参照 ddl_mask 参数说明。
创建测试数据
find /u01 -name utlsampl.sql
sqlplus / as sysdba
@/u01/app/oracle/product/11.2.0.4/dbhome_1/rdbms/admin/utlsampl.sql
log:
[oracle@alldb scripts]$ find /u01 -name utlsampl.sql
/u01/app/oracle/product/11.2.0.4/dbhome_1/rdbms/admin/utlsampl.sql
[oracle@alldb scripts]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Mon May 9 16:57:44 2022
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> @/u01/app/oracle/product/11.2.0.4/dbhome_1/rdbms/admin/utlsampl.sql
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
验证测试数据
[oracle@alldb scripts]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Mon May 9 16:59:07 2022
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> select count(*) from scott.emp;
COUNT(*)
----------
14
SQL>
目标端(dm8)
目标端数据库信息
源端IP | 192.168.2.87 |
---|---|
主机名 |
dm |
安装用户 |
dmdba |
数据库版本 |
dm8_20211021_x86_rh6_64_ent_8.1.2.84.iso |
DM_HOME |
/dm8 |
簇大小 |
16 |
页大小 |
8K |
字符集 |
utf8 |
大小写敏感 |
是 |
是否以字符为单位 |
否 |
是否归档 |
是 |
传输用户 |
d_dmhs |
目标端dm数据库开启归档
disql SYSDBA/SYSDBA
select arch_mode from v$database;
alter DATABASE MOUNT;
ALTER DATABASE ADD ARCHIVELOG 'DEST = /dmarch, TYPE = local,FILE_SIZE = 1024, SPACE_LIMIT = 2048';
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
select arch_mode from v$database;
log:
[dmdba@alldb ~]$ disql SYSDBA/SYSDBA
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 3.081(ms)
disql V8
SQL>
SQL> select arch_mode from v$database;
行号 ARCH_MODE
---------- ---------
1 N
已用时间: 15.834(毫秒). 执行号:53700.
SQL>
[dmdba@alldb muggle]$ disql SYSDBA/SYSDBA
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 3.734(ms)
disql V8
SQL> alter DATABASE MOUNT;
操作已执行
已用时间: 3.255(毫秒). 执行号:0.
SQL> ALTER DATABASE ADD ARCHIVELOG 'DEST = /dmarch, TYPE = local,FILE_SIZE = 1024, SPACE_LIMIT = 2048';
操作已执行
已用时间: 10.371(毫秒). 执行号:0.
SQL> ALTER DATABASE ARCHIVELOG;
操作已执行
已用时间: 5.556(毫秒). 执行号:0.
SQL> ALTER DATABASE OPEN;
操作已执行
已用时间: 43.027(毫秒). 执行号:0.
SQL> select arch_mode from v$database;
行号 ARCH_MODE
---------- ---------
1 Y
已用时间: 16.546(毫秒). 执行号:700.
SQL>
开启数据库逻辑日志
SELECT PARA_VALUE FROM SYS.V$DM_INI WHERE PARA_NAME = 'RLOG_APPEND_LOGIC';
sp_set_para_value(1,'RLOG_APPEND_LOGIC',1);
SELECT PARA_VALUE FROM SYS.V$DM_INI WHERE PARA_NAME = 'RLOG_APPEND_LOGIC';
log:
SQL> SELECT PARA_VALUE FROM SYS.V$DM_INI WHERE PARA_NAME = 'RLOG_APPEND_LOGIC';
行号 PARA_VALUE
---------- ----------
1 0
已用时间: 16.838(毫秒). 执行号:701.
SQL> sp_set_para_value(1,'RLOG_APPEND_LOGIC',1);
DMSQL 过程已成功完成
已用时间: 16.251(毫秒). 执行号:702.
SQL> SELECT PARA_VALUE FROM SYS.V$DM_INI WHERE PARA_NAME = 'RLOG_APPEND_LOGIC';
行号 PARA_VALUE
---------- ----------
1 1
已用时间: 12.932(毫秒). 执行号:703.
SQL>
创建同步用户d_dmhs及scott用户,并授予DBA角色
create user d_dmhs identified by A12345678a default tablespace main default index tablespace main;
create user scott identified by tiger1234 default tablespace main default index tablespace main;
grant dba to scott;
grant dba to d_dmhs;
log:
SQL> create user d_dmhs identified by A12345678a default tablespace main default index tablespace main;
操作已执行
已用时间: 24.032(毫秒). 执行号:704.
SQL> create user scott identified by tiger1234 default tablespace main default index tablespace main;
操作已执行
已用时间: 15.713(毫秒). 执行号:705.
SQL> grant dba to scott;
操作已执行
已用时间: 2.942(毫秒). 执行号:706.
SQL> grant dba to d_dmhs;
操作已执行
已用时间: 2.673(毫秒). 执行号:707.
SQL>
源端与目标端配置
源端配置
dmhs.hs配置
vi dmhs.hs
<?xml version="1.0" encoding="GB2312" standalone="no"?>
<dmhs>
<base>
<lang>ch</lang>
<mgr_port>5345</mgr_port>
<chk_interval>3</chk_interval>
<ckpt_interval>60</ckpt_interval>
<siteid>1</siteid>
</base>
<cpt>
<db_type>ORACLE11g</db_type>
<db_server>muggle</db_server>
<db_user>o_dmhs</db_user>
<db_pwd>dmhs123</db_pwd>
<db_port>1521</db_port>
<idle_time>10</idle_time>
<ddl_mask>TABLE:VIEW:INDEX:OP</ddl_mask>
<parse_thr>1</parse_thr>
<arch>
<clear_interval>600</clear_interval>
<clear_flag>0</clear_flag>
</arch>
<send>
<ip>192.168.2.87</ip>
<mgr_port>5345</mgr_port>
<data_port>5346</data_port>
<net_pack_size>256</net_pack_size> #NET 模块投递消息时消息包的大小,取值范围在 1-512,单位 K,默认 256。
<net_turns>0</net_turns> #禁用网闸模式,
<trigger>1</trigger> #下一级数据入库时,禁用触发器
<constraint>1</constraint> #一级数据入库时,禁用约束,不包括主键约束和唯一性约束,主要是包括外键约束
<identity>1</identity> #示下一级数据入库时,忽略自增列
<filter>
<enable>
<item>SCOTT.*</item>
</enable>
<disable/>
</filter>
<map>
<item></item>
</map>
</send>
</cpt>
</dmhs>
目标端配置
dmhs.hs配置
vi dmhs.hs
<?xml version="1.0" encoding="GB2312" standalone="no"?>
<dmhs>
<base>
<lang>ch</lang>
<mgr_port>5345</mgr_port>
<chk_interval>3</chk_interval>
<ckpt_interval>60</ckpt_interval>
<siteid>2</siteid>
</base>
<recv>
<data_port>5346</data_port>
<exec>
<db_type>DM8</db_type>
<db_server>192.168.2.87</db_server>
<db_user>D_DMHS</db_user>
<db_pwd>A12345678a</db_pwd>
<db_port>5236</db_port>
<level>0</level>
<exec_mode>1</exec_mode> #执行模式类型,1代表常规执行模式,2代表ETL CDC执行模式
<exec_thr>6</exec_thr> #EXEC 模块用来数据入库的工作线程数,取值范围在 1-1024,默认值 1。
<exec_sql>1024</exec_sql> #EXEC 模块缓存事务 SQL 语句的内存大小,取值范围在 32-40960,单位 M,默认值 512。
<exec_trx>5000</exec_trx> #允许缓存事务的个数,取值范围在 1000-10000,默认值 5000
<exec_rows>1000</exec_rows> #数据入库时允许的最大批量行数,取值范围在 1-2000,默认值 1
<case_sensitive>1</case_sensitive> #NET 模块针对对像名大小写敏感
<toggle_case>0</toggle_case> #EXEC 模块操作数据库对像时,对像名保持大小写不变
<exec_policy>2</exec_policy> #事务入库出错时,忽略出错的操作后继续执行,出错事务中的其它操作会继续进行入库
<ddl_continue>1</ddl_continue> #DDL 出错时是否允许继续同步
<commit_policy>1</commit_policy> #多个事务并行入库时如果事务之间有关联的表,关联事务会按各事务提交的先后顺序串行执行,非关联的事务则并行执行
<enable_merge>1</enable_merge> #启用事务合并功能
</exec>
</recv>
</dmhs>
[dmdba@dm release]$
源和目标端启动
目的端开启server,开启console连接后执行start exec
启动目标端
目标端窗口1
./dmhs_server dmhs.hs
log:
[dmdba@dm release]$ ./dmhs_server dmhs.hs
MGR[INFO]: DMHS start up, current version: V3.1.3-Build(2019.11.06-89075trunc)_64
MGR[INFO]: 成功加载配置文件,站点号:2, 管理端口:5345, 轮询间隔:3
MGR[INFO]: 正在加载执行模块...
MGR[INFO]: 管理 服务正在监听管理端口:5345
EXE[INFO]: CONNECT: SERVER=192.168.2.87;DRIVER=DM8 ODBC DRIVER;UID=D_DMHS;PWD=******;TCP_PORT=5236;
EXE[INFO]: EXEC_V3.1.2_64
EXE[INFO]: 执行线程 1 已经创建,事务合并:TRUE
EXE[INFO]: 执行线程 2 已经创建,事务合并:TRUE
EXE[INFO]: 执行线程 3 已经创建,事务合并:TRUE
EXE[INFO]: 执行线程 4 已经创建,事务合并:TRUE
EXE[INFO]: 执行线程 5 已经创建,事务合并:TRUE
EXE[INFO]: 执行线程 6 已经创建,事务合并:TRUE
REV[INFO]: 执行 服务数据接收端正在监听数据端口: 5346
MGR[INFO]: 正在初始化分析模块...
MGR[WARN]: 该站点没有配置分析模块参数!
MGR[INFO]: 监控到来自 127.0.0.1 的登录
目标端窗口2
./dmhs_console
connect 127.0.0.1:5345
start exec
log:
[dmdba@dm release]$ ./dmhs_console
CSL[INFO]: DMHS控制台工具: V3.1.3-Build(2019.11.06-89075trunc)_64
DMHS >connect 127.0.0.1:5345
CSL[WARN]: [INPUT CMD: connect 127.0.0.1:5345]
CSL[INFO]: 执行成功
DMHS >start exec
CSL[WARN]: [INPUT CMD: start exec]
CSL[INFO]: 执行成功
DMHS >state
CSL[WARN]: [INPUT CMD: state]
CSL[INFO]: MGR:执行
CSL[INFO]: 执行成功
DMHS >
启动源端
开启第一个窗口执行
./dmhs_server dmhs.hs
log:
[oracle@db release]$ ./dmhs_server dmhs.hs
MGR[INFO]: DMHS start up, current version: V4.2.60-Build(2022.02.24-106302trunc)_D64(Enterprise Edition)
MGR[INFO]: 成功加载配置文件,站点号:1, 管理端口:5345, 轮询间隔:3
MGR[INFO]: 管理 服务正在监听管理端口:5345
MGR[INFO]: 监控到来自 127.0.0.1(dmhs_console) 的登录
MGR[INFO]: 来自 127.0.0.1(dmhs_console) 的连接已经断开!
MGR[INFO]: 监控到来自 127.0.0.1(dmhs_console) 的登录
MGR[INFO]: 来自 127.0.0.1(dmhs_console) 的连接已经断开!
MGR[INFO]: 监控到来自 127.0.0.1(dmhs_console) 的登录
PUB[INFO]: set enable_directio = 0
MGR[INFO]: 正在加载ORACLE日志分析模块...
SND[INFO]: 正在加载过滤信息:
SND[INFO]: ENABLE: SCOTT.*
SND[INFO]: 正在加载列映射信息:
SND[INFO]: 分析模块192.168.2.87:5346的日志发送线程已经被创建
SND[INFO]: 分析模块1正在连接站点192.168.2.87:5346...
SND[INFO]: 分析模块1正在重置站点192.168.2.87:5346的执行模块...
SND[INFO]: 分析模块1正在发送映射规则...
SND[INFO]: 分析模块1正在获取站点192.168.2.87:5346上的最小LSN...
SND[INFO]: 分析模块1成功获取LSN:0 LFS:0
SND[INFO]: 分析模块正在确认执行端已经执行完所有提交了的事务...
SND[INFO]: 192.168.2.87:5346到站点1的发送线程已经退出
MGR[INFO]: 正在设置目的端192.168.2.87:5345网匝模式:DISABLE
MGR[INFO]: 发送命令到站点192.168.2.87:5345成功
PUB[INFO]: set enable_directio = 0
PUB[WARN]: 环境NLS_LANG值:AMERICAN_AMERICA.ZHS16GBK 是char_code:PG_GB18030 的子集,修改NLS_LANG 为 AMERICAN_AMERICA.ZHS32GB18030
MGR[INFO]: 正在加载ORACLE日志分析模块...
SND[INFO]: 正在加载过滤信息:
SND[INFO]: ENABLE: SCOTT.*
SND[INFO]: 正在加载列映射信息:
SND[INFO]: 分析模块192.168.2.87:5346的日志发送线程已经被创建
SND[INFO]: 分析模块1正在连接站点192.168.2.87:5346...
SND[INFO]: 分析模块1正在重置站点192.168.2.87:5346的执行模块...
SND[INFO]: 分析模块1正在发送映射规则...
SND[INFO]: 分析模块1正在获取站点192.168.2.87:5346上的最小LSN...
SND[INFO]: 分析模块1成功获取LSN:1008352 LFS:0
CPT[INFO]: 正在初始化系统表信息...
CPT[INFO]: 正在初始化系统表列信息...
CPT[INFO]: 正在初始化分区表信息...
CPT[INFO]: 正在初始化分区表大对象信息...
CPT[INFO]: 正在保存字典信息...
LD[INFO]: 装载ORACLE的实例名: MUGGLE
LD[INFO]: 正在装载表 SCOTT.BONUS(1:4), 装载类型:ALL
MGR[INFO]: 正在设置目的端192.168.2.87:5345网匝模式:DISABLE
MGR[INFO]: 发送命令到站点192.168.2.87:5345成功
LD[INFO]: INSERT:.SCOTT.BONUS
LD[INFO]: lock table:lock table "SCOTT"."BONUS" in share mode nowait
CPT[INFO]: 正在初始化表ID为87523的字典信息...
CPT[INFO]: 正在初始化列信息...
CPT[INFO]: 正在初始化列主键信息...
LD[INFO]: 设置表.SCOTT.BONUS的起始LSN为: 0
LD[WARN]: 设置表.SCOTT.BONUS的起始LSN为: 1008391
LD[INFO]: 正在保存表ID为87523的字典信息
LD[INFO]: 表 SCOTT.BONUS 完成装载, lsn: 1008391, 共 0 行, 用时: 89.145(ms)
LD[INFO]: 表 SCOTT.BONUS 完成装载,共 0 行
LD[INFO]: 正在装载表 SCOTT.SALGRADE(2:4), 装载类型:ALL
LD[INFO]: INSERT:.SCOTT.SALGRADE
LD[INFO]: lock table:lock table "SCOTT"."SALGRADE" in share mode nowait
CPT[INFO]: 正在初始化表ID为87524的字典信息...
CPT[INFO]: 正在初始化列信息...
CPT[INFO]: 正在初始化列主键信息...
LD[INFO]: 设置表.SCOTT.SALGRADE的起始LSN为: 0
LD[WARN]: 设置表.SCOTT.SALGRADE的起始LSN为: 1008392
LD[INFO]: 正在保存表ID为87524的字典信息
LD[INFO]: 表 SCOTT.SALGRADE 完成装载, lsn: 1008392, 共 5 行, 用时: 103.066(ms)
LD[INFO]: 表 SCOTT.SALGRADE 完成装载,共 5 行
LD[INFO]: 正在装载表 SCOTT.DEPT(3:4), 装载类型:ALL
LD[INFO]: INSERT:.SCOTT.DEPT
LD[INFO]: lock table:lock table "SCOTT"."DEPT" in share mode nowait
CPT[INFO]: 正在初始化表ID为87519的字典信息...
CPT[INFO]: 正在初始化列信息...
CPT[INFO]: 正在初始化列主键信息...
LD[INFO]: 设置表.SCOTT.DEPT的起始LSN为: 0
LD[WARN]: 设置表.SCOTT.DEPT的起始LSN为: 1008394
LD[INFO]: 正在保存表ID为87519的字典信息
LD[INFO]: 表 SCOTT.DEPT 完成装载, lsn: 1008394, 共 4 行, 用时: 72.740(ms)
LD[INFO]: 表 SCOTT.DEPT 完成装载,共 4 行
LD[INFO]: 正在装载表 SCOTT.EMP(4:4), 装载类型:ALL
LD[INFO]: INSERT:.SCOTT.EMP
LD[INFO]: lock table:lock table "SCOTT"."EMP" in share mode nowait
CPT[INFO]: 正在初始化表ID为87521的字典信息...
CPT[INFO]: 正在初始化列信息...
CPT[INFO]: 正在初始化列主键信息...
LD[INFO]: 设置表.SCOTT.EMP的起始LSN为: 0
LD[WARN]: 设置表.SCOTT.EMP的起始LSN为: 1008397
LD[INFO]: 正在保存表ID为87521的字典信息
LD[INFO]: 表 SCOTT.EMP 完成装载, lsn: 1008397, 共 14 行, 用时: 76.469(ms)
LD[INFO]: 表 SCOTT.EMP 完成装载,共 14 行
LD[INFO]: 成功装载,总共有 4 张表被装载!
SND[INFO]: 分析模块正在确认执行端已经执行完所有提交了的事务...
SND[INFO]: 192.168.2.87:5346到站点1的发送线程已经退出
MGR[INFO]: 正在初始化分析模块...
PUB[INFO]: set enable_directio = 0
MGR[INFO]: 正在加载ORACLE日志分析模块...
CPT[INFO]: ORA_V3.1.2_D64
CPT[INFO]: 归档路径:/u01/app/oracle/fast_recovery_area/MUGGLE/archivelog
MGR[INFO]: 正在设置目的端192.168.2.87:5345网匝模式:DISABLE
MGR[INFO]: 发送命令到站点192.168.2.87:5345成功
MGR[INFO]: 正在获取站点192.168.2.87:5345上的最小LSN...
MGR[INFO]: 成功获取站点192.168.2.87:5345上的最小LSN: 1008352...
SND[INFO]: 正在加载过滤信息:
SND[INFO]: ENABLE: SCOTT.*
SND[INFO]: 正在加载列映射信息:
SND[INFO]: 分析模块192.168.2.87:5346的日志发送线程已经被创建
SND[INFO]: 分析模块1正在连接站点192.168.2.87:5346...
SND[INFO]: 分析模块1正在重置站点192.168.2.87:5346的执行模块...
SND[INFO]: 分析模块1正在发送映射规则...
SND[INFO]: 分析模块1正在获取站点192.168.2.87:5346上的最小LSN...
SND[INFO]: 分析模块1成功获取LSN:1008352 LFS:0
MGR[INFO]: 日志分析启动成功
CPT[INFO]: 在线日志文件:/oradata/muggle/redo02.log(5)
CPT[INFO]: 在线日志文件:/oradata/muggle/redo03.log(6)
CPT[INFO]: 在线日志文件:/oradata/muggle/redo01.log(7)
CPT[INFO]: 切换到日志文件(/oradata/muggle/redo02.log:11), seq:0!
CPT[INFO]: 切换到日志文件(/oradata/muggle/redo03.log:11), seq:0!
CPT[INFO]: 切换到日志文件(/oradata/muggle/redo01.log:11), seq:0!
CPT[INFO]: 关闭日志文件:7, 有效文件大小:3577
CPT[INFO]: 关闭日志文件:7, 有效文件大小:3577
CPT[INFO]: 切换到日志文件(/oradata/muggle/redo02.log:11), seq:7!
CPT[INFO]: 关闭日志文件:7, 有效文件大小:3577
CPT[INFO]: 关闭日志文件:7, 有效文件大小:3577
CPT[INFO]: 切换到日志文件(/oradata/muggle/redo03.log:11), seq:7!
CPT[INFO]: 关闭日志文件:7, 有效文件大小:3577
CPT[INFO]: 关闭日志文件:7, 有效文件大小:3577
CPT[INFO]: 切换到日志文件(/oradata/muggle/redo01.log:11), seq:7!
CPT[INFO]: SCN 1106764441定位在/oradata/muggle/redo01.log
开启第二个窗口执行
./dmhs_console
connect 127.0.0.1:5345
clear exec lsn
COPY 0 "SCH.NAME='SCOTT'" CREATE|INSERT|DICT
DMHS> start cpt
log:
[oracle@db release]$ ./dmhs_console
DMHS console tool: V4.2.60-Build(2022.02.24-106302trunc)_D64
Copyright (c) 2020, DMHS. All rights reserved.
Type ? or "help" for help, type "quit" to quit console.
连接到DMHS:127.0.0.1:5345
执行成功
Dameng HS Server V4.2.60-Build(2022.02.24-106302trunc)_D64
DMHS> connect 127.0.0.1:5345
执行成功
DMHS> clear exec lsn
执行成功
DMHS> COPY 0 "SCH.NAME='SCOTT'" CREATE|INSERT|DICT
copy mask is : |CREATE|INSERT|TABLE|DICT|PARTITION|OBJID|REP
执行完成,请查看执行模块日志,检查数据装载是否成功
DMHS> start cpt
执行成功
DMHS>
源和目标停止过程
源端操作
dmhs_console窗口
exit
MGR[INFO]: 正在停止虚拟编号为:0 的日志分析模块...
CPT[WARN]: ORACLE日志分析线程退出
CPT[WARN]: ORACLE日志发送线程正在等待NET模块清空队列...
CPT[WARN]: ORACLE日志发送线程退出
CPT[INFO]: 关闭日志文件:7, 有效文件大小:3762
CPT[WARN]: ORACLE日志读线程退出
SND[INFO]: 分析模块正在确认执行端已经执行完所有提交了的事务...
SND[INFO]: 192.168.2.87:5346到站点1的发送线程已经退出
MGR[INFO]: 日志分析模块已经停止
命令执行完成
DMHS 即将停止执行...
[oracle@db release]$
dmhs_server窗口
DMHS> exit
目标端操作
dmhs_console窗口
DMHS >exit
CSL[WARN]: [INPUT CMD: exit]
dmhs_server窗口
exit
MGR[INFO]: 关闭网络接收线程...
REV[INFO]: 执行 服务监听线程退出,监听端口: 5346
MGR[INFO]: 关闭执行线程...
EXE[WARN]: 1 号站点消息拆包线程退出
EXE[WARN]: 执行线程 6 已退出
EXE[WARN]: 执行线程 3 已退出
EXE[WARN]: 执行线程 2 已退出
EXE[WARN]: 执行线程 4 已退出
EXE[WARN]: 执行线程 5 已退出
EXE[WARN]: 执行线程 1 已退出
EXE[INFO]: 正在等待站点:1 上异步消息投递完成...
MGR[INFO]: 接收模块已经停止
CSL[INFO]: 命令执行完成
CSL[INFO]: DMHS 即将停止执行...
[dmdba@dm release]$
创建系统服务管理dmhs源和目标
源端
[oracle@db release]$ cp TemplateDmhsService DmhsService
[oracle@db release]$ vi DmhsService
#set execute environment
#REPLACE DMHS_HOME path
DMHS_HOME=/dmhs/release
#REPLACE program dir
PROG_DIR=/dmhs/release
#REPLACE program config path
CONF_PATH=/dmhs/release/dmhs.hs
#REPLACE need library path, LD_LIBRARY_PATH/LIBPATH
NEED_LIB_PATH=
HS_NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
chmod +x DmhsService
目标端
scp DmhsService root@192.168.2.87:/dmhs/release
chmod +x DmhsService
启动服务
目标端
./DmhsService start
源端
./DmhsService start
服务查看
[oracle@db release]$ ps -ef|grep dmhs|grep -v grep
oracle 15412 1 9 19:04 pts/1 00:00:01 /dmhs/release/dmhs_server /dmhs/release/dmhs.hs -noconsole
[dmdba@dm release]$ ps -ef|grep dmhs|grep -v grep
dmdba 14857 1 0 19:00 pts/0 00:00:00 /dmhs/release/dmhs_server /dmhs/release/dmhs.hs -noconsole
[dmdba@dm release]$
同步测试
源和目标数据量检查
源端
SQL> select count(*) from scott.emp;
COUNT(*)
----------
14
目标端
[dmdba@dm ~]$ disql SYSDBA/SYSDBA
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间: 5.422(毫秒)
disql V8
SQL> SELECT COUNT(*) FROM SCOTT.EMP;
行号 COUNT(*)
---------- --------------------
1 14
已用时间: 1.671(毫秒). 执行号:855.
SQL>
源端dml操作验证
源端更新数据
SQL> update scott.emp set sal=sal+1000 where empno=7902;
1 row updated.
SQL> commit;
Commit complete.
SQL> select * from scott.emp where empno=7902;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- ------------ ---------- --------------------
7902 FORD ANALYST 7566 03-DEC-81 4000 20
目标端查询数据变化
SQL> select * from scott.emp where empno=7902;
行号 EMPNO ENAME JOB MGR HIREDATE
---------- ----- ----- ------- ---- ----------------------------------------------------------------------------------------------------
SAL COMM DEPTNO
------- ---- ------
1 7902 FORD ANALYST 7566 1981-12-03 00:00:00
4000.00 NULL 20
DDL操作验证
源端ddl操作
SQL> create table scott.test(id number,name varchar2(40));
Table created.
SQL> insert into scott.test values(1,'a');
1 row created.
SQL> commit;
Commit complete.
SQL> select * from scott.test;
ID NAME
---------- ----------------------------------------
1 a
SQL>
目标端查询
SQL> select * from scott.test;
行号 ID NAME
---------- -- ----
1 1 a
已用时间: 0.329(毫秒). 执行号:886.
SQL>
ddl_mask解释
附:ddl_mask掩码
含义:DDL 操作功能掩码,默认值 TABLE:OP,需要同步DDL操作时使用。
1) TABLE:允许捕获表的 DDL 操作。
2) VIEW:允许捕获视图的 DDL 操作。
3) PROCEDURE:允许捕获过程的 DDL 操作,支持简写 PRO。
4) FUNCTION:允许捕获函数的 DDL 操作,支持简写 FUN。
5) TRIGGER:允许捕获触发器的 DDL 操作,支持简写 TR。
6) INDEX:允许捕获索引的 DDL 操作。
7) CHECK:允许捕获检查约束的 DDL 操作。
8) SEQUENCE:允许捕获序列的 DDL 操作,支持简写 SEQ。
9) PACKAGE:允许捕获包的 DDL 操作,支持简写 PKG。
10) TYPE:允许捕获 TYPE 类型的 DDL 操作。
11) SYNONYM:允许捕获同义词的 DDL 操作,支持简写 SYN。
12) TABLESPACE:允许捕获表空间的 DDL 操作,支持简写 TS。
13) USER:允许捕获用户的 DDL 操作。
14) ROLE:允许捕获角色的 DDL 操作。
15) SCHEMA:允许捕获模式的 DDL 操作。
16) NTEMP:不允许捕获临时表 CREATE 操作。(仅支持DM7以上版本或ORACLE)
操作部分:
1) CREATE:允许捕获所有数据库对象的创建操作。
2) ALTER:允许捕获所有数据库对象的修改操作。
3) DROP:允许捕获所有数据库对象的删除操作。
4) TRUNCATE:允许捕获表的清空操作。
5) GRANT:允许捕获所有数据库对象的授权操作。
6) REVOKE:允许捕获所有数据库对象的权限回收操作。
7) COMMENT: 允许捕获表和视图的注释操作。
其它:
1) OBJECT:允许捕获所有数据库对象的 DDL 操作,支持简写 OBJ。
2) OPERATION:允许捕获对象的所有DDL操作,支持简写OP,但不包含COMMENT。
3) DEFINE:表的 DDL 同步时,只同步定义,不同步 DDL 带来的数据。
4) PARTITION:允许对分区表的分区 DDL 操作进行同步。
5) PTABLE:分区表 DDL 同步时,直接以源端捕获到的 SQL 语句进行同步。
6) SQL:DDL 同步,通过转发 CPT 捕获到的客户端执行的原始 SQL 语句来进行同步。
7) REC:是否在运行日志中记录捕获的 DDL 操作信息,供研发调试使用。
THE END

墨天轮从乐知乐享的数据库技术社区蓄势出发,全面升级,提供多类型数据库管理服务。墨天轮数据库管理服务旨在为用户构建信赖可托付的数据库环境,并为数据库厂商提供中立的生态支持。
服务官网:https://www.modb.pro/service

点击进入作者服务主页
本文分享自微信公众号 - 墨天轮(enmocs)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。