注册
Oracle11g到DM8同步(网络不直通情况下)
专栏/培训园地/ 文章详情 /

Oracle11g到DM8同步(网络不直通情况下)

Y丶Charles 2025/01/14 210 0 0
摘要

一、环境信息

本次案例的环境信息为oracle 11g 通过 dmhs 同步到dm8。
该案例中网络是需要经过网闸的,即两端网络不互通情况下,需要第三方摆渡工具协助或者手动拷贝源端本地生成环境,时延较大。

二、搭建流程

2.1 搭建前提:

1)Oracle库已经开归档
2)达梦数据库已经部署

2.2 DMHS搭建

2.2.1 安装DMHS

2.2.2 搭建准备工作

①在目的端建立对于业务(同步)用户表空间、用户、模式

CREATE USER "JACK" IDENTIFIED BY 123456789  DEFAULT TABLESPACE "JACK";

②在目的端和源端建立dmhs用户

create user dmhs identified by dmhs123456;
Grant dba to dmhs;
若oracle无法给dba权限,给予权限可参考的,dmhs的脚本 ddl_sql_ora.sql和dmhs_grant.sql

③ sys模式下创建DDL触发器及DDL记录表 --用于支持源端DDL的同步

sql> show parameter "_system_trig_enabled";

2.3.3 搭建目的端hs

①上传DMHS文件

②修改执行权限,并执行安装

 ./dmhs_V4.2.60_dm8_rev106302_rh6_64_veri_20220225.bin -i
Extract install files..........

1.English(English)
2.Simplified Chinese(简体中文)
Select the language to install[2.Simplified Chinese(简体中文)]:2
/tmp/DMHSInstall/install.log
1.免费试用达梦数据实时同步
2.使用已申请的Key文件
验证许可证文件[1.免费试用达梦数据实时同步]:2
Key文件路径:/home/dmhs.key
Key文件限制信息如下:
有效日期:2022-06-25
用户名称:达梦公司产品试用
服务器颁布类型:试用版
发布类型:企业版
Key类型:企业版
授权用户数:无限制
并发连接数:无限制
1.精简版
2.完整版(web客户端)
3.自定义
安装类型[1.精简版]:3
1.实时同步软件服务器
2.远程部署工具
3.实时同步软件客户端
4.内置数据库
5.ODBC驱动
6.实时同步软件配置助手
7.手册
输入选择安装组件的序号,以','分隔:1,7
1.实时同步软件服务器
2.手册
所需磁盘空间:454 MB
安装目录: [/home/dmdba/dmhs]
1.统一部署
2.现在初始化
是否初始化达梦数据实时同步系统[1.统一部署]:2
正在安装
default start ...    default finished.
server start ...    server finished.
doc start ...    doc finished.
postinstall start ...    postinstall finished.
正在创建快捷方式
安装成功
实时同步服务(DMHS)配置
1.英文(English)
2.简体中文(简体中文)
Dmhs语言[2.简体中文(简体中文)]:
请输入mgr端口号 (1000-65535)[5345]:
请输入信息收集间隔 时间(1-60)秒[3]:
请输入检查点间隔时间(10-65536)秒[60]:
请输入站点id(0-65536):1
达梦数据实时同步服务
1.自动
2.手动
启动方式:[2.手动]
正在创建达梦数据实时同步服务
状态监控服务
启动方式:[1.自动]
正在创建状态监控服务
达梦数据实时同步V4.0安装完成
更多安装信息,请查看安装日志文件:
/home/dmdba/dmhs/log/install.log

③检查libdmhs_exec.so依赖

进入到bin的文件目录,检查执行端依赖
ldd libdmhs_exec.so 
linux-vdso.so.1 =>  (0x00007fffd4398000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f5f3102e000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f5f30da9000)
        librt.so.1 => /lib64/librt.so.1 (0x00007f5f30ba1000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f5f30984000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f5f3077f000)
        libdmhs_pub.so => ./libdmhs_pub.so (0x00007f5f30450000)
        libdmhs_ucvt.so => ./libdmhs_ucvt.so (0x00007f5f2fef5000)
        libdmhs_dm_obj.so => ./libdmhs_dm_obj.so (0x00007f5f2fcdf000)
        libdmhs_cvt.so => ./libdmhs_cvt.so (0x00007f5f2fa54000)
        libdodbc.so => /home/dmdba/dmdbms/bin/libdodbc.so (0x00007f5f2f828000)
        /lib64/ld-linux-x86-64.so.2 (0x0000003322600000)
        libdmhs_exp.so => ./libdmhs_exp.so (0x00007f5f2f452000)
        libdmhs_xml.so => ./libdmhs_xml.so (0x00007f5f2f243000)
        libdmoci.so => not found
        libdmdpi.so => /home/dmdba/dmdbms/bin/libdmdpi.so (0x00007f5f2e593000)
        libdmfldr.so => /home/dmdba/dmdbms/bin/libdmfldr.so (0x00007f5f2d927000)
        libdmelog.so => /home/dmdba/dmdbms/bin/libdmelog.so (0x00007f5f2d71f000)
        libdmutl.so => /home/dmdba/dmdbms/bin/libdmutl.so (0x00007f5f2d50a000)
        libdmclientlex.so => /home/dmdba/dmdbms/bin/libdmclientlex.so (0x00007f5f2d2d6000)
        libdmos.so => /home/dmdba/dmdbms/bin/libdmos.so (0x00007f5f2d0a8000)
        libdmcvt.so => /home/dmdba/dmdbms/bin/libdmcvt.so (0x00007f5f2c9c8000)
        libdmstrt.so => /home/dmdba/dmdbms/bin/libdmstrt.so (0x00007f5f2c7b2000)
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f5f2c4ac000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f5f2c296000)
        libdmmem.so => /home/dmdba/dmdbms/bin/libdmmem.so (0x00007f5f2c085000)
        libdmcalc.so => /home/dmdba/dmdbms/bin/libdmcalc.so (0x00007f5f2bdfc000)

④配置dmhs.hs文件

修改替换dmhs.hs参数
vi dmhs.hs

<dmhs>
    <base>
        <lang>ch</lang>
        <mgr_port>5345</mgr_port>
        <name>dm8</name>
        <ckpt_interval>60</ckpt_interval>
        <siteid>1</siteid>
        <version>2.0</version>
    </base>
    <exec>
        <recv>
            <data_file>    <!-- 数据来源自缓存文件,需配置子项-->
                <path>/dmdata/dmhs_file</path>  <!--数据缓存文件所在的本地文件目录-->
                <src_siteid>3</src_siteid>   <!--缓存数据来源的站点号,即源端的siteid-->

                <scan_interval>5</scan_interval>  <!--扫描数据缓存文件目录的时间间隔,单位秒-->

	        <delete_interval>300</delete_interval>  <!--缓存数据文件删除间隔,单位秒-->

            </data_file>
        </recv>
        <enable>1</enable>
        <name>exec</name>
        <db_type>DM8</db_type>
        <db_server>192.168.200.200</db_server>
        <db_user>SYSDBA</db_user>
        <db_pwd>SYSDBA</db_pwd>
        <db_port>5236</db_port>
            <exec_thr>8</exec_thr>
            <exec_sql>1024</exec_sql>
            <exec_trx>2000</exec_trx>
            <exec_rows>2000</exec_rows>
            <ddl_continue>1</ddl_continue>
            <affect_row>0</affect_row>
            <exec_policy>2</exec_policy>
            <enable_rowid>0</enable_rowid>
            <clear_trx_file>1</clear_trx_file>
            <trx_max_file>8</trx_max_file>
    </exec>
</dmhs>

编辑dmhs服务脚本(红色部分为添加部分)
vi DmhsServicedm8

#REPLACE program dir
PROG_DIR=/opt/dmhs/INST_HS/dm8
#REPLACE program config path
CONF_PATH=/opt/dmhs/INST_HS/dm8/dmhs.hs
#REPLACE need library path, LD_LIBRARY_PATH/LIBPATH
NEED_LIB_PATH=
HS_NLS_LANG=AMERICAN_AMERICA.UTF8

启动脚本,查看日志信息(另起窗口)

Starting DmhsServicedm8:                                   [ OK ]

----查看日志信息
tail -100f log/dmhs_202412.log

2024-12-25 00:53:04 MGR[WARN]: The beta version used for more than 3 months, please apply for a formal key.
2024-12-25 01:10:12 MGR[INFO]: DMHS start up, current version: V4.1.48-Build(2021.09.09-102088trunc)_D64(Enterprise Edition)
2024-12-25 01:10:12 MGR[WARN]: License will expire on 2022-06-25
2024-12-25 01:10:12 MGR[INFO]: 成功加载配置文件,站点号:2, 管理端口:5345, 轮询间隔:3
2024-12-25 01:10:13 MGR[INFO]: 管理 服务正在监听管理端口:5345
2024-12-25 01:10:38 MGR[INFO]: 监控到来自 192.168.253.128(dmhs_stat) 的登录
2024-12-25 01:10:38 MGR[INFO]: 监控到来自 192.168.253.128(dmhs_stat) 的登录
2024-12-25 01:10:38 MGR[INFO]: 监控到来自 192.168.253.128(dmhs_stat) 的登录
2024-12-25 01:10:39 MGR[INFO]: 监控到来自 192.168.253.128(dmhs_stat) 的登录

---进入控制台,启动exec

DMHS console tool: V4.1.48-Build(2021.09.09-102088trunc)_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.1.48-Build(2021.09.09-102088trunc)_D64

DMHS> start exec 
执行成功


观察日志信息,输出

执行线程 2 已创建,XXX
执行线程 3 已创建,XXX
执行线程 4 已创建,XXX
执行线程 5 已创建,XXX
执行线程 6 已创建,XXX
执行线程 7 已创建,XXX
执行线程 8 已创建,XXX


到此,目的地部署结束

2.2.4源端的搭建

①在oracle的服务器安装dmhs

Extract install files..........

1.English(English)
2.Simplified Chinese(简体中文)
Select the language to install[2.Simplified Chinese(简体中文)]:
/tmp/DMHSInstall/install.log
1.免费试用达梦数据实时同步
2.使用已申请的Key文件
验证许可证文件[1.免费试用达梦数据实时同步]:2
Key文件路径:/home/dmhs.key
Key文件限制信息如下:
有效日期:2022-06-25
用户名称:达梦公司产品试用
服务器颁布类型:试用版
发布类型:企业版
Key类型:企业版
授权用户数:无限制
并发连接数:无限制
1.精简版
2.完整版(web客户端)
3.自定义
安装类型[1.精简版]:3
1.实时同步软件服务器
2.远程部署工具
3.实时同步软件客户端
4.内置数据库
5.ODBC驱动
6.实时同步软件配置助手
7.手册
输入选择安装组件的序号,以','分隔:1,7
1.实时同步软件服务器
2.手册
所需磁盘空间:462 MB
安装目录: [/home/oracle/dmhs]
1.统一部署
2.现在初始化
是否初始化达梦数据实时同步系统[1.统一部署]:2
正在安装
default start ...    default finished.
server start ...    server finished.
doc start ...    doc finished.
postinstall start ...    postinstall finished.
正在创建快捷方式
安装成功
实时同步服务(DMHS)配置
1.英文(English)
2.简体中文(简体中文)
Dmhs语言[2.简体中文(简体中文)]:
请输入mgr端口号 (1000-65535)[5345]:
请输入信息收集间隔 时间(1-60)秒[3]:
请输入检查点间隔时间(10-65536)秒[60]:
请输入站点id(0-65536):2
达梦数据实时同步服务
1.自动
2.手动
启动方式:[2.手动]
正在创建达梦数据实时同步服务
状态监控服务
启动方式:[1.自动]
正在创建状态监控服务
达梦数据实时同步V4.0安装完成
更多安装信息,请查看安装日志文件:
/home/oracle/dmhs/log/install.log

②检查libcpt_ora.so依赖

进入到/home/oracle/dmhs/bin的文件目录,检查捕获器依赖

