源端:192.168.1.244 Oracle11g
目的端:192.168.1.225 DM8
1.源端环境检查:
#数据库是否开启归档
shutdown immediate
alter database mount;
alter system set db_recovery_file_dest='';
alter system set log_archive_dest_1 = 'location=/data/orcl/arch_log';
alter database open;
#数据库附加日志检查
select supplemental_log_data_min, supplemental_log_data_all from v$database;
--开启数据库最小附加日志级全列日志
alter database add supplemental log data;
alter database add supplemental log data (all) columns;
#创建同步用户DMHS
grant connect to dmhs;
grant select any table to dmhs;
grant select any dictionary to dmhs;
grant create session to dmhs;
grant lock any table to dmhs;
grant execute on dbms_flashback to dmhs;
--如果是oracle12c
grant all on sys.dmhs_ddl_sql to C##dmhs
grant all on sys.col$ to C##dmhs;
grant all on sys.cdef$ to C##dmhs;
grant all on sys.lobfrag$ to C##dmhs;
grant all on sys.obj$ to C##dmhs;
grant all on sys.user$ to C##dmhs;
#配置TNS和监听
检查ODBC库文件:
检查监听服务是否正常,确认新建用户可以通过TNS链接正常
2.目的端达梦数据库创建同步用户dmhs
3.源端Oracle环境安装dmhs软件
源端dmhs.hs配置文件
vi dmhs.hs
<?xml version="1.0" encoding="GB2312"?>
<dmhs>
<base> <!-- 管理模块的基本配置 -->
<lang>en</lang>
<mgr_port>5345</mgr_port>
<ckpt_interval>45</ckpt_interval>
<siteid>3</siteid> <!-- 站点ID,这个ID配置时要注意,全局唯一,最小值0,最大值65535 -->
<version>2.0</version>
</base>
<cpt> <!-- 捕获器模块,这项配置可以配置多个 -->
<db_type>ORACLE11g</db_type> <!-- 源端数据库类型 -->
<db_server>ORCL</db_server> <!-- 源端数据库服务名,DM8和ORACLE为OCI连接的服务名,DM6为连接的服务器IP -->
<db_user>dmhs</db_user> <!-- 源端数据库用户名 -->
<db_pwd>dmhs</db_pwd> <!-- 用户的密码 -->
<db_port>1521</db_port> <!-- 源端数据库端口 -->
<ddl_mask>OP:OBJ</ddl_mask> <!--DDL配置项,写的是掩码,需同步DDL时使用,详见末尾-->
<arch> <!--归档信息配置,该标签是一个功能标签,需要配置它的子项-->
<clear_interval>600</clear_interval> <!--归档日志清理间隔,取值范围在60-65535,单位秒 -->
<clear_flag>0</clear_flag> <!--归档日志清理选项,选配0(不操作),默认为0 -->
</arch>
<send> <!-- 此处仅以发送到网络为例,其他配置详见本手册 4.2NET 发送子模块 -->
<ip>192.168.1.225</ip> <!-- 目标端dmhs的服务器ip -->
<mgr_port>5345</mgr_port> <!-- 目标端dmhs的管理端口号 -->
<data_port>5346</data_port> <!-- 目标端dmhs的data_port -->
<filter> <!-- 过滤配置项,必须指定 -->
<enable> <!-- 白名单,允许同步所有的表 -->
<item>DMHS.*</item> <!-- 要同步的模式名.表名,*代表所有 -->
</enable>
</filter>
<map> <!--映射配置项-->
<item>DMHS.*==DMHS.*</item> <!-- 要同步的模式名,左边是源端,右边是目标端 -->
</map>
</send>
</cpt>
</dmhs>
#源端模拟测试数据:
4.目的端dmhs.hs配置,启动目的端./dmhs_server
vi dmhs.hs
<?xml version="1.0" encoding="GB2312"?>
<dmhs>
<base>
<lang>ch</lang>
<mgr_port>5345</mgr_port>
<chk_interval>2</chk_interval>
<ckpt_interval>45</ckpt_interval>
<siteid>2</siteid>
<version>2.0</version>
</base>
<exec>
<recv>
<data_port>5346</data_port>
</recv>
<db_type>dm8</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>
<char_code>PG_GB18030</char_code>
<enable_merge>0</enable_merge>
<exec_thr>4</exec_thr>
<exec_policy>0</exec_policy>
<exec_sql>1024</exec_sql>
<exec_trx> 5000 </exec_trx>
<exec_rows>1000</exec_rows>
</exec>
</dmhs>
./dmhs_console
start exec
5.源端启动dmhs服务
6.装载数据 ,启动同步
7.验证数据,装载数据正常
8.模拟新增表删除表
源端Oracle: