DMHS数据同步工具

news2024/12/25 9:12:08

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第100+22步 ChatGPT学习:概率校准 Platt Scaling

基于Python 3.9版本演示 一、写在前面 最近看了一篇在Lancet子刊《eClinicalMedicine》上发表的机器学习分类的文章&#xff1a;《Development of a novel dementia risk prediction model in the general population: A large, longitudinal, population-based machine-learn…

MapBox Android版开发 1 配置

MapBox Android版开发 1 配置 前言MapBox V9 配置创建工程配置地图配置私钥配置公钥配置仓库配置依赖配置权限地图初始化 显示地图布局文件地图Activity 运行效果 MapBox V11 配置创建工程配置地图配置私钥配置公钥配置仓库配置依赖配置权限 显示地图布局文件 运行效果 前言 本…

ee trade:黄金投资与股票投资的区别

黄金和股票&#xff0c; 是金融市场中两种常见的投资工具&#xff0c; 它们拥有截然不同的特点和风险&#xff0c; 了解它们的差异&#xff0c; 可以帮助投资者制定更合理的投资策略。 一、 投资性质&#xff1a; 避险与成长&#xff0c; 两种投资方向 黄金&#xff1a; 被视…

金价徘徊高位,市场聚焦美联储降息预期

现货黄金高位震荡 周二亚市早盘&#xff0c;现货黄金在2500美元/盎司关口附近徘徊&#xff0c;交投于2503.23美元/盎司附近。金价周一在创纪录的高位后出现回调&#xff0c;投资者从涨势中获利了结&#xff0c;并根据美联储的线索调整仓位&#xff0c;现货黄金最终收报2504.1…

Vue - 详细介绍 vue-monoplasty-slide-verify vue3-puzzle-vcode 滑动验证组件

Vue - 详细介绍 vue-monoplasty-slide-verify & vue3-puzzle-vcode 滑动验证组件 在日常的账号登录所需要的大部分是滑动验证来检验人为操作&#xff0c;免于字母验证码的繁琐输入&#xff0c;下面介绍在Vue2和Vue3中适用的滑动验证组件。 1、vue-monoplasty-slide-verif…

【GitLab】使用 Docker 安装 3:gitlab-ce:17.3.0-ce.0 配置

参考阿里云的教程docker的重启 sudo systemctl daemon-reload sudo systemctl restart docker配置 –publish 8443:443 --publish 8084:80 --publish 22:22 sudo docker ps -a 當容器狀態為healthy時,說明GitLab容器已經正常啟動。 root@k8s-master-pfsrv:~

远离内卷,新的跨境电商蓝海,智能小家电沃尔玛1P新赛道——WAYLI威利跨境助力商家

随着全球经济格局的变迁&#xff0c;跨境电商已经成为新的蓝海领域&#xff0c;其中智能小家电市场更是呈现出蓬勃的发展态势。在这样的背景下&#xff0c;沃尔玛1P会员凭借其独特的优势&#xff0c;正开辟出一条全新的跨境电商赛道。 一、智能小家电市场崛起&#xff0c;源于消…

通义灵码代码搜索功能的前沿性研究论文被软件工程国际顶会 FSE 录用

在今年 FSE 2024 软件工程大会上&#xff0c;阿里云通义灵码团队和重庆大学合作的论文《An Empirical Study of Code Search in Intelligent Coding Assistant: Perceptions, Expectations, and Directions》被 FSE Industry 2024 (CCF A) 录用。 本篇论文主要探讨了在智能编码…

告别硬件!试试ToDesk云电脑,让你的云端体验更有趣

在这个不断进步的数字时代&#xff0c;科技的每一次突破都在重新塑造我们的生活和工作模式。随着云计算技术的不断成熟&#xff0c;传统的硬件限制正在逐渐消失&#xff0c;一个全新的云端时代正悄然兴起。ToDesk云电脑作为这场变革的领航者&#xff0c;正引领我们进入一个更加…

海绵城市雨水监测系统简介

海绵城市雨水监测系统主要有&#xff1a;数据采集、无线数据传输、后台云服务、终端平台显示等部分组成。系统通过前端数据采集水质&#xff08;ss\cod\浊度、PH等&#xff09;、雨水雨量、流量、水位、土壤湿度、气象等数据。通过无线数据传输通讯&#xff08;4G、5G、以太网、…

