数据库重放:功能摘要
感谢Oracle 11g新的数据库重放(DBR)套件为我们提供了所有讨论到的功能,DBR允许允许DBA:
捕获在生产系统上产生的负载,这包括跨多个会话同时收集所有依赖的事务时捕获并行执行的相同SQL语句的能力。
捕获的数据在测试系统上执行前先要做一些处理,这允许DBA调整负载重放的频率,以及重新映射到不同用户会话,不同服务的连接,或——在Oracle 11g RAC测试系统中重放时,是一个或多个数据库实例。
在测试系统上重放捕获的经过处理过的负载,测试系统的配置符合p+1配置的要求,因此DBA可以准确地判断任何系统改变(包括应用程序改变,软件补丁,甚至硬件升级)对负载的影响,测试系统可以是测试或QA数据库环境,也可以是一个快照备用数据库(关于备用数据库后面的文章有更多的说明)。
执行回归分析突出p+0和p+1模拟负载之间的差异,DBR会自动识别和分析错误回归,数据回归和SQL语句回归的向量。
数据库重放的美妙之处是它消除了创建执行回归分析的模拟负载的必要性,相反,DBA可以准确地执行记录下来的SQL语句,因此这倾向于提供更准确的系统回归实况录像,因为其他外部因素(如网络等待时间)减少了或没有了,所有记录下来的SQL语句组成了重放的负载,实际上看起来几乎不会出现无用的或很少执行的代码,这些代码可能会被忽略,如果应用程序是在一个RAC集群数据库环境中的话这是很关键的。
本文接下来的4小节提供了数据库重放功能的高级入门指南,实现它们的通用目标:在从p+0到p+1迁移一个生产系统时准确判断需要回归到什么程度,本系列后面的文章中,我会介绍如何利用数据库重放功能捕获、预处理、重放和分析重放结果。
第一步:录制负载
Oracle 11g企业管理数据库控制台提供了一个非常直观的管理数据库重放功能的接口,如启用负载捕获,预处理,回归分析等,每一步它都提供了良好的状态反馈信息,图1显示了初始的数据库重放控制台界面:
|
| 图1:数据库重放控制台主界面 |
这一步看到的全部负载就是对生产数据库捕获和录制的内容,DBA只需要保证在生产系统上有足够的负载,DBR做了其他所有事情(捕获所有外部客户端发起执行的SQL语句),这包括:
SQL查询,DML语句和DDL语句。
PL/SQL块和远程过程调用(RPCs)。
对象导航请求和OCI调用。
注意DBS捕获操作执行过程中,Oracle 11g不会停止任何后台运行中的作业,所有内部客户端也可以继续产生请求。
DBR通过一系列影子进程记录负载,这些影子进程过滤出必要的信息准确地复制系统负载,最后将这些元数据写入一系列XML文件,后面重放时就是使用的这些XML文件,Oracle 11g DBA只需要关心文件系统上是否有足够的存储空间来重放这些XML文件。

