达梦数据对比工具的部署与使用
1、拷贝达梦软件bin目录到Oracle服务器(root用户)
压缩Linux rh6 x86版本的达梦数据库bin目录,例如压缩文件为dmbin.tar.gz,将文件拷贝到Oracle服务器指定目录并解压(如:/home/oracle/dmbin),给目录/home/oracle/dmbin授予相关权限和用户组
chown -R oracle:oinstall /home/oracle/dmbin
2、配置ODBC连接Oracle数据库
(1)上传unixODBC源码文件,解压,编译安装(root用户)
tar -zxvf unixODBC-2.3.7.tar.gz
cd unixODBC-2.3.7
./configure --prefix=/usr/local/unixODBC-2.3.7 --includedir=/usr/include --libdir=/usr/lib --bindir=/usr/bin --sysconfdir=/etc --enable-gui=no
make
make install
ldconfig
#安装成功后,unixODBC所需的头文件都被安装到了/usr/inlucde下,编译好的库文件安装到了/usr/lib下,与unixODBC相关的可执行文件安装到了/usr/bin下,配置文件放到了/etc下。
(2)查看odbc版本,查看配置文件路径(root用户)
odbc_config --version
odbcinst -j
(3)配置odbc.ini和odbcinst.ini(root用户)
vi /etc/odbcinst.ini
[Oracle]
Description = ODBC DRIVER FOR ORACLE
Driver = /oracle/app/oracle/product/19.3.0/db/lib/libsqora.so.19.1
Threading = 0
#注意检查是否配置环境变量,主要为$ORACLE_HOME/lib是否配置
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:/lib:/usr/lib
#查看动态库依赖关系,确保没有not found的依赖库,否则建议使用cp或做软链接的方式对缺失的动态依赖库进行补充,例如libclntsh.so.19.1和libodbcinst.so.2经常会找不到,ln -s source target创建软链接
ldd /oracle/app/oracle/product/19.3.0/db/lib/libsqora.so.19.1linux-vdso.so.1 => (0x00007ffd3a095000)libdl.so.2 => /lib64/libdl.so.2 (0x00007f86b275e000)libm.so.6 => /lib64/libm.so.6 (0x00007f86b245c000)libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f86b2240000)libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f86b2026000)librt.so.1 => /lib64/librt.so.1 (0x00007f86b1e1e000)libaio.so.1 => /lib64/libaio.so.1 (0x00007f86b1c1c000)libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f86b1a02000)libclntsh.so.19.1 => /oracle/app/oracle/product/19.3.0/db/lib/libclntsh.so.19.1 (0x00007f86ad9f4000)libclntshcore.so.19.1 => /oracle/app/oracle/product/19.3.0/db/lib/libclntshcore.so.19.1 (0x00007f86ad454000)libodbcinst.so.2 => /lib/libodbcinst.so.2 (0x00007f86ad239000)libc.so.6 => /lib64/libc.so.6 (0x00007f86ace6b000)/lib64/ld-linux-x86-64.so.2 (0x00007f86b2c1c000)libnnz19.so => /oracle/app/oracle/product/19.3.0/db/lib/libnnz19.so (0x00007f86ac723000)
vi /etc/odbc.ini
[ORACLE19C]
Description = ORACLE ODBC DSN
Driver = Oracle
ServerName = pdb01
PORT = 1521
(4)测试连接(oracle用户)
isql -v ORACLE19C TEST TEST
3、配置ODBC连接达梦数据库
(1)配置odbc.ini和odbcinst.ini(root用户)
vi /etc/odbcinst.ini
[DM ODBC DRIVER]
Description = ODBC DRIVER FOR DM
Driver = /home/oracle/dmbin/libdodbc.so
#注意检查是否配置环境变量,配置环境变量如下:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:/lib:/usr/lib:/home/oracle/dmbin
vi /etc/odbc.ini
[DM8]
Description = DM ODBC DSN
Driver = DM ODBC DRIVER
SERVER = 192.168.10.100
UID = SYSDBA
PWD = SYSDBA
TCP_PORT = 5236
(2)测试连接(dmdba用户)
isql -v DM8 SYSDBA SYSDBA
4、在Oracle和达梦数据库服务器上分别安装DMHS软件
(1)Oracle端创建目录/home/oracle/dmhs,安装到此目录,使用oracle用户安装
(2)达梦端创建目录/home/dmdba/dmhs,安装到此目录,使用dmdba用户安装
以上安装时均选择试用、完整版安装,其他一路回车即可,安装过程省略。
5、编辑agent.xml配置文件
(1)Oracle端配置agent.xml(oracle用户)
vim /home/oracle/dmhs/bin/agent.xml
<?xml version="1.0" encoding="utf-8"?>
<agent><port>2347</port><lang>en</lang><max_session>50</max_session><lock_nowait>1</lock_nowait><thr_num>5</thr_num><group_num>5</group_num><worker_thr>4</worker_thr> #优化参数:单表计算md5的线程数,有效值:[1, 64], 默认为4.只对没有大字段和LONG类型的表有效<database><char_code>PG_GB18030</char_code><type>oracle19c</type><server>192.168.10.101</server><port>5236</port><uid>SYSDBA</uid><psw>SYSDBA</psw></database>
</agent>
(2)达梦端配置agent.xml(dmdba用户)
vim /home/dmdba/dmhs/bin/agent.xml
<?xml version="1.0" encoding="utf-8"?>
<agent><port>2347</port><lang>en</lang><max_session>50</max_session><thr_num>5</thr_num><group_num>5</group_num><worker_thr>4</worker_thr> #优化参数:单表计算md5的线程数,有效值:[1, 64], 默认为4.只对没有大字段和LONG类型的表有效<database><char_code>PG_GB18030</char_code><type>DM8</type><server>192.168.10.100</server><port>5236</port><uid>SYSDBA</uid><psw>SYSDBA</psw></database>
</agent>
6、启动agent进程
(1)启动Oracle端Agent(oracle用户)
nohup /home/oracle/dmhs/bin/dmhs_veri_agent_ora /home/oracle/dmhs/bin/agent.xml -noconsole >> /home/home/oracle/dmhs/bin/log/dmhs_veri_agent_dm.log 2>&1 &
(2)启动达梦端Agent(dmdba用户)
nohup /home/dmdba/dmhs/bin/dmhs_veri_agent_dm8 /home/dmdba/dmhs/bin/agent.xml -noconsole >> /home/dmdba/dmhs/bin/log/dmhs_veri_agent_dm.log 2>&1 &
7、Oracle端编辑veri.xml配置文件(oracle用户)
<?xml version="1.0" encoding="utf-8"?>
<veri><lang>en</lang><max_thr>1</max_thr> #最大线程对数,范围为[1, 10000]<max_obj_thr>10</max_obj_thr><report_left_num>100</report_left_num><max_out_sync>1000</max_out_sync><col_opt>0</col_opt><report_dir>/home/oracle/report</report_dir><temp_dir>/dmhs_temp_dir</temp_dir><down_file>0</down_file><mem_size>30</mem_size> #使用内存限制,默认10GB ;单位GB。<report_buf_size>0</report_buf_size> #记录差异比对记录的最大缓存容量;当设置为0时,不缓存;默认生效,默认值256MB;以MB为单位。<max_queue>200</max_queue><char_code>PG_GB18030</char_code><src><agent_server>192.168.10.101</agent_server><port>2347</port><db_type>oracle19c</db_type><odbc_str><driver>dsn=ORACLE19C</driver><db_server>192.168.10.101</db_server><db_user>TEST</db_user><db_pwd>TEST</db_pwd><db_port>5236</db_port></odbc_str></src><dest><agent_server>192.168.10.100</agent_server><port>2347</port><db_type>DM8</db_type><odbc_str><driver>dsn=DM8</driver><db_server>192.168.10.100</db_server><db_user>SYSDBA</db_user><db_pwd>SYSDBA</db_pwd><db_port>5236</db_port></odbc_str></dest>
</veri>
8、Oracle端编辑job.xml配置文件(oracle用户)
vim /home/oracle/dmhs/bin/job.xml
<?xml version="1.0" encoding="GB2312" ?>
<job><name>job</name><table_list><table_info><table_name>USERA.*==USERA.*</table_name></table_info><table_info><table_name>USERB.*==USERB.*</table_name></table_info></table_list>
</job>
9、开始对比(oracle用户)
cd home/oracle/dmhs/bin/
(1)指定jobfile进行对比,对比指定用户下的所有表
./dmhs_veri conf=veri.xml jobfile=job.xml no_lob=1 mode=normal count=1
(2)指定jobfile进行对比,对比时指定单张表中满足条件的部分数据
--A.创建jobfile
vim /home/oracle/dmhs/bin/table1.xml
<?xml version="1.0" encoding="GB2312" ?>
<job><name>tab1</name><table_list><table_info><table_name>USERA.TABLE1==USERA.TABLE1</table_name></table_info></table_list>
</job>
--B.执行数据对比
./dmhs_veri conf=veri.xml jobfile=TABLE1.xml no_lob=1 mode=normal cond="(ID>1 and NAME LIKE '刘%') or (JOIN_DATE>20231001 and EMP_NO<'1122334')"
#参数含义补充
COND:WHERE条件,同时加到源端数据库和目的端数据库
COND_SRC:WHERE条件,源端数据库
COND_DEST:WHERE条件,目的端数据库
(3)指定多张表,带where条件
--A.创建jobfile
vim /home/oracle/dmhs/bin/all_table.xml
<?xml version="1.0" encoding="GB2312" ?>
<job><name>all_table</name><table_list><table_info><table_name>USERA.TABLE1==USERA.TABLE1</table_name><col_map_flag>3</col_map_flag> #参数说明:列映射配置标记,0不进行列映射,3表示普通列映射,例如“C1==D1”<tab_cmp_flag>0</tab_cmp_flag> #参数说明:0表示表结构和表数据都对比;1表示只需对比表结构。<row_partition_src> #参数说明:行分区功能,依据条件选取表中部分行进行对比。仅仅在静态对比模式下有效,此处控制源AGENT查询条件。<![CDATA[ "ID" < 1000]]></row_partition_src><row_partition_dest> #参数说明:行分区功能,依据条件选取表中部分行进行对比。仅仅在静态对比模式下有效,此处控制目的AGENT查询条件。<![CDATA[ "ID" < 1000]]></row_partition_dest><key_list> #主键列,若没有可忽略<col>ID==ID</col></key_list> <col_list><col>NAME==NAME</col></col_list> #列对比<col_list><col>SEX==GENDER</col></col_list> #列对比</table_info><table_info><table_name>USERA.TABLE2==USERA.TABLE2</table_name><col_map_flag>3</col_map_flag><tab_cmp_flag>0</tab_cmp_flag></table_info></table_list>
</job>
--B.执行数据对比
./dmhs_veri conf=veri.xml jobfile=TABLE1.xml no_lob=1 mode=normal
相关文章:
达梦数据对比工具的部署与使用
1、拷贝达梦软件bin目录到Oracle服务器(root用户) 压缩Linux rh6 x86版本的达梦数据库bin目录,例如压缩文件为dmbin.tar.gz,将文件拷贝到Oracle服务器指定目录并解压(如:/home/oracle/dmbin)&a…...
TLC2543(12位A/D转换器)实现将输入的模拟电压显示到数码管上
代码: #include <reg51.h> #define uchar unsigned char #define uint unsigned int// 数码管0-9 unsigned char seg[] {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F}; sbit SDO P1^0; sbit SDI P1^1; sbit CS P1^2; sbit CLK P1^3; s…...
npm的使用技巧
以下是一些NPM(Node Package Manager)的使用技巧: 1. **获取帮助**: - 使用 npm help 或者 npm <command> --help 可以获取关于特定命令的帮助信息。 2. **命令自动完成**: - 在 Bash、Zsh 等 shell 中&…...
MySQL 5.6的新特性
MySQL 5.6是一个主要的版本发布,它在性能、可伸缩性、可靠性和可用性方面引入了多项重要改进和新特性。它在2013年发布,相比于它的前身MySQL 5.5,MySQL 5.6带来了以下关键升级: 优化的InnoDB存储引擎:MySQL 5.6中的Inn…...
大模型重构云计算:AI原生或将改变格局
摘要:随着AI技术的快速发展,大模型正逐渐改变云计算的格局。本文将深入探讨大模型如何重构云计算,并分析其对云计算的影响。 一、开篇引言 近年来,人工智能技术的飞速发展,特别是大模型的崛起,正在对云计算…...
一文讲清什么是TypeScript装饰器以及如何使用TypeScript装饰器
TypeScript 装饰器是什么? 装饰器(Decorator)是TypeScript提供的一个高级语法,它类似于一种特殊类型的声明,可以附加到类声明,方法,访问符,属性或参数上。装饰器主要以函数的形式出…...
恶意软件样本行为分析——Process Monitor和Wireshark
1.1 实验名称 恶意软件样本行为分析 1.2 实验目的 1) 熟悉 Process Monitor 的使用 2) 熟悉抓包工具 Wireshark 的使用 3) VMware 的熟悉和使用 4) 灰鸽子木马的行为分析 1.3 实验步骤及内容 第一阶段:熟悉 Process Monitor 的使用 利用 Process …...
【XR806开发板试用】通过http请求从心知天气网获取天气预报信息
1. 开发环境搭建 本次评测开发环境搭建在windows11的WSL2的Ubuntu20.04中,关于windows安装WSL2可以参考文章: Windows下安装Linux(Ubuntu20.04)子系统(WSL) (1) 在WSL的Ubuntu20.04下安装必要的工具的. 安装git: sudo apt-get install git …...
NPM介绍与使用
什么是NPM? NPM(Node Package Manager)是一个强大的包管理工具,专门用于Node.js应用程序的依赖管理。它允许开发者轻松地分享、安装、更新和管理项目中使用的库、工具和框架。 NPM的安装 在使用NPM之前,请确保你的机…...
servlet +thymeleaf渲染引擎
servlet thymeleaf渲染引擎 一、maven坐标 <dependency><groupId>org.thymeleaf</groupId><artifactId>thymeleaf</artifactId><version>3.0.12.RELEASE</version> <!-- 使用适当的Thymeleaf版本 --> </dependency> &…...
10分钟了解nextTick,并实现简易版本的nextTick
在 Vue.js 中,有一个特殊的方法 nextTick,它在 DOM 更新后执行一段代码,起到等待 DOM 绘制完成的作用。本文会详细介绍 nextTick 的原理和使用方法,并实现一个简易版的 nextTick,加深对它的理解。 一. 什么是 nextTic…...
oracle表空间对象迁移到其他表空间
oracle数据库的磁盘空间满了,除了简单粗暴的增加磁盘空间外,还可以缩小表空间的datafile,因为正常业务运行中,表数据的删除和增加,会造成表空间里面里面有很多空的地方。方案有很多种,我这里简单介绍一下&a…...
<stdlib.h>头文件: C 语言常用标准库函数详解
文章目录 引言1. <stdlib.h> 概览1.1 头文件包含 2. 内存管理函数2.1 malloc 函数2.2 calloc 函数2.3 realloc 函数2.4 free 函数 3. 随机数生成函数3.1 rand 函数3.2 srand 函数 4. 字符串转换函数4.1 atoi 函数4.2 atof 函数4.3 itoa 函数4.4 ltoa 函数4.5 ultoa函数 5…...
Qt前端技术:3.QSS字体样式
small-caps就是让这个文本中的小写字母用大写的形式写出来并且在用大写的形式表达出来后他本身的大小会变小 有绝对尺寸和相对尺寸的区别 绝对尺寸一般是cm,英寸之类的 相对尺寸如px之类的是由显示器的屏幕分辨率来决定的 如windows用户分辨率一般是96像素点每英…...
阿里面试官:面试了一个能力相当不错的候选人,但背调时,他前同事和领导都说他人品很差,纠结该不该要他?...
* 你好,我是前端队长,在职场,玩副业,文末有福利! 在职场中,背调是个躲不开的事情。不管是各行各业背调可能都存在,只是形式不同而已。而且现在大环境不好,可能对个人的要求还更高一些。 背调的主…...
如何设计树形结构
作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 前置知识:前…...
限量25台,川崎亮相Ninja ZX-10RR冬季限量款
最近川崎发布了自家ZX-10RR的超级限量版,官方称之为冬季测试版,之前也有一些车型推出过冬季测试版,通常是在年底推出,因为这个时候北半球都是非常寒冷的冬天。 不过这台ZX-10RR冬季测试版,并不仅仅只是限量那么简单&am…...
【QT八股文】系列之篇章1 | QT的基础知识及事件/机制
【QT八股文】系列之篇章1 | QT的基础知识及事件/机制 前言0. 基础Qt/PyQt5介绍/关联Qt的优缺点(为什么要用qt来做界面)Qt 的核心机制请简要介绍一下Qt中的主窗口(MainWindow)类,它有哪些重要的函数和成员变量ÿ…...
SpringBoot 3 集成Hive 3
前提条件: 运行环境:Hadoop 3.* Hive 3.* MySQL 8 ,如果还未安装相关环境,请参考:Hive 一文读懂 Centos7 安装Hadoop3 单机版本(伪分布式版本) SpringBoot 2 集成Hive 3 pom.xml <?xml ver…...
STL中优先队列的模拟实现与仿函数的介绍
文章目录 仿函数优先队列的模拟实现 仿函数 上回我们说到,优先队列的实现需要用到仿函数的特性 让我们再回到这里 这里我们发现他传入的用于比较的东西竟然是一个类模板,而不是我们所见到的函数 我们可以先创建一个类,用于比较大小 struc…...
LeetCode刷题--- 目标和
个人主页:元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 http://t.csdnimg.cn/6AbpV 数据结构与算法 http://t.csdnimg.cn/hKh2l 前言:这个专栏主要讲述递归递归、搜…...
【.NET Core】反射(Reflection)详解(二)
【.NET Core】反射(Reflection)详解(二) 文章目录 【.NET Core】反射(Reflection)详解(二)一、概述二、Type类2.1 Type对象表示哪些类型2.2 获取Type及其关联对象类型的方式2.3 Type…...
【错误记录/js】保存octet-stream为文件后数据错乱
目录 说在前面场景解决方式其他 说在前面 后端:go、gin浏览器:Microsoft Edge 120.0.2210.77 (正式版本) (64 位) 场景 前端通过点击按钮来下载一些文件,但是文件内容是一些非文件形式存储的二进制数据。 后端代码 r : gin.Default()r.Stat…...
sql_lab之sqli中的post注入
Post注入 用burpsuit抓包去做 Post第一关:(gxa5) 1.判断是否存在注入 username1or 11 #&password123&submit%E7%99%BB%E5%BD%95 有回显 username1or 12 #&password123&submit%E7%99%BB%E5%BD%95 没有回显 则证明存在sq…...
智能优化算法应用:基于白冠鸡算法3D无线传感器网络(WSN)覆盖优化 - 附代码
智能优化算法应用:基于白冠鸡算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于白冠鸡算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.白冠鸡算法4.实验参数设定5.算法结果6.参考文…...
DETR++: Taming Your Multi-Scale Detection Transformer论文解读
文章目录 前言一、摘要二、引言三、相关研究四、模型方法1、Removing the Encoder方法2、Multi-Head方法3、Shifted Windows方法4、Bi-directional Feature Pyramid方法5、DETR方法 五、实验结果总结 前言 今天查看了一篇DETR论文,本想网络上找博客大概浏览一下&am…...
高级数据结构 <二叉搜索树>
本文已收录至《数据结构(C/C语言)》专栏! 作者:ARMCSKGT 目录 前言正文二叉搜索树的概念二叉搜索树的基本功能实现二叉搜索树的基本框架插入节点删除节点查找函数中序遍历函数析构函数和销毁函数(后序遍历销毁)拷贝构造和赋值重载(前序遍历创建)其他函数…...
蚂蚁集团5大开源项目获开放原子 “2023快速成长开源项目”
12月16日,在开放原子开源基金会主办的“2023开放原子开发者大会”上,蚂蚁集团主导开源的图数据库TuGraph、时序数据库CeresDB、隐私计算框架隐语SecretFlow、前端框架OpenSumi、数据域大模型开源框架DB-GPT入选“2023快速成长开源项目”。 (图…...
SpringBoot+JaywayJsonPath实现Json数据的DSL(按照指定节点表达式解析json获取指定数据)
场景 若依前后端分离版手把手教你本地搭建环境并运行项目: 若依前后端分离版手把手教你本地搭建环境并运行项目_前后端分离项目本地运行-CSDN博客 在上面搭建SpringBoot项目的基础上,并且在项目中引入fastjson、hutool等所需依赖后。 Jayway JsonPat…...
气压计LPS28DFW开发(2)----水压检测
气压计LPS28DFW开发.2--水压检测 概述视频教学样品申请完整代码下载水压计算设置速率和分辨率轮询读取数据测试结果 概述 本文将介绍如何使用 LPS28DFW 传感器来读取的压强数据,来估算水下深度,可以利用液体静压的原理。 最近在弄ST和瑞萨RA的课程&…...
腾讯企点客户通/成都网站seo服务
手机语音信箱能够实现全天24小时的服务时间,设置手机语音信箱,能够使用户不过任何一个电话。如果语音信箱出现了留言的话,用户的手机会接收到消息,手机信箱特别的方便,那么应该如何设置语音信箱呢!接下来小编就具体为大…...
今日油价92汽油下调/桂林seo顾问
#include <stdio.h>#include <math.h>int main(){ /*一个整数,加上100后是一个 完全平方数,再加上168后也是 一个完全平方数,求该数是多少*/ long int i,x,y; for (i1;i<100000;i) { xsqrt(i100); …...
网站建设需要具备什么条件/潍坊网站建设
听说emlog更新到6.0了,下载了一份最新的代码,发现原来的bug还是没有修复。可能是官方没有在意,所以这里简单叙述一下危害。出现的地方在admin/data.php139行if ($action dell_all_bak) {if (!isset($_POST[bak])) {emDirect(./data.php?err…...
wordpress装在根目录文件夹中_如何通过域名直接访问?/卡点视频软件下载
时隔一个月又回到了博客园写文章,很开心O(∩_∩)O~~今天在做需求的涉及到一个固件版本的概念,其中固件组的人谈到了版本号从MSB到LSB排列,检索查阅后将所得整理如下。MSB、LSB?MSB(Most Significant Bit):最高有效位,…...
wordpress改wp admin/软文营销名词解释
题目: 0,1,...n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字,求出这个圆圈里剩下的最后一个数字。 思路: 1、环形链表模拟圆圈 创建一个n个节点的环形链表,然后每次在这个链表中删除…...
越秀区网站建设/手机百度网盘网页版登录入口
运算符含义运算符含义&按位与~取反|按位或<<左移^按位异或>>右移运算量只能是整型或字符型的数据,不能为实型数据。 & 如果参加&运算的是负数,则以补码的形式表示为二进制数,然后按位进行“与”运算。 用途&#x…...