DM的学习心得和知识总结(一)|DM数据库Real Application Testing之Database Reply实操(一)

注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下:

1、达梦数据库产品及解决方案,点击前往
2、达梦技术文档,点击前往
3、武汉达梦数据库有限公司 官网首页,点击前往


1、本文内容全部来源于开源社区 GitHub和以上博主的贡献,本文也免费开源(可能会存在问题,评论区等待大佬们的指正)
2、本文目的:开源共享 抛砖引玉 一起学习
3、本文不提供任何资源 不存在任何交易 与任何组织和机构无关
4、大家可以根据需要自行 复制粘贴以及作为其他个人用途,但是不允许转载 不允许商用 (写作不易,还请见谅 💖)


DM数据库Real Application Testing之Database Reply实操

  • 文章快速说明索引
  • 数据库回放的演示
    • 负载捕获
    • 数据回放



文章快速说明索引

学习目标:

目的:前面我们分享过Oracle的RAT的相关实操,接下来看一下DM数据库Real Application Testing之Database Reply实操


学习内容:(详见目录)

1、DM数据库Real Application Testing之Database Reply实操


学习时间:

2023年03月24日 23:45:56


学习产出:

1、DM数据库Real Application Testing之Database Reply实操
2、CSDN 技术博客 1篇


注:下面我们所有的学习环境是Centos7+DM V7

SQL> select * from v$version; 

行号     BANNER                                                       
---------- -------------------------------------------------------------
1          DM Database Server x64 V7.6.0.60-Build(2018.04.17-91260)ENT  
2          DB Version: 0x7000a

已用时间: 2.989(毫秒). 执行号:3.
SQL>

数据库回放的演示

官方文档:

数据库重演(Database Replay)是 DM 中用来重现定位分析问题的一个重要手段,其基本原理是在数据库系统上捕获所有负载(记录外部客户端对服务器的请求),保存到二进制捕获文件,然后通过 DM 提供的数据库重演工具将捕获文件中的请求发送给捕获前由原始数据库备份恢复而来的重演测试系统上,从而帮助重现当时的场景。


准备工作,如下:

[dmdba@dbserver ~]$ cd dmdbms/
bin/       bin2/      data/      desktop/   doc/       drivers/   include/   jar/       jdk/       log/       samples/   script/    tool/      uninstall/ web/       
[dmdba@dbserver ~]$ cd dmdbms/tool/
[dmdba@dbserver tool]$ ls
analyzer      backup.xml     console      dbca.sh  dmagent       dropins  dts.bmp         log4j.xml  manager.bmp  monitor.bmp  p2       restore.xml            startWebServer.sh  templates
analyzer.bmp  configuration  console.bmp  disql    dmservice.sh  dts      dts_cmd_run.sh  manager    monitor      nca.sh       plugins  server_connection.xml  stopWebServer.sh   workspace
[dmdba@dbserver tool]$ 
[dmdba@dbserver tool]$ ./dmservice.sh 
[dmdba@dbserver tool]$ 
[dmdba@dbserver tool]$ cd 
[dmdba@dbserver ~]$ cd dmdbms/bin
[dmdba@dbserver bin]$ ls
asmtest      DmAuditMonitorService     dmlcvt                dmshp2st         libdmasmapi.so    libdmcalc.so       libdmdcp.so            libdmimon_dll_java.so  libdmmsg_parse.so         libdmrarch.so     libdmscp.so     libdmwmon.so       libphp54ts_dm.so    php54_pdo_dm.so
bin          dmbackup                  dmmdf                 dmst2shp         libdmasmparse.so  libdmcfg.so        libdmdcr.so            libdmimon.so           libdmmsg.so               libdmreadline.so  libdmsess.so    libdmwseg.so       libphp55_dm.so      php54ts_pdo_dm.so
cexe         dmcss                     dmmonitor             dmwatch          libdmasm.so       libdmckpt.so       libdmdct.so            libdmjmon.so           libdmnci.so               libdmredo.so      libdmshm.so     libdmxa.so         libphp55ts_dm.so    php55_pdo_dm.so
client_ssl   dmcssm                    dmmppmon              dmwatcher        libdmasvr.so      libdmclientlex.so  libdmde.so             libdmjob.so            libdmnlssort.so           libdmregex.so     libdmshpldr.so  libdodbc.so        libphp56_dm.so      php55ts_pdo_dm.so
dclone       dmctlcvt                  dmmppwatch            dmwmon           libdmaud.so       libdmcomm.so       libdmdpc.so            libdmjson.so           libdmnsort.so             libdmrep.so       libdmstg.so     libdwatcher.so     libphp56ts_dm.so    php56_pdo_dm.so
dexp         dmdata_cmp                DM_PIPE_DMAP_LSNR_RD  dpc_new          libdmbackup.so    libdmcpr.so        libdmdpi.so            libdmknl.so            libdmocci.so              libdmrlog.so      libdmstrt.so    libdwctl.so        libsnappy.so        php56ts_pdo_dm.so
dimp         dmdbchk                   DM_PIPE_DMAP_LSNR_WR  dreplay          libdmbak2.so      libdmcpt.so        libdmdta.so            libdmlic.so            libdmoci.so               libdmrman.so      libdmsys.so     libdwmon.so        libssl.so           pids
disql        dmdbg                     dmrachk               jexe             libdmbak.so       libdmcrypt.so      libdmdw.so             libdmllog.so           libdmoopi.so              libdmrps.so       libdmtbl.so     libgeos_c.so       libxerces-c-3.1.so  rac_reinit
dmamon       dmdcrs                    dmrdc                 jobdts           libdmbcast2.so    libdmcssmon.so     libdmelog.so           libdmlnk.so            libdmopt.so               libdmrs.so        libdmtimer.so   libgeos.so         libxerces-c.so      server_ssl
dmamon_ctl   dmfldr                    dmrestore             lib              libdmbcast.so     libdmcss.so        libdmexe.so            libdmlogmnr_client.so  libdmos.so                libdmrtree.so     libdmtrc.so     libphp52_dm.so     libxqilla.so        service_template
dmap         dmimon                    dmrman                libcrypto.so     libdmbifun.so     libdmcti.so        libdmfil.so            libdmlogmnr.so         libdmpara.so              libdmrwm.so       libdmtrv.so     libphp52ts_dm.so   libz.so             svc_clt_linux.log
DmAPService  dminit                    dmrwm                 libcyt_java.so   libdmblb.so       libdmcvt.so        libdmfldr_comm.so      libdmmal.so            libdmp_disql_dll_java.so  libdmrww.so       libdmtrx.so     libphp53_dm.so     php52_pdo_dm.so     svc_ctl_linux
dmasmcmd     DmInstanceMonitorService  dmrww                 libdisql_dll.so  libdmbldr.so      libdmcyt.so        libdmfldr_dll_java.so  libdmmem.so            libdmp_dll.so             libdmsbtex.so     libdmuthr.so    libphp53_mysql.so  php52ts_pdo_dm.so   SYSWORD.UTF8.LIB
dmasmsvr     dmjmon                    dmserver              libdmamon.so     libdmbrtsk.so     libdmdbg.so        libdmfldr.so           libdmmout.so           libdmpif.so               libdmsbtree.so    libdmutl.so     libphp53ts_dm.so   php53_pdo_dm.so
dmasmtool    DmJobMonitorService       DmServiceDMSERVER     libdmapx.so      libdmbtr.so       libdmdci.so        libdmhfs.so            libdmmppmon.so         libdmrac.so               libdmsbt.so       libdmvtdsk.so   libphp54_dm.so     php53ts_pdo_dm.so
[dmdba@dbserver bin]$ ./disql 
disql V7.6.0.60-Build(2018.04.17-91260)ENT 
用户名:sysdba
密码:

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间: 3.396(毫秒)
Connected to: DM 7.1.6.60
SQL> select * from v$version; 

行号     BANNER                                                       
---------- -------------------------------------------------------------
1          DM Database Server x64 V7.6.0.60-Build(2018.04.17-91260)ENT  
2          DB Version: 0x7000a

已用时间: 2.989(毫秒). 执行号:3.
SQL> 

负载捕获

指定生成重演文件路径和重演时间,-1代表重演由用户手动停止,如下:

SQL> call sp_start_capture('/home/dmdba/dbreplay/replay.rec',-1);
DMSQL 过程已成功完成
已用时间: 2.924(毫秒). 执行号:4.
SQL> create table replay_tbl (id number,name varchar(16));
操作已执行
已用时间: 6.348(毫秒). 执行号:5.
SQL> insert into replay_tbl values (1,'1');
影响行数 1

已用时间: 0.686(毫秒). 执行号:6.
SQL> insert into replay_tbl values (2,'2');
影响行数 1

已用时间: 0.770(毫秒). 执行号:7.
SQL> insert into replay_tbl values (3,'3');
影响行数 1

已用时间: 0.815(毫秒). 执行号:8.
SQL> select * from replay_tbl;

行号     ID NAME
---------- -- ----
1          1  1
2          2  2
3          3  3

已用时间: 0.832(毫秒). 执行号:9.
SQL> insert into replay_tbl values (4,'4');
影响行数 1

已用时间: 0.681(毫秒). 执行号:10.
SQL> insert into replay_tbl values (5,'5');
影响行数 1

已用时间: 0.929(毫秒). 执行号:11.
SQL> delete from replay_tbl where id < 3;
影响行数 2

已用时间: 1.388(毫秒). 执行号:12.
SQL> commit;
操作已执行
已用时间: 1.341(毫秒). 执行号:13.
SQL> call sp_stop_capture();
DMSQL 过程已成功完成
已用时间: 101.440(毫秒). 执行号:14.
SQL>

如上:

  • 系统过程 sp_start_capture 来启动捕获发往数据库的所有负载,并将该阶段收到的所有请求保存到二进制捕获文件中
  • 系统过程 sp_stop_capture 可以停止捕获

捕获二进制文件,如下:

[dmdba@dbserver dbreplay]$ ls
replay.rec
[dmdba@dbserver dbreplay]$ ll
总用量 8
-rw-rw-r-- 1 dmdba dmdba 5610 3月  25 00:06 replay.rec
[dmdba@dbserver dbreplay]$

二进制文件内容,如下:

在这里插入图片描述

注:后面我们借助于一些工具详细看一下其底层逻辑!


数据回放

DM的数据回放是利用其提供的dreplay工具来重演数据,如下:

[dmdba@dbserver bin]$ pwd
/home/dmdba/dmdbms/bin
[dmdba@dbserver bin]$ 
[dmdba@dbserver bin]$ ls dreplay 
dreplay
[dmdba@dbserver bin]$ ll dreplay 
-rwxr-xr-x. 1 dmdba dmdba 26980 12月  8 2021 dreplay
[dmdba@dbserver bin]$ 
[dmdba@dbserver bin]$ ./dreplay help
dreplay V7.6.0.60-Build(2018.04.17-91260)ENT 

格式: ./dreplay KEYWORD=value

例程: ./dreplay SERVER=LOCALHOST:5236 FILE=./test.cpt

必选参数: FILE

关键字              说明(默认值)
--------------------------------------------------------------------------------
SERVER              需要连接的服务器 格式 SERVER:PORT(LOCALHOST:5236)
FILE                捕获文件完整路径
HELP                打印帮助信息

[dmdba@dbserver bin]$

我们这里使用一台机器即可,如下:

SQL> drop table replay_tbl;
操作已执行
已用时间: 60.013(毫秒). 执行号:15.
SQL> commit;
操作已执行
已用时间: 0.247(毫秒). 执行号:16.
SQL>

下面开始回放,如下:

[dmdba@dbserver bin]$ ./dreplay server=localhost:5236 file=/home/dmdba/dbreplay/replay.rec
dreplay V7.6.0.60-Build(2018.04.17-91260)ENT 

1 of 11 operation start...
1 of 11 operation succeed...
2 of 11 operation start...
2 of 11 operation succeed...
3 of 11 operation start...
3 of 11 operation succeed...
4 of 11 operation start...
4 of 11 operation succeed...
5 of 11 operation start...
5 of 11 operation succeed...
6 of 11 operation start...
6 of 11 operation succeed...
7 of 11 operation start...
7 of 11 operation succeed...
8 of 11 operation start...
8 of 11 operation succeed...
9 of 11 operation start...
9 of 11 operation succeed...
10 of 11 operation start...
10 of 11 operation succeed...
11 of 11 operation start...
11 of 11 operation succeed...
replay successfully
[dmdba@dbserver bin]$ 

查看如下:

SQL> select * from replay_tbl;

行号     ID NAME
---------- -- ----
1          3  3
2          4  4
3          5  5

已用时间: 0.251(毫秒). 执行号:27.
SQL>

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

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

相关文章

OpenFeign#1 - FeignClient 是如何注册的?

文章目录EnableFeignClientsFeignClientsRegistrarregisterDefaultConfigurationregisterFeignClientsFeignClientFeignClientFactoryBeanFeignContextfeign(FeignContext)EnableFeignClients 该注解会导致 FeignClientsRegistrar 的注入. Retention(RetentionPolicy.RUNTIME…

如何用canvas制作一个华容道小游戏(乞丐版)

我大抵是废了φ(&#xff0e;&#xff0e;) &#xff0c;横竖都学不进去&#xff0c;上课知识不进脑子&#xff0c;学习光想划水摸鱼&#xff0c;心中仅剩的良知告诉我这样下去是铁定不行的哇&#xff0c;既然学不进去&#xff0c;何不打把游戏&#xff0c;既然要打游戏&#x…

HTML5 Video(视频)

HTML5 Video(视频) 在本节内容中&#xff0c;你将了解到在HTML5中视频是如何工作的、主流浏览器支持的视频格式以及如何对网页中的视频进行控制。 很多站点都会使用到视频. HTML5 提供了展示视频的标准。 检测您的浏览器是否支持 HTML5 视频&#xff1a; Web站点上的视频 直…

SeNet论文解读/总结

此文章为深度学习在计算机视觉领域的图片分类经典论文SeNet&#xff08;Squeeze-and-Excitation Networks&#xff09;论文总结。 此系列文章是非常适合深度学习领域的小白观看的图像分类经典论文。系列文章如下&#xff1a; AlexNet&#xff1a;AlexNet论文解读/总结_alexnet…

在CentOS上安装Docker引擎

1,先决条件#### 1-1操作系统要求1-2 卸载旧版本 2,安装方法2-1使用存储库安装设置存储库安装 Docker 引擎 本文永久更新地址: 官方地址&#xff1a;https://docs.docker.com/engine/install/centos/ 1,先决条件 #### 1-1操作系统要求 要安装 Docker Engine&#xff0c;您需要…

【基础算法】链表相关题目

系列综述&#xff1a; &#x1f49e;目的&#xff1a;本系列是个人整理为了秋招算法的&#xff0c;整理期间苛求每个知识点&#xff0c;平衡理解简易度与深入程度。 &#x1f970;来源&#xff1a;材料主要源于代码随想录进行的&#xff0c;每个算法代码参考leetcode高赞回答和…

官宣|Apache Flink 1.17 发布公告

Apache Flink PMC&#xff08;项目管理委员&#xff09;很高兴地宣布发布 Apache Flink 1.17.0。Apache Flink 是领先的流处理标准&#xff0c;流批统一的数据处理概念在越来越多的公司中得到认可。得益于我们出色的社区和优秀的贡献者&#xff0c;Apache Flink 在 Apache 社区…

STM32F407控制微型推拉式电磁铁(通过继电器)

1、继电器 继电器相当于开关&#xff0c;单片机通过io口高低电平的控制来控制继电器的开闭。采用继电器的好处除了能够用低电压控制高电压&#xff08;如32单片机控制220V的电压&#xff09;外&#xff0c;还可以防止电流反冲&#xff0c;弄烧单片机。 本文采用3.3v的电磁铁&am…

三、MyBatis核心配置文件详解

核心配置文件中的标签必须按照固定的顺序(有的标签可以不写&#xff0c;但顺序一定不能乱)&#xff1a; properties、settings、typeAliases、typeHandlers、objectFactory、objectWrapperFactory、reflectorFactory、plugins、environments、databaseIdProvider、mappers 一、…

b01lers(php.galf)

目录 前文 正文 前文 <?phpclass A{public $codeNULL;public $argsNULL;public function __construct($code,$argsNULL){$this->code$code;$this->args$args;print_r("2333") ;} public function __invoke($code,$args){echo $code;print_r("执行inv…

记一次若依后台管理系统渗透

前言 最近客户开始hw前的风险排查&#xff0c;让我们帮他做个渗透测试&#xff0c;只给一个单位名称。通过前期的信息收集&#xff0c;发现了这个站点&#xff1a; 没有验证码&#xff0c;再加上这个图标&#xff0c;吸引了我注意&#xff1a; 从弱口令开始 若依默认口令为ad…

Android 12.0 Settings主页面去掉FocusRecyclerView相关功能

1.前言 在12.0的系统rom产品定制化开发中,在系统Settings主页面的主菜单中,在测试某些功能的时候,比如开启护眼模式和改变系统密度会在主菜单第一项的网络菜单头部增加 自定义您的设备和设置护眼模式时间安排 等等相关的设置模块 这对于菜单布局显示相当不美观,所以根据系…

机器学习---降维算法

知其然知其所以然【写在前面】主成分分析&#xff08;PCA&#xff09;原理部分代码部分可视化部分线性判别分析&#xff08;LDA&#xff09;原理部分代码部分可视化部分独立成分分析&#xff08;ICA&#xff09;原理部分代码部分可视化部分t-SNE降维算法原理部分代码部分可视化…

请求响应数据?Controler层注解!

目录1. 请求1.1概述1.2 简单参数1.2.1 原始方式1.2.2 SpringBoot方式1.2.3 参数名不一致1.3 实体参数1.3.1 简单实体对象1.3.2 复杂实体对象1.4 数组集合参数1.4.1 数组1.4.2 集合1.5 日期参数1.6 JSON参数1.7 路径参数2. 响应2.1 ResponseBody2.2 统一响应结果1. 请求 1.1概述…

Hive数据仓库简介

文章目录Hive数据仓库简介一、数据仓库简介1. 什么是数据仓库2. 数据仓库的结构2.1 数据源2.2 数据存储与管理2.3 OLAP服务器2.4 前端工具3. 数据仓库的数据模型3.1 星状模型3.2 雪花模型二、Hive简介1. 什么是Hive2. Hive的发展历程3. Hive的本质4. Hive的优缺点4.1 优点4.2 缺…

Vue2响应式原理

目录 Object.defineProperty() 监听对象中的简单数据类型 监听对象中的对象(可以深层) 监听对象中的数组 借鉴的帖子&#xff1a;Object.defineProperty方法&#xff08;详解&#xff09;_objectdefineproperty_搞前端的小菜的博客-CSDN博客 b站视频讲解&#xff1a;Vue2响…

学习 Python 之 Pygame 开发魂斗罗(十三)

学习 Python 之 Pygame 开发魂斗罗&#xff08;十三&#xff09;继续编写魂斗罗1. 创建敌人2类2. 编写敌人2类的draw()函数3. 编写敌人越界消失函数4. 编写敌人开火函数5. 把敌人2加入地图进行测试继续编写魂斗罗 在上次的博客学习 Python 之 Pygame 开发魂斗罗&#xff08;十…

Adapter基础讲解

这一节我们要讲的UI控件都是跟Adapter(适配器)打交道的,了解并学会使用Adapter很重要, Adapter是用来帮助填充数据的中间桥梁,简单来说就是:将各种数据以合适的形式显示到view上,提供 给用户看! 1.MVC模式的简单理解 在开始学习Adapter之前我们要来了解下这个MVC模式概…

SpringBoot——Mybatis-XML映射文件—动态SQL

使用XML映射文件配置SQL语句的规范 XML文件当中的Mapper标签里面使用的select标签的id属性是Mapper接口里面的方法名&#xff0c;resultType属性名是SQL语句要返回的对象类型。 MybatisX插件 用于管理接口方法和映射文件的关系 注解和XML配置SQL语句两种选择 动态SQL——w…

Cookie 和 Session的区别

文章目录时间&#xff1a;2023年3月23日第一&#xff1a;什么是 Cookie 和 Session ?什么是 Cookie什么是 Session第二&#xff1a;Cookie 和 Session 有什么不同&#xff1f;第三&#xff1a;为什么需要 Cookie 和 Session&#xff0c;他们有什么关联&#xff1f;第四&#x…