高性能web服务器详解

一、Web服务的基础介绍 正常情况下单次web服务访问的流程简图&#xff1a; 1.1 Web服务介绍 这里介绍的是 Apache 和 NGINX 1.1.1 Apache 经典的Web服务端 Apache 起初由美国的伊利诺伊大学香槟分校的国家超级计算机应用中心开发 目前经历了两大版本分别是 1.X 和 2.X…

Ubuntu 16.04 通过deb包安装内核头文件

文章目录 前言通过deb包安装内核头文件 前言 Ubuntu16.04部分内核版本无法通过 apt-get install linux-headers-$(uname -r) 来进行安装&#xff1a; # cat /etc/lsb-release DISTRIB_IDUbuntu DISTRIB_RELEASE16.04 DISTRIB_CODENAMExenial DISTRIB_DESCRIPTION"Ubuntu…

linux 部署YUM仓库及NFS共享服务

目录 简介 一、YUM仓库服务 1.1 YUM概述 1.2 linux系统各家厂家用的安装源 1.3 yum命令 1.4 yum下载方式 1.5 部署YUM软件仓库 二、NFS共享存储服务 2.1 NFS共享存储服务概念 2.2 NFS配置环境 2.3 使用NFS发布共享资源 2.4 在客户端访问NFS共享 简介 yum&#xff…

测试面试题集锦(五)| 自动化测试与性能测试篇(附答案)

简介 本系列文章总结归纳了一些软件测试工程师常见的面试题&#xff0c;主要来源于个人面试遇到的、网络搜集&#xff08;完善&#xff09;、工作日常讨论等&#xff0c;分为以下十个部分&#xff0c;供大家参考。如有错误的地方&#xff0c;欢迎指正。有更多的面试题或面试中遇…

Apeaksoft Video Converter Ultimate for Mac:强大的视频转换与编辑工具

Apeaksoft Video Converter Ultimate for Mac是一款专为Mac用户设计的视频转换与编辑软件&#xff0c;凭借其强大的功能和用户友好的界面&#xff0c;在视频处理领域脱颖而出。该软件不仅支持多种视频格式的转换&#xff0c;还内置了丰富的视频编辑功能&#xff0c;让用户能够轻…

海康VisionMaster使用学习笔记12-通信框架介绍

1. 通信的用途 用途: 通信是连通算法平台和外部设备的重要渠道&#xff0c;在算法平台中既支持外部数据的读入也支持数据的写出&#xff0c;当通信构建起来以后既可以把软件处理结果发送给外界&#xff0c;又可以通过外界发送字符来触发相机拍照或者软件运行。 2. 通信的种类…

提升工作效率的五大神器

在这个信息爆炸、节奏加速的时代&#xff0c;高效工作已经成为了职场人士追求的目标。如何在短时间内完成更多的工作任务&#xff0c;同时保持高质量的输出&#xff1f;答案在于合理利用工具。以下是五个能够显著提升工作效率的软件推荐&#xff0c;它们各自在任务管理、团队协…

【LLM大模型】大模型涌现能力及 Prompt Engineering提示词

涌现能力 GPT3是第一批拥有“涌现能力”的大语言模型&#xff0c;即模型未经特定任务的训练&#xff0c;但在适当的提示下&#xff0c;仍然能够解决某些特定领域的问题。 例如大语言模型可以解答数学问题、辅助进行编程、甚至是进行问答等&#xff0c;其实都属于模型的涌现能…

FMEA项目难落地?原因在这里

很多企业反馈到“FMEA项目难落地”其实并不是大家不想做好FMEA&#xff0c;目前各个企业做不好的FMEA的最关键的原因&#xff0c;还是大家做FMEA的方法不正确。详情如深圳天行健企业管理咨询公司下文所述&#xff1a; 1、 分析对象定义不清 做FMEA时&#xff0c;首先得弄清楚你…

Xterminal工具的安装与使用体验

Xterminal工具的安装与使用体验 一、Xterminal简介二、Xterminal核心特性三、Xterminal使用场景四、Xterminal下载地址五、Xterminal的基本使用5.1 设置仓库密码5.2 SSH连接5.3 Windows远程桌面5.4 笔记功能5.5 AI工具 六、总结 一、Xterminal简介 Xterminal是一款专为开发者设…