Oracle11g 实时应用测试(一)
本文转自李原的博客:新的数据库重放工具好似数据库内的 DVR。使用它可如实地以二进制文件格式捕获 SQL 级别以下的所有数据库活动,然后在同一数据库或不同数据库内进行重放(这正是在进行数据库更改之前大家希望做的)。同时还可以自定义捕获流程,以包括或排除某些特定类型的活动。很不错,赞~今天转篇博文与大家分享,吼吼~
" border="0" />
数据库重放和 SQL Performance Analyzer是Oracle11g的真正应用测试的两大解决方案,也是我在动手过程中感触颇深的亮点。
数据库重放
数据库重放(DBR)是:使DBA可以捕获在生产系统上产生的负载,包括跨多个会话同时收集所有依赖的事务时捕获并行执行的相同SQL语句的能力,然后有选择性地或跨大范围的数据库环境和平台全部重放。这就像准确的系统回归实况录像,因为其他外部因素(如网络等待时间)减少了或没有了,所有记录下来的SQL语句组成了重放的负载。
第一步:捕获负载
建立了一个新用户、表、索引和相关的PL/SQL对象,初始化源数据库环境。
例如:在数据库中为该目录创建一个目录对象:
create directory dbcapture as '/home/oracle/dbcapture';
跟踪Oracle库的所有外部客户端请求,以二进制文件的形式将其存储到文件系统上,最好在捕获负载之前备份整个数据库。
" border="0" />
第二步:处理负载
将捕获的数据转换为重放文件,并创建重放负载所需的所有必要元数据。通常会将捕获文件复制到另一个系统进行处理。捕获的负载经过处理之后,可以在重放系统上反复重放。
" border="0" />
选择Preprocess Workload;
选择目录对象或创建目录;
单击 Preprocess Workload;
提供作业名和相关细节(如主机用户名和口令),或接受默认值;
单击查看作业状态的链接;
第三步:重放负载
一个名为重放客户端的客户端程序处理重放文件并提交对数据库的调用,时间和同步与在捕获系统中完全相同。可以使用一个校准工具来帮助确定一个负载所需的重放客户端的数量。
" border="0" />
选择Replay Workload;
选择重放文件所在的目录;
点击Setup Replay;
单击 Continue;
单击页面上显示的链接更改所有非引用参数;
输入Replay Name或接受默认值;
提供正确的 SYSTEM 口令,决定是否启动多个客户端来并行处理负载;
单击 Next,单击Submit启动重放流程;
第四步:回归分析
重放期间遇到的所有错误都会被记录下来。会显示任何由 DML 或查询返回的行中的差异。可使用 AWR 报告对捕获和重放之间的性能统计信息进行详细的比较。
" border="0" />
DB Replay Report:比较捕获负载和重放负载的执行过程,查找任何可能的数据或错误回归的源。
AWR Report:提供自动工作负载信息库(AWR)报告,分析在重放操作开始到结束这段时间周期内的数据库的整体性能。
ASH Report:通过查看在重放期间的活动会话的历史记录(ASH),找出对性能影响最大的SQL语句和等待事件。