《Oracle 数据库11g新特性之性能优化篇》
【Replay a captured workload 捕获工作负载新环境重放负载测试压力】
引言:DB Replay工具是Oracle11g的一个新组件,它的加入有效的提高了Oracle在数据迁移、新环境部署、系统升级等场景下的性能监控与自动化优化能力。
真实案例:
一枚客户希望识别环境改变带来的全面影响,一般无法模拟真实环境的工作负载,而DB Repaly可以捕捉到旧环境下的工作负载生成负载文件(包含工作压力和并发性),并把负载文件传送到新环境,在用DB Repaly还原旧环境下的工作负载对新环境的影响,测试其性能情况和稳定性。
应用场合:1.数据库升级
2.操作系统升级
3.存储系统升级
4.数据迁移
5.新环境的部署
分析比较报告:1.错误
2.数据差异
3.性能差异
实现流程:
1.捕获一个数据库工作负载
2.预处理一个数据库工作负载(把负载文件处理为重放文件)
3.重放一个数据库工作负载
还原重放文件用于重放
孤立环境引用
重放客户机wrc模拟客户端
4.新环境下的工作负载性能分析
一、使用Grid Control来完成设置与操作
1.负载文件存放在capture目录下
[oracle@leonarding1 scripts]$ cd capture/
[oracle@leonarding1 capture]$ ll
total 72
drwxr-xr-x 12 oracle dba 4096 Jul 24 22:29 inst1
-rw-r--r-- 1 oracle dba 37490 Jun 22 09:05 wcr_cr.html
-rw-r--r-- 1 oracle dba 18090 Jun 22 09:05 wcr_cr.text
-rw-r--r-- 1 oracle dba 314 Jun 22 09:05 wcr_fcapture.wmd 负载文件
-rw-r--r-- 1 oracle dba 236 Jun 22 09:05 wcr_scapture.wmd
2.创建directory目录对象
[oracle@leonarding1 ~]$ sqlplus / as sysdba
SYS@LEO1> create directory REPLAY_DIR2 as '/home/oracle/scripts/capture';
3.使用GC进行预处理preprocess和重放replay
预处理一个数据库工作负载
GC->LEO1->Software and Support->Real Application Testing->Database Replay
Prepare for Replay-> Preprocess Workload 点击右侧的按钮->处理“负载文件”
Preprocess Captured Workload: Locate Workload 定位负载文件位置,点击“Next“
The captured workload directory must be accessible from this database
这个捕获目录必须是数据库可访问的,有两种方式来定位:我们选择本地目录来捕获
(1)Copy the workload directory to this host from another host.
这个目录可以从另一台机器复制到本机
(2)Use an existing workload directory on this host.
直接使用本机上现有的负载文件
Preprocess Captured Workload: Select Directory 选择目录对象 如果我们已经创建了目录对象,点击“小手电”选择我们刚刚创建的“REPLAY_DIR2”目录对象,点击“Select”,这时将会自动加载现有的负载文件信息到GC,下面会显示“Capture Summary”概述信息,要想看详细信息请点击“Capture Details”
如果你还没有创建目录对象,那么可以点击“Create directory Object”按钮来创建
Name:REPLAY_DIR2
Path:/home/oracle/scripts/capture
加载旧环境工作负载文件:capture -> /home/oracle/scripts目录下,如下所示
drwxr-xr-x 12 oracle dba 4096 Jun 22 09:07 inst1
-rw-r--r-- 1 oracle dba 37490 Jun 22 09:05 wcr_cr.html
-rw-r--r-- 1 oracle dba 18090 Jun 22 09:05 wcr_cr.text
-rw-r--r-- 1 oracle dba 314 Jun 22 09:05 wcr_fcapture.wmd 这就是负载文件
-rw-r--r-- 1 oracle dba 236 Jun 22 09:05 wcr_scapture.wmd
注:加载目录必须有这些文件,否则会报错:显示缺少.wmd类型文件,如下所示
ORA-20222: Workload capture in "REPLAY_DIR2" is missing required .wmd files. ORA-06512: at "SYS.DBMS_WORKLOAD_CAPTURE", line 1121 ORA-06512: at line 1
Capture Summary页面,显示旧环境capture workload概述信息,例如,点击“Next”
Captured Data Size (MB):0.81 捕获数据量
Duration (hh:mm:ss)00:02:11 捕获持续时间
Start Time:Dec 14, 2013 2:55:09 AM EST 捕获开始时间
End Time:Dec 14, 2013 2:57:20 AM EST 捕获结束时间
Start SCN:1827566 捕获起始SCN
End SCN:1833512 捕获结束SCN
AWR Data Exported:Not Possible AWR数据输出
Preprocessed Database Version N/A 预处理数据版本
Preprocess Captured Workload: Schedule 创建预处理作业计划,点击“Next”
Job Name:PREPROCESS-LEO1 -20140622095131
Dscription:leonarding
Start:Immediately
Host Credentials主机认证
UserName:oracle
Password:oracle
Confirm Password:oracle
Preprocess Captured Workload: Review 审核提交信息,点击“Submit”
Job Name:PREPROCESS-LEO1-20140622095131 预处理作业名字
Database:LEO1 数据库名称
Preprocessed Database Version:11.1.0.7.0 预处理数据库版本
Directory Object:REPLAY_DIR2 目录对象名称
Directory Path:/home/oracle/scripts/capture 目录对象路径
Capture Name:CAPTURE-LEO1-20131214024942 捕获负载名称
Captured Data Size (MB):0.81 捕获数据量
Start Time:Immediately 预处理作业立即执行
Job 'PREPROCESS-20140725021212' to prepare the workload has been created successfully. ' to prepare the workload has been created successfully.
预处理作业已经执行完毕
点击“View Job”查看执行详细信息
一定看到Status:Succeeded成功才行,下面有个Error,预处理时会报错但不影响replay
红色的6个文件是预处理后多出来的文件
[oracle@leonarding1 capture]$ ll
total 212
drwxr-xr-x 12 oracle dba 4096 Jul 24 22:29 inst1
-rw-r----- 1 oracle dba 3586 Jul 25 02:17 wcr_calibrate.xml
-rw-r----- 1 oracle dba 12288 Jul 25 02:17 wcr_conn_data.extb
-rw-r--r-- 1 oracle dba 37490 Jun 22 09:05 wcr_cr.html
-rw-r--r-- 1 oracle dba 18090 Jun 22 09:05 wcr_cr.text
-rw-r--r-- 1 oracle dba 314 Jun 22 09:05 wcr_fcapture.wmd
-rw-r----- 1 oracle dba 692 Jul 25 02:17 wcr_login.pp
-rw-r----- 1 oracle dba 35 Jul 25 02:17 wcr_process.wmd
-rw-r--r-- 1 oracle dba 236 Jun 22 09:05 wcr_scapture.wmd
-rw-r----- 1 oracle dba 102400 Jul 25 02:17 wcr_scn_order.extb
-rw-r----- 1 oracle dba 12288 Jul 25 02:17 wcr_seq_data.extb
重放一个数据库工作负载
GC->LEO1->Software and Support->Database Replay->Replay Workload on Test Database->Replay Workload 点击右侧的按钮
Replay Workload: Locate Workload 定位重放文件位置,点击“Next”
The last replayed or preprocessed workload directory must be accessible from this database.
重放和预处理工作负载目录必须是这个数据库可访问的,有两种方式来定位:我们选择本地目录来捕获
(1)Copy the workload directory to this host from another host.
这个目录可以从另一台机器复制到本机
(2)Use an existing workload directory on this host.
直接使用本机上现有的重放文件
Replay Workload: Select Directory 选择目录对象,如果我们已经创建了目录对象,点击“小手电”选择我们刚刚创建的“REPLAY_DIR2”目录对象,点击“Select”。这时将会自动加载现有的重放文件信息到GC,下面会显示“Capture Summary”概述信息,要想看详细信息请点击“Capture Details”
如果你还没有创建目录对象,那么可以点击“Create directory Object”按钮来创建
Name:REPLAY_DIR2
Path:/home/oracle/scripts/capture
预处理之后就会多出6个文件
drwxr-xr-x 12 oracle dba 4096 Jun 22 09:07 inst1
-rw-r----- 1 oracle dba 3586 Jun 22 10:05 wcr_calibrate.xml
-rw-r----- 1 oracle dba 12288 Jun 22 10:05 wcr_conn_data.extb
-rw-r--r-- 1 oracle dba 37490 Jun 22 09:05 wcr_cr.html
-rw-r--r-- 1 oracle dba 18090 Jun 22 09:05 wcr_cr.text
-rw-r--r-- 1 oracle dba 314 Jun 22 09:05 wcr_fcapture.wmd
-rw-r----- 1 oracle dba 692 Jun 22 10:05 wcr_login.pp
-rw-r----- 1 oracle dba 35 Jun 22 10:05 wcr_process.wmd
-rw-r--r-- 1 oracle dba 236 Jun 22 09:05 wcr_scapture.wmd
-rw-r----- 1 oracle dba 102400 Jun 22 10:05 wcr_scn_order.extb
-rw-r----- 1 oracle dba 12288 Jun 22 10:05 wcr_seq_data.extb
选择目录对象之后就会自动加载目录下的capture文件,Capture Summary页面,显示旧环境capture workload概述信息,点击“Next”
Replay Workload: Initialize Options 初始化选项:Use the default replay options,什么也不用动,点击“Next”
Repaly Name:LEO1-20140622102711 自动生成重放作业名
Replay Workload: Customize Options 定制选项,什么都不用动,点击“Next”
Connections Mapping 选项卡上点击“Test Connection”测试,显示Information:The connection test was successful.表示连接成功
Use a single connect descriptor for all client connections. 所有客户端选择“连接串”连接服务端
Replay Parameters 选项卡可以设置重放参数,例如如下参数
Synchronization 同步参数:保证capture时SQL提交的顺序与replay时提交的顺序一致
connect time scale 连接时间尺度:重放开始时刻到第一个会话连接上时的间隔时间
think time scale 思考时间尺度:两个SQL执行之间的间隔时间,默认同capture时一致
think time auto correct 思考时间自动校准:调整think time参数可以自动校准两条SQL执行之间的间隔时间
Replay Workload: Prepare Replay Clients 准备重放客户机,点击Next
Number of Replay Clients and CPUs,点击“Estimate”,可以评估出重放客户端数量和CPU数量
Replay Client Hosts,点击“Add Replay Client Hosts”选择重放客户机主机,默认本机
Replay Workload: Wait for Client Connections 等待客户机连接
数据库已经准备接收来自replay client重放客户机的连接
数据库正在等待replay client重放客户机连接,你现在可以启动replay client重放客户机
启动Replay Clients重放客户机连接服务器
[oracle@leonarding1 capture]$ wrc system/oracle@LEO1 replaydir=/home/oracle/scripts/capture mode=replay
system/oracle@LEO1:system是客户机默认权限用户
replaydir=/home/oracle/scripts/capture:是重放文件的路径
mode=replay:默认模式,模拟客户端并发连接
如果你没有启动数据库重放服务,就启动了Replay Clients重放客户机连接服务器,就会报错
[oracle@leonarding1 capture]$ wrc system/oracle replaydir=/home/oracle/scripts/capture mode=replay
Workload Replay Client: Release 11.1.0.7.0 - Production on Sun Jun 22 11:13:02 2014
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Errors in file :
ORA-15554: cannot start workload replay client because the database server is not in PREPARE mode
不能启动replay client重放客户机,因为数据库服务是不准备模式(即Replaying不是重放模式)
如果发现 Actual Number of Client Connections(实际客户端连接数)为1,点击“Next”
Expected Number of Client Connections(预期客户端连接数)为0
实际我们就启动了一个客户端-符合,这个应该马上就会显示出来。
Replay Workload: Review 审核提交信息
Database LEO1
Capture Name :CAPTURE-LEO1-20131214024942
Replay Name:REPLAY-LEO1-20140725025417
Directory Object:REPLAY_DIR2
Connected Replay Clients:1
Client Connections
预期客户端连接数Expected Number of Client Connections:0
实际客户端连接数Actual Number of Client Connections:1
正在执行工作负载Repaly重放
正在收集工作负载性能信息用于分析,需要等待1分钟,Status:Completed
Elapsed Time Comparison消耗时间对比,Detailed Comparison详细信息对比
Capture:2:11
Replay:1:05
点击“View Workload Replay Report”创建工作负载重放报告
Save to File:保存对比报告,下载路径是桌面
OK:返回数据库重放主页面