目录
搭建环境
IP | 数据库安装路径 | 实例路径 | 端口 | |
源端 | 192.168.137.10 | /dm8 | /dm8/data/DMHS | 5240 |
目的端 | 192.168.137.12 | /dm8 | /dm8/data/DMHS | 5240 |
需要提前准备好dm到dm的oci文件libdmoci.so,dmhs安装好以后放置在bin目录下
搭建流程
1. 在源端、目的端安装DMHS
2.编辑环境变量
[root@localhost ~]# vi .bash_profile
[root@localhost ~]# source .bash_profile
3.在源端、目的端初始化实例
[root@localhost bin]# ./dminit path=/dm8/data db_name=DMHS port_num=5240
目的端和源端分别前台启动一次
[root@localhost bin]# ./dmserver /dm8/data/DMHS/dm.ini
4.源端、目的端开启归档和逻辑日志
1) 修改dm.ini
ARCH_INI = 1
RLOG_APPEND_LOGIC = 1
2) 添加归档配置文件(在dm.ini文件目录下创建dmarch.ini)
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/data/DMHS/arch #归档目录
ARCH_FILE_SIZE = 128 #归档文件大小,单位 MB
ARCH_SPACE_LIMIT = 2048 #空间大小限制,0 表示不限制
3) 重启数据库,使配置文件生效
4) 登陆数据库
5) 验证配置正确性
6) 检查归档配置的正确性
SELECT ARCH_DEST, ARCH_FILE_SIZE FROM SYS.V$DM_ARCH_INI WHERE ARCH_TYPE='LOCAL' AND ARCH_IS_VALID='Y';
7) 检查逻辑日志配置的正确性
SELECT PARA_VALUE FROM SYS.V$DM_INI WHERE PARA_NAME = 'RLOG_APPEND_LOGIC';
8) 检查在线日志
SELECT PATH FROM SYS.V$RLOGFILE;
9) 检查 FAST_COMMIT 参数是否为 0(FAST_COMMIT”必须为 0,否则会导致逻辑日志不全而影响)
select para_value from v$dm_ini where para_name = 'FAST_COMMIT';
5. 配置DDL(源端配置)
在源端数据库中以 SYSDBA 用户执行DDL同步脚本,在SYSDBA模式下创建相关DMHS系统表及触发器,并在DMHS配置文件中配置 ddl_mask 参数选项以启用该功能。同步脚本位于 DMHS 安装目录的scripts 子目录下,命名为:ddl_sql_dm8.sql
不要在disql中执行ddl_sql_dm8.sql,会报错,在DM管理工具中能成功执行脚本
6. 配置dmhs.hs
在hs目录的bin目录下
[root@localhost bin]# vi 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>
</base>
<cpt>
<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>5240</db_port>
<parse_thr>1</parse_thr>
<ddl_mask>op:obj</ddl_mask> <!--DDL配置项-->
<arch><!--归档清理配置项-->
<clear_interval>600</clear_interval>
<clear_flag>0</clear_flag>
<dir>/dm8/data/DMHS/arch</dir>
</arch>
<send><!-- 发送模块配置-->
<ip>192.168.137.12</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>
<filter><!--过滤配置项-->
<enable><!-- 白名单,所有允许同步的表 -->
<item>SYSDBA.*</item>
</enable>
</filter>
<map><!--映射配置项-->
</map>
</send>
</cpt>
</dmhs>
目的端:
<?xml version="1.0" encoding="GB2312"?>
<dmhs>
<base>
<lang>ch</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>dm8</db_type>
<db_server>127.0.0.1</db_server>
<db_user>SYSDBA</db_user>
<db_pwd>SYSDBA</db_pwd>
<db_port>5240</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>
7. 开启源端和目的端的DMHS服务
[root@localhost home]# cd /opt/dmhs/bin
[root@localhost bin]# ./dmhs_server dmhs.hs
此时将连接工具语言改为GBK就可解决乱码
8. 开启源端和目的端的console
[root@localhost ~]# cd /opt/dmhs/tool
[root@localhost tool]# ./dmhs_console
此时源端和目的端会自动登陆到服务态
9. 初始装载
connect成功以后,在目的端执行start exec,源端执行clear exec lsn
目的端:
源端:
在源端进行数据装载
DMHS> copy 0 "sch.name='SYSDBA'" dict|create|insert
10. 开启同步
源端:start cpt
目的端:start exec
11. 建表测试
源端建表插入数据,看是否能在目的端搜索数据。
源端:
目的端:
目的端日志文件:
12. 注册DMHS服务
到DMHS安装目录的“/scripts/root”子目录下
[root@localhost ~]# cd /opt/dmhs/scripts/root/
[root@localhost root]# ./dmhs_service_installer.sh -t dmhs_server -x /opt/dmhs/bin/dmhs.hs -d /opt/dmhs/bin -p DMHS
启动服务
[root@localhost bin]# ./DmhsServiceDMHS start