准备工作
- 确定且源端的归档日志和逻辑日志已经打开;
dm.ini参数
ARCH_INI = 1
RLOG_APPEND_LOGIC = 1
dmarch.ini文件配置如下:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST =/dbarch/dmarch/arch #归档目录
ARCH_FILE_SIZE = 128 #归档文件大小,单位 MB
ARCH_SPACE_LIMIT = 0 #空间大小限制,0 表示不限制。
- 启动源端和目的端的数据库(特别是修改了归档日志和逻辑日志参数后一定要重启数据库才能生效)。
- 安装dmhs软件,源端目的端都需要安装,使用dmdba用户安装即可,安装过程省略。
正式搭建流程
- 配置DDL(需要同步ddl语句的情况下才需要做这一步)通过dmhs安装包安装成功后都会在dmhs安装目录下的scripts文件夹中有对应的sql脚本帮助我们快速生成DDL 触发器和辅助表,需要注意的是,如果你想通过disql工具执行该ddl脚本,需要在文件开始加上set define off;用于关闭变量替换,因为脚本中存在‘&’符号,不关闭情况下提示进行一些无效的输入,导致触发器创建失败。
脚本执行完毕后通过以下sql查询辅助表和触发器是否创建成功:
select owner, table_name from dba_tables where owner = 'SYSDBA' and table_name like 'DMHS%' and status = 'VALID';
select owner, trigger_name from dba_triggers where owner = 'SYSDBA' and trigger_name like 'DMHS%' and status = 'Y';
2. dmhs.hs配置文件放置到dmhs安装目录下的bin目录下
源端dmhs.hs配置为:
<?xml version="1.0" encoding="GB2312"?>
<dmhs>
<base>
<lang>ch</lang>
<mgr_port>5345</mgr_port>
<ckpt_interval>60</ckpt_interval>
<siteid>1</siteid>
<version>2.0</version>
</base>
<cpt>
<db_type>dm7</db_type>
<db_server>127.0.0.1</db_server>
<db_user>SYSDBA</db_user>
<db_pwd>SYSDBA</db_pwd>
<db_port>5236</db_port>
<db_ssl_path></db_ssl_path>
<db_ssl_pwd></db_ssl_pwd>
<parse_thr>1</parse_thr>
<ddl_mask>op:obj</ddl_mask> <!--DDL 配置项-->
<arch><!--归档清理配置项-->
<clear_interval>600</clear_interval>
<clear_flag>2</clear_flag>
<bak_dir>/dbarch/dmarch/arch_bak</bak_dir>
</arch>
<send><!-- 发送模块配置 -->
<ip>192.168.61.152</ip>
<mgr_port>5345</mgr_port>
<data_port>5346</data_port>
<trigger>1</trigger><!-- 是否忽略触发器,默认为 0,限定值 0,1 -->
<constraint>1</constraint><!-- 是否忽略约束,默认为 0,限定值 0,1 -->
<identity>1</identity>
<net_turns>0</net_turns>
<filter><!--过滤配置项-->
<enable><!-- 白名单,所有允许同步的表 -->
<item>SYSDBA.*</item>
</enable>
</filter>
<map><!--映射配置项-->
<item>SYSDBA.*==SYSDBA.*</item>
</map>
</send>
</cpt>
</dmhs>
这里说明一下归档清理配置项,主要是防止归档日志堆积占满磁盘空间,如果数据库本身有清理归档的设置,dmhs里可以不做配置。
白名单和黑名单可以做一些特殊的限制,比如源端的配置项的子配置项
SYSDBA.*,表示只允许sysdba模式进行同步。
目的端dmhs.hs配置为:
<?xml version="1.0" encoding="GB2312"?>
<dmhs>
<base>
<lang>en</lang>
<mgr_port>5345</mgr_port>
<ckpt_interval>60</ckpt_interval>
<siteid>2</siteid>
<version>2.0</version>
</base>
<exec>
<recv>
<data_port>5346</data_port>
</recv>
<db_type>dm7</db_type>
<db_server>127.0.0.1</db_server>
<db_user>SYSDBA</db_user>
<db_pwd>SYSDBA</db_pwd>
<db_port>5236</db_port>
<db_name></db_name>
<exec_thr>4</exec_thr>
<exec_sql>1024</exec_sql>
<exec_trx> 5000 </exec_trx>
<exec_rows>1000</exec_rows>
</exec>
</dmhs>
3.初始装载
目的端dmhs安装目录下的bin目录中,执行
./dmhs_server dmhs.hs
前台启动,键入命令
start exec
开启执行器模块。
此时目的端的全部命令已经执行完毕。
源端dmhs安装目录下的bin目录中,执行
./dmhs_server dmhs.hs
前台启动键入命令
clear exec lsn
源端输入装载命令
copy 0 "sch.name='SYSDBA'" DICT|LSN|CREATE|INSERT|INDEX
源端出现上述提示,表明装载成功,装载完成后即可开启捕获器,源端键入命令start cpt
此时源端数据已经可以同步到目的端了。