DMHS数据同步工具

DMHS数据同步工具

​ 本章节主要介绍DM数据同步工具DMHS的使用,通过将oracle11g的数据同步到DM8的过程来理解DMHS的功能和作用。

安装前的准备

端口、服务信息

IP地址服务名称版本端口安装路径
192.168.19.136OracleOracle11.0.21521/opt/oracle
/DMHS源端dmhs_V3.3.20_oracle_rev141041_rh6_64_202310105345/opt/dmhs
192.168.19.133DMDM85236/home/dmdba/dmdbms
/DMHS目的端dmhs_V4.3.32_dm8_rev163952_rh6_64_202407105345/home/dmdba/dmhs

Oracle11g源端的准备

  • 开启归档
    • 切换至oracle用户,创建目录

      mkdir /data/oracle/oradata/orcl/archlog
      
    • 连接数据库,进行归档设置

      # 关闭数据库服务
      SQL> shutdown immediate
      # 以 mount 方式启动 oracle 数据库
      SQL> startup mount
      # 开启归档
      SQL> alter database archivelog;
      # 设置归档文件路径(如果使用本地路径存放归档日志,需要将 db_recovery_file_dest 参数置空,然后设置 log_archive_dest 参数
      SQL> alter system set db_recovery_file_dest='';
      SQL> alter system set log_archive_dest='/opt/oracle/oradata/orcl/archlog';
      # 恢复为 open 状态
      SQL> alter database open;
      # 再次检查归档
      SQL> archive log list;
      

      在这里插入图片描述

  • 开启附加归档

    附加日志(supplemental log)指数据库在日志中添加额外信息到日志流中,以支持基于日志的工具,进行数据的分析。

    • 检查附加日志

      SQL> select SUPPLEMENTAL_LOG_DATA_MIN min,SUPPLEMENTAL_LOG_DATA_PK  pk,SUPPLEMENTAL_LOG_DATA_UI ui,SUPPLEMENTAL_LOG_DATA_FK fk, SUPPLEMENTAL_LOG_DATA_ALL "all" from v$database;
      

      在这里插入图片描述

    • 开启数据库最小附加日志级全列日志

      SQL> alter database add supplemental log data;
      SQL> alter database add supplemental log data (all) columns;
      # 再次检查附加日志
      SQL> select supplemental_log_data_min, supplemental_log_data_all from v$database;
      

      在这里插入图片描述

  • 关闭Oracle的回收机制
    • 检查Oracle的回收机制

      SQL> show parameter recyclebin;
      # 如果是on,需要关闭oracle回收机制
      SQL> alter system set recyclebin=off deferred;
      

      在这里插入图片描述

      • 重启数据库生效

        在这里插入图片描述

  • 检查字符集是否一致
    • 先查询Oracle数据库的字符集

      SQL> select userenv('language') from dual;
      

      在这里插入图片描述

      • Oracle数据库字符集:AMERICAN_AMERICA.WE8MSWIN1252
    • 再查询系统字符集

      echo $NLS_LANG
      
      # 如果该变量值为空或者与查询结果不一致,则将该变量设置为查询结果的值
      vi ~/.bash_profile
      # 增加 export NLS_LANG=”sql查询结果”
      source ~/.bash_profile
      

      在这里插入图片描述

      在这里插入图片描述

  • 创建同步用户及授权
    • 启动Oracle数据库,进行同步用户的相关创建与授权

      SQL> create user DMHS identified by "DMHS" default tablespace  USERS temporary tablespace TEMP profile DEFAULT;
      SQL> grant connect to DMHS;
      SQL> grant create any table to DMHS;
      SQL> grant select any table to DMHS;
      SQL> grant select any dictionary to DMHS;
      SQL> grant create session to DMHS;
      SQL> grant lock any table to DMHS;
      SQL> grant execute on dbms_flashback to DMHS;
      SQL> grant unlimited tablespace to DMHS;
      

      在这里插入图片描述

  • root用户安装ODBC
    • 查看是否安装ODBC

      rpm -qa|grep unixODBC
      

      在这里插入图片描述

    • 添加ODBC的环境变量

      export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
      
    • 安装ODBC

      yum -y install unixODBC unixODBC-devel
      

      在这里插入图片描述

      • 这里我已经安装过了

      • 如果这里yum报错:cannot find a valid baseurl for repo-base/7/x86_64,可以参考这篇文章:

        • https://blog.csdn.net/g310773517/article/details/140321025
      • 安装完成后执行命令

        odbcinst -j
        

        在这里插入图片描述

    • 配置unixODBC

      vim /etc/odbc.ini
      
      • 写入内容:

        [ORACLE]
        Description = Oracle ODBC driver for Oracle 11g
        Driver= Oracle in OraDb11g_home1
        SERVER = 192.168.19.136
        ServerName = orcl
        UserID = DMHS
        Password = DMHS
        Port = 1521
        

        在这里插入图片描述

    • 配置odbcinst.ini文件

      vim /etc/odbcinst.ini
      
      • 增加以下内容:

        [Oracle in OraDb11g_home1]
        Description = ODBC DRIVER FOR ORACLE
        Driver = /opt/oracle/product/11.2.0/db_1/lib/libsqora.so.11.1
        Threading = 0
        

        在这里插入图片描述

    • 查看是否缺少依赖项

      ldd /opt/oracle/product/11.2.0/db_1/lib/libsqora.so.11.1 
      

      在这里插入图片描述

      • 缺少libodbcinst.so.1文件
    • 查找系统其他地方是否有这个依赖

      find / -name libodbcinst*
      

      在这里插入图片描述

    • 将其他地方有的文件复制到路径下

      cp /usr/lib64/libodbcinst.so.2 /lib64/libodbcinst.so.1 
      
      ldd /opt/oracle/product/11.2.0/db_1/lib/libsqora.so.11.1 
      

      在这里插入图片描述

      • 这里就把依赖的路径给写进去了
    • 使用issql进行测试(在oracle用户下进行测试

      isql -v ORACLE DMHS DMHS
      

      在这里插入图片描述

      • 连接成功,说明配置啥的都是可以使用的

DM8目的端的准备

  • 开启归档
    • 连接数据库,查询归档是否开启

      SQL> select arch_mode from v$database;
      

      在这里插入图片描述

      • 我这里是开启了归档

      • 如果没有开启,需要用下面的命令进行开启归档

        alter database mount;
        alter database archivelog;
        alter database add archivelog 'TYPE=LOCAL,DEST=/dmdata/arch,FILE_SIZE=1024,SPACE_LIMIT=10240';
        alter database open;
        
  • 开启逻辑日志
    • 使用SYSDBA连接数据库执行命令

      SP_SET_PARA_VALUE(1,'RLOG_APPEND_LOGIC',1);
      select para_value from v$dm_ini where para_name in ('RLOG_APPEND_LOGIC');
      

      在这里插入图片描述

    • dm.ini 配置参数中“FAST_COMMIT”必须为 0,否则会导致逻辑日志不全而影响同步

      SQL> select para_value from v$dm_ini where para_name = 'FAST_COMMIT';
      

      在这里插入图片描述

  • 创建同步用户及授权
    • 创建用户

      CREATE TABLESPACE HSEXEC DATAFILE 'HSEXEC.DBF' size 128;
      CREATE USER HSEXEC IDENTIFIED by "1314520dsy" DEFAULT TABLESPACE HSEXEC DEFAULT INDEX TABLESPACE HSEXEC;
      GRANT VTI TO HSEXEC;
      GRANT PUBLIC TO HSEXEC; 
      GRANT RESOURCE TO HSEXEC;
      GRANT DBA TO HSEXEC;
      
    • 授权

      SQL> grant resource to HSEXEC;
      SQL> grant select any table to HSEXEC;
      SQL> grant dba to HSEXEC;
      SQL> grant unlimited tablespace to HSEXEC;
      

      在这里插入图片描述

DMHS服务部署

DM8目的端的部署

  • 部署dmhs服务
    • 修改可执行文件的权限,然后执行安装程序

      chmod +x /opt/dmhs_V4.3.32_dm8_rev163952_rh6_64_20240710.bin 
      ./dmhs_V4.2.60_dm8_rev106302_rh6_64_veri_20220225.bin -i
      

      在这里插入图片描述

    • 开始安装,根据提示进行选择

      在这里插入图片描述

      在这里插入图片描述

      • 至此,DMHS已经安装好了
  • 修改服务配置
    • 进入DMHS安装目录下的bin子目录,通过修改示例服务脚本,准备当前的服务启动脚本

      cd /home/dmdba/dmhs/bin
      cp TemplateDmhsService DmhsService
      vim DmhsService
      
      • 需要修改的内容:

        #set execute environment
        #REPLACE DMHS_HOME path
        DMHS_HOME=/home/dmdba/dmhs
        #REPLACE program dir
        PROG_DIR=/home/dmdba/dmhs/bin
        #REPLACE program config path
        CONF_PATH=/home/dmdba/dmhs/bin/dmhs.hs
        #REPLACE need library path, LD_LIBRARY_PATH/LIBPATH
        NEED_LIB_PATH=/home/dmdba/dmhs/bin:/home/dmdba/dmhs/hs_agent:/home/dmdba/dmhs/db/bin
        HS_NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
        

        在这里插入图片描述

    • 在dmhs的bin目录下,新增dmhs.hs配置文件

      cd /home/dmdba/dmhs/bin
      vim dmhs.hs
      
      • 配置内容如下:

        <?xml version="1.0" encoding="GB2312"?>
        <dmhs>
            <base>
                <lang>en</lang>
                <mgr_port>5345</mgr_port>
                <chk_interval>2</chk_interval>
                <ckpt_interval>45</ckpt_interval>
                <siteid>4</siteid>
                <version>2.0</version>
            </base>
            <exec>
                <recv>
                    <data_port>5346</data_port>
                </recv>
                <db_type>dm8</db_type>
                <db_server>192.168.19.133</db_server>
                <db_user>HSEXEC</db_user>
                <db_pwd>1314520dsy</db_pwd>
                <db_port>5236</db_port>
                <char_code>PG_UTF8</char_code>
                <db_name></db_name>
                <exec_thr>8</exec_thr>
                <exec_sql>1024</exec_sql>
                <exec_trx>2000</exec_trx>
                <exec_rows>2000</exec_rows>
                <msg_col_size>30000</msg_col_size>
                <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服务
    • 进入dmhs安装的bin子目录,执行配置好了的服务脚本

      ./DmhsService start
      ./dmhs_console
      # 启动 exec 模块
      DMHS> start exec
      

      在这里插入图片描述

      • 这里我遇到报错:(ORACLE NLS_LANG) is not set in this script, starting failed!!!
      • 分析原因,是DmhsService的参数没写完整,解决方法:写参数HS_NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
    • 可以在/home/dmdba/dmhs/log下看到相关的日志

Oracle源端的部署

  • 部署dmhs服务

    root权限下执行操作

    • 进入到dmhs的目录下,先赋予安装程序权限,执行安装

      ##赋予权限
      chmod a+x dmhs_V4.3.28_oracle_rev152326_rh6_64_20240223_sp7.bin
      
      [root@localhost dmhs]# ./dmhs_V4.3.28_oracle_rev152326_rh6_64_20240223_sp7.bin -i
      

      在这里插入图片描述

      • 操作过程跟上面DM数据库的一样
    • 修改配置文件

      cd /opt/dmhs/bin/
      vi /opt/dmhs/bin/dmhs.hs
      
      • 修改内容如下:(注意修改两个IP)

        <?xml version="1.0" encoding="GB2312"?>
        <dmhs>
            <base>
                <lang>en</lang>
                <mgr_port>5345</mgr_port>
                <ckpt_interval>45</ckpt_interval>
                <siteid>1</siteid>
                <version>2.0</version>
            </base>
            <cpt>
                <db_type>oracle11g</db_type>
                <db_server>192.168.19.136:1521/orcl</db_server>
                <db_user>DMHS</db_user>
                <db_pwd>DMHS</db_pwd>
                <ddl_mask>op:obj</ddl_mask>
                <char_code>PG_UTF8</char_code>
                <constraint>1</constraint>
                <arch>
                    <clear_interval>600</clear_interval>
                    <clear_flag>0</clear_flag>
                </arch>
                <send>
                    <ip>192.168.19.133</ip>
                    <mgr_port>5345</mgr_port>
                    <data_port>5346</data_port>
                    <filter>
                        <enable>
                            <item>DMHS.*</item>
                        </enable>
                        <disable>
                        </disable>
                    </filter>
                    <map>
                        <item>DMHS.*==DMHS.*</item>
                    </map>
                </send>
            </cpt>
        </dmhs>
        
  • 配置服务文件
    • 将模版文件复制一份为正式服务并授权

      cp TemplateDmhsService DmhsService
      chmod +x DmhsService
      
    • 编辑文件

      vi DmhsService
      
      • 编辑内容:

        #set execute environment
        #REPLACE DMHS_HOME path
        DMHS_HOME=/opt/dmhs/bin
        #REPLACE program dir
        PROG_DIR=/opt/dmhs/bin
        #REPLACE program config path
        CONF_PATH=/opt/dmhs/bin/dmhs.hs
        #REPLACE need library path, LD_LIBRARY_PATH/LIBPATH
        NEED_LIB_PATH=
        HS_NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
        

        在这里插入图片描述

  • 启动服务器
    • oracle 用户到 /opt/dmhs/bin 目录下执行命令

      ./DmhsService start
      ./dmhs_console
      

      在这里插入图片描述

      DMHS> clear exec lsn
      DMHS> COPY 0 "SCH.NAME='DMHS'" CREATE
      DMHS> COPY 0 "SCH.NAME='DMHS'" INSERT|THREAD|2
      DMHS> start cpt
      

      在这里插入图片描述

验证同步效果

登录DM检查表是否存在

  • 使用dmdba用户登录DM数据库,看数据表情况

    disql HSEXEC/1314520dsy
    # 查看此时表数据量
    SQL> select table_name from user_tables;
    

    在这里插入图片描述

    • 这里就只有系统表格,没有其他多余的
  • 登录Oracle创建表及添加数据

    • 使用oracle用户登录,创建数据表,添加数据

      # 创建表
      SQL> create table dmhs.test(id int,name varchar2(20));
      # 添加数据
      SQL> insert into dmhs.test values(1,'老吴');
      SQL> insert into dmhs.test values (2,'小吴');
      SQL> insert into dmhs.test values (3,'小圆');
      SQL> commit;
      # 查看表记录
      SQL> select * from dmhs.test;
      

      在这里插入图片描述

      • 这里oracle出现了乱码(目前来说不是重要问题)
  • 登录DM验证同步结果

    • 在dmdba用户执行命令

      disql HSEXEC/1314520dsy
      
    • 查看同步情况

      # 查看系统表,确定数据表 "DMHS.TEST" 在达梦数据库中已创建
      SQL> select table_name from user_tables;
      # 查询表记录,数据跟 Oracle 数据库中数据表记录一致
      SQL> select * from DMHS.TEST;
      

      在这里插入图片描述

      • 也能够勉强看出,这是同步过来了

总结

  • 本次主要搭建DMHS进行Oracle到DM8数据库之间的数据同步,总结上面的安装部署,我踩了很多坑,特别是在oracle数据库上。在完成安装部署后回头一看,上面步骤写的很容易,但自己搭建的时候绝对是问题百出,当然,积极解决问题而不是抱怨问题,最终都会解决。
  • 此外还有些小问题,像编码有误等我就没怎么在这里展示,主要还是以DMHS的搭建为主。

参考

  • https://eco.dameng.com/document/dm/zh-cn/start/dmhs-product-introduction.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/870793.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深入理解Faiss:高效向量检索的利器

近年来&#xff0c;随着人工智能和机器学习技术的飞速发展&#xff0c;向量检索技术变得越来越重要。无论是在推荐系统、图像搜索还是自然语言处理等领域&#xff0c;向量检索都扮演着至关重要的角色。而在众多向量检索库中&#xff0c;Faiss&#xff08;Facebook AI Similarit…

基于Springboot 和Vue 的高校宿舍管理系统源码

网络上很多宿舍管理系统都不完整&#xff0c;大多数缺少数据库文件&#xff0c;所在使用极其不方便&#xff0c;由于本人程序员&#xff0c;根据代码&#xff0c;自己花时间不全了数据库文件&#xff0c;并且可以完美运行&#xff01;&#xff01;&#xff01;&#xff01;&…

C++:C/C++的内存管理

目录 C/C内存分布 C语言中动态内存管理方式 C内存管理方式 new/delete操作内置类型 new/delete操作自定义类型 operator new与operator delete函数 new和delete的实现原理 定位new表达式 常见问题 malloc/free和new/delete的区别 内存泄漏 C/C内存分布 我们先来看以…

【傅里叶分析】复数基础知识

【傅里叶分析】复数基础知识 复数复数的几何意义与点的对应与向量的对应 复数与极坐标辐角与辐角主值三角函数 参考文献 本文参考了网上的其他文章&#xff0c;已在文末参考文献中列出&#xff1b;如有侵权&#xff0c;请联系我删除。 复变函数是傅里叶分析的基础&#xff0c;而…

【原创公式】【完全二叉树】叶结点的计算【数据结构】

完全二叉树叶结点的计算 【铺垫】1叶结点即度为0的结点 2完全二叉树中度为1的结点只可能有0或1个 3完全二叉树的设叶结点仅可能出现在最后2层 设有完全二叉树T 【区分】第k层有a个叶结点≠第k层有a个结点 &#xff08;1&#xff09;第k层有a个叶结点&#xff1a;T的形态不唯一&…

【Linux操作系统】进程控制

目录 一、进程创建1.1 认识fork1.2 写时拷贝 二、进程终止2.1 进程退出2.2 函数退出2.3 exit 三、进程等待四、程序替换 一、进程创建 1.1 认识fork fork函数是系统调用接口&#xff0c;用来创建子进程的 根据进程的pid&#xff0c;可以看出父进程fork后分为父进程和子进程…

单片机原理及技术(六)—— 中断系统的工作原理

目录 一、AT89S51中断技术概述 二、AT89S51中断系统结构 2.1 中断请求源 2.2 中断请求标志寄存器 2.2.1 TCON 寄存器 2.2.2 SCON 寄存器 三、中断允许与中断优先级的控制 3.1 中断允许寄存器 IE 3.2 中断优先级寄存器 IP 四、响应中断请求的条件 五、外部中断的触发…

深入理解java web分层架构的高内聚低耦合

​ 在软件开发中&#xff0c;构建一个高效、可维护且可扩展的应用系统一直是开发者追求的目标。分层架构和依赖注入&#xff08;IOC&#xff09;是实现这一目标的重要策略。本文将深入探讨三层架构的高内聚特性、低耦合的设计原则&#xff0c;以及如何通过IOC&#xff08;控制反…

FPGA开发——在线调试工具Signal Tap的使用

一、简介 在我们进行FPGA进行开发时通常都会经历代码编写&#xff0c;仿真&#xff0c;下板验证等过程。使用FPGA进行开发的小伙伴都知道&#xff0c;在代码编写时往往花费不了太长的时间&#xff0c;下板验证更是。在开发中占绝大部分时间的是仿真&#xff0c;有时候编写代码只…

基于Python的火车票售票系统/基于django的火车购票系统

摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&…

Ubuntu虚拟机服务器的搭建

01.VMware安装 略。 02.Ubuntu虚拟机安装 略。 03.配置Ubuntu虚拟机网络 参考视频&#xff1a; Ubutu虚拟机网络配置&#xff08;桥接&#xff09;https://www.bilibili.com/video/BV1bG411V72A/?spm_id_from333.999.0.0&vd_sourced1fd4bcc46805ab35cc8bbb5a8bf318f…

解决springboot中Aspect注解不生效问题

如下图所示&#xff0c;配置了一个注解类型的Aspect&#xff0c;结果一直不生效 运行结果可以看到&#xff0c;其他非注解类型的Aspect都顺利执行了&#xff0c;但是这个注解的切面就是没有执行 当时也在网上搜了半天&#xff0c;包括在启动类增加配置&#xff0c;接口都要加上…

HTTPS通讯全过程

HTTPS通讯全过程 不得不说&#xff0c;https比http通讯更加复杂惹。在第一次接触https代码的时候&#xff0c;不知道为什么要用用证书&#xff0c;公钥是什么&#xff1f;私钥是什么&#xff1f;他们作用是什么&#xff1f;非对称加密和对称加密是啥&#xff1f;天&#xff0c;…

深度学习设计模式之外观模式

文章目录 前言一、介绍二、特点三、详细分析1.核心组成2.代码示例3.优缺点优点缺点 4.使用场景 总结 前言 外观模式是结构型设计模式&#xff0c;定义一个高层接口&#xff0c;用来访问子系统中的众多接口&#xff0c;使系统更加容易使用。 一、介绍 外观设计模式&#xff08…

一文掌握 Web 测试:功能、界面、兼容与安全的综合测试指南!

随着Web技术的不断演进&#xff0c;测试除了对应用的功能性、界面美观性、跨平台兼容性的基本要求外、安全性和性能的要求也逐步增高。因此&#xff0c;全面、系统的测试思维和策略成为了保证Web应用高质量的关键因素。本篇文章将从功能测试、界面测试、兼容性测试和安全测试四…

transformer-explainer

安装和启动 找到这个项目&#xff0c;然后装好了。 这个项目的目的如名字。 https://github.com/poloclub/transformer-explainerTransformer Explained: Learn How LLM Transformer Models Work with Interactive Visualization - poloclub/transformer-explainerhttps:/…

BVS:多强联手,李飞飞也参与的超强仿真数据生成工具,再掀数据狂潮 | CVPR 2024

BEHAVIOR Vision Suite&#xff08;BVS&#xff09;是一个新型工具包&#xff0c;旨在系统评估和全面理解计算机视觉模型。研究人员能够在场景、对象和相机级别控制各种参数&#xff0c;有助于创建高度定制的数据集。 来源&#xff1a;晓飞的算法工程笔记 公众号 论文: BEHAVIO…

Java基础开发之编译异常和运行异常

一、getProperties()方法 1.System类提供一个getProperties()方法用来**当前系统的全部属性&#xff0c;它会返回一个Properties对象&#xff0c;也封装了系统的全部属性&#xff0c;这些属性的存在是以键值对的形式。 2.getProperties()方法使用例子&#xff1a; public cl…

springboot粮仓管理系统的设计与实现论文源码调试讲解

第3章 系统分析 本文作者在确定了研究的课题之后&#xff0c;从各大数字图书馆下载文献来阅读&#xff0c;并了解同类型的网站具备的大致功能&#xff0c;然后具体事务具体分析&#xff0c;得出本系统要研究的具体功能与性能。虽然分析系统这一阶段性工作主要是确定功能&#…

Java二十三种设计模式-状态模式(20/23)

本文深入探讨了状态模式&#xff0c;一种允许对象根据其内部状态变化而改变行为的软件设计模式。文章从定义、组成部分、实现方式、使用场景、优缺点分析、与其他模式的比较&#xff0c;到最佳实践和建议&#xff0c;全面介绍了状态模式的各个方面。通过Java语言的实现示例和实…