linux-vdso.so.1 =>  (0x00007ffd85582000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f3ab4500000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f3ab427b000)
        librt.so.1 => /lib64/librt.so.1 (0x00007f3ab4073000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f3ab3e56000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f3ab3c51000)
        libdmhs_net.so => ./libdmhs_net.so (0x00007f3ab39f5000)
        libdmhs_pub.so => ./libdmhs_pub.so (0x00007f3ab36c6000)
        libdmhs_ld_ora.so => ./libdmhs_ld_ora.so (0x00007f3ab3460000)
        libdmhs_ucvt.so => ./libdmhs_ucvt.so (0x00007f3ab2f05000)
        libclntsh.so.11.1 => /data1/app/oracle/product/11.2.0/lib/libclntsh.so.11.1 (0x00007f3ab049b000)
        /lib64/ld-linux-x86-64.so.2 (0x0000003a41a00000)
        libdmhs_bool_parse.so => ./libdmhs_bool_parse.so (0x00007f3ab028a000)
        libnnz11.so => /data1/app/oracle/product/11.2.0/lib/libnnz11.so (0x00007f3aafebd000)
        libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f3aafca3000)
        libaio.so.1 => /lib64/libaio.so.1 (0x00007f3aafaa2000)

③配置dmhs.hs文件

修改配置dmhs.hs参数
vi dmhs.hs

<dmhs>
    <base>
        <lang>ch</lang>
        <mgr_port>5345</mgr_port>
        <name>ora11g</name>
        <ckpt_interval>60</ckpt_interval>
        <siteid>3</siteid>
        <version>2.0</version>
    </base>
    <cpt>
        <enable>1</enable>
        <name>cpt</name>
        <db_type>Oracle11g</db_type>
        <db_server>192.168.200.202:1521/SANAN</db_server>
        <db_user>dmhs</db_user>
        <db_pwd>dmhs123456</db_pwd>
        <db_port>1521</db_port>
	<ddl_mask>op:obj:COMMENT</ddl_mask>
                <char_code>PG_UTF8</char_code>
                <constraint>1</constraint>
                <arch>
                        <clear_interval>600</clear_interval>
                        <clear_flag>0</clear_flag>
                </arch>
        <arch/>
        <send>
            <data_file>
                <path>/home/oracle/dmhs_file</path>
                <switch_interval>10</switch_interval>
                <size>64</size>
            </data_file>


<filter>
                <enable>
                    <item>DMHS.*</item>
                    <item>JACK.*</item>
                </enable>
            </filter>
        <map>
                <item>DMHS.*==DMHS.*</item>
                <item>JACK.*==JACK.*</item>
        </map>
        </send>
    </cpt>
</dmhs>

启动脚本,查看日志信息(另起窗口)

Starting DmhsServicesrc_oracle:                            [ OK ]

打开dmhs_console控制器执行clear exec lsn,若出现如下日志即成功

DMHS console tool: V4.1.48-Build(2021.09.09-102088trunc)_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.1.48-Build(2021.09.09-102088trunc)_D64

DMHS> clear exec lsn
执行成功


到此,源端部署结束

2.2.5 装载测试

(1)oracle源端创建一个dmhs.test表:

insert into dmhs.test values(1,'中文测试');
commit;

(2)装载数据

./dmhs_console 
DMHS console tool: V4.1.48-Build(2021.09.09-102088trunc)_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.1.48-Build(2021.09.09-102088trunc)_D64

DMHS>  copy 0 "sch.name='DMHS' and tab.name='TEST'" create|insert|fast
copy mask is : |CREATE|INSERT|TABLE|FAST|PARTITION|OBJID|REP
执行完成,请查看执行模块日志,检查数据装载是否成功

(3)拷贝Oracle端目录/home/oracle/dmhs_file下的文件到DM端的/dmdata/dmhs_file目录

(4)等待DM目的端读取目录文件实现数据装载

2.2.6 同步测试

启动同步,在装载测试的表插入带有中文的数据,观察达梦这边同步情况

(1)开启oracle->dm同步

DMHS > start cpt
#### (2)插入数据
INSERT INTO TEST VALUES(2,'同步测试')
commit;

(3)拷贝Oracle端目录/home/oracle/dmhs_file下的文件到DM端的/dmdata/dmhs_file目录

(4)等待DM目的端读取文件后,通过管理工具查询

image.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服