当我们在迁移生产环境数据到达梦数据库时,很多用户担心DMHS安装在Oracle主库上后,DMHS在同步数据时会占用较多服务器的CPU/内存/IO/存储资源进而影响到生产业务。如果用户有Oracle ADG备库,我们可以将DMHS安装在备库上,这样可以将影响降到最低限度。
本文介绍了如何通过DMHS在Oracle主库装载数据,然后修改数据源连接到备库上进行增量数据同步,以及数据同步延迟性验证。
操作系统:CentOS Linux release 7.9.2009 (Core)Oracle
Oracle软件:Oracle Database 19c
达梦数据库:DM Database Server 64 V8
DMHS同步软件:V4.3.32
当DMHS连接Oracle主库进行数据装载时,IP修改为主库连接串
<db_server>192.168.100.121/orcl</db_server>
当DMHS连接Oracle主库进行数据装载时,IP修改为备库连接串
<db_server>192.168.100.122/orcl</db_server>
<?xml version="1.0" encoding="GB2312" standalone="no"?>
<dmhs>
<base>
<lang>en</lang>
<mgr_port>5345</mgr_port>
<name>cpt_ora_link01</name>
<ckpt_interval>60</ckpt_interval>
<siteid>1</siteid>
<version>2.0</version>
</base>
<cpt>
<enable>1</enable>
<name>cpt</name>
<db_type>ORACLE12C</db_type>
<db_server>192.168.100.121/orcl</db_server>
<db_user>dmhs</db_user>
<db_pwd>dmhs</db_pwd>
<db_port>1521</db_port>
<ddl_mask>TABLE:CREATE:DROP:TRUNCATE:ALTER</ddl_mask>
<send>
<ip>192.168.100.188</ip>
<mgr_port>5345</mgr_port>
<data_port>5346</data_port>
<filter>
<enable>
<item>SCOTT.*</item>
</enable>
</filter>
<map>
<item>SCOTT.*==SCOTT.*</item>
</map>
</send>
</cpt>
</dmhs>
<?xml version="1.0" encoding="GB2312" standalone="no"?>
<dmhs>
<base>
<lang>ch</lang>
<mgr_port>5345</mgr_port>
<name>exec_dm_link01</name>
<ckpt_interval>60</ckpt_interval>
<siteid>2</siteid>
<version>2.0</version>
</base>
<exec>
<recv>
<mgr_port>5345</mgr_port>
<data_port>5346</data_port>
</recv>
<enable>1</enable>
<name>exec</name>
<db_type>DM8</db_type>
<db_server>192.168.100.188</db_server>
<db_user>SYSDBA</db_user>
<db_pwd>SYSDBA</db_pwd>
<db_port>5236</db_port>
<char_code>PG_GB18030</char_code>
<exec_thr>4</exec_thr>
<enable_rowid>1</enable_rowid>
</exec>
</dmhs>
DMHS连接到Oracle主库进行数据装载。
COPY 0 "SCH.NAME IN ('SCOTT')" DROP|CREATE|INSERT
注意:DMHS软件安装在Oracle ADG备库时,只能连接主库装载数据,不能在主库进行增量同步,如需在主库进行装载,需要将DMHS软件安装在Oracle主库服务器上。
修改源端dmhs.hs的Oracle连接为备机的IP,并重启dmhs服务。
start cpt
DMHS连接到Oracle ADG备库进行增量数据同步。
DECLARE
v_counter NUMBER := 1;
v_max_count NUMBER := 10000;
BEGIN
LOOP
INSERT INTO SCOTT.EMP (empno, ename, job, mgr, hiredate, sal, comm, deptno)
VALUES (v_counter, 'NEW_EMP_NAME' || v_counter, 'NEW_JOB' || v_counter, v_counter + 1000, SYSDATE, 1000 + v_counter, NULL, 20);
v_counter := v_counter + 1;
IF MOD(v_counter, v_max_count) = 0 THEN
COMMIT;
END IF;
EXIT WHEN v_counter > 1000000;
END LOOP;
COMMIT;
END;
/
DECLARE
v_counter NUMBER := 1;
v_max_count NUMBER := 10000;
BEGIN
LOOP
INSERT INTO SCOTT.EMP (empno, ename, job, mgr, hiredate, sal, comm, deptno)
VALUES (v_counter, 'NEW_EMP_NAME' || v_counter, 'NEW_JOB' || v_counter, v_counter + 1000, SYSDATE, 1000 + v_counter, NULL, 20);
v_counter := v_counter + 1;
IF MOD(v_counter, v_max_count) = 0 THEN
COMMIT;
END IF;
EXIT WHEN v_counter > 5000000;
END LOOP;
COMMIT;
END;
/
DECLARE
v_counter NUMBER := 1;
v_max_count NUMBER := 10000;
BEGIN
LOOP
INSERT INTO SCOTT.EMP (empno, ename, job, mgr, hiredate, sal, comm, deptno)
VALUES (v_counter, 'NEW_EMP_NAME' || v_counter, 'NEW_JOB' || v_counter, v_counter + 1000, SYSDATE, 1000 + v_counter, NULL, 20);
v_counter := v_counter + 1;
IF MOD(v_counter, v_max_count) = 0 THEN
COMMIT;
END IF;
EXIT WHEN v_counter > 10000000;
END LOOP;
COMMIT;
END;
/
问题描述:当主库装载后,连接到备库进行增量同步,可能会遇到以下报错
CPT[ERROR]: Database Magic is not consistent(158449423:870071178), maybe DB is restored or changed, please check connected DB or reload dictionary u
sing CLEAR mask and delete checked file: dmhs_1_0.ini
问题分析:DMHS 数据同步除了第一次配置启动时,强制要求连上源端数据库获取在线日志和归档目录等信息,后续的重启则不再严格要求连接源端数据库,能做到这点主要就是依靠该配置文件。在第一次启动时,CPT 连上数据库以后会把数据库的基本信息保存到该配置文件,当再次启动时,还是优先通过连接数据库来获取必要的信息,当连接不成功时,则会从该 ini 文件中获取上一次保存的信息。
处理措施:将dmhs_1_0.ini移动到其他目录启动CPT服务即可。
文章
阅读量
获赞