日期:2014-05-16  浏览次数:20616 次

Oracle 11g 新特性 -- Database Replay (重演) 说明

 

一.理论知识说明

 

官方文档的说明:

Introduction to Database Replay

http://docs.oracle.com/cd/E11882_01/server.112/e16540/dbr_intro.htm#RATUG104

 

 

--这部分内容摘自11g OCP 教材。

1.1 为什么使用数据库重演

大型业务关键应用程序不但复杂,而且负载模式和使用模式也相当多。与此同时,这些业务系统要在响应时间、吞吐量、运行时间和可用性方面提供特定服务级别的保证。对系统的任何更改(如升级数据库或修改配置)通常都需要进行全面的测试和验证,然后才能在生产系统中实施这些更改。在移到生产系统之前为了保证安全,数据库管理员(DBA) 需要让测试系统承受与生产环境中的工作量很近似的工作量。DBA 使用一种有效的方式分析系统级更改对整体SQL 性能的影响也很有益处,因为这样便可以在生产之前对更改执行任何必要的优化。

 

为什么使用数据库重放:

(1)  系统更改(如硬件和软件升级)是不可避免的。

(2)  客户需要在实施更改前确定更改的全面影响。

(3)  大量的测试和验证可能会花费很多的时间和资金。

(4)  测试除了成本昂贵之外,成功率还很低:

a)  许多问题未被检测到。

b)  更改可能会对系统的可用性和性能产生负面影响。

(5)  成功率低的原因:

a)  无法使用实际的生产工作量进行正确的测试,有许多问题未被检测到。

(6)  数据库重放功能使您可以执行与实际情况相符合的测试。

 

1.2 数据库重演

通过数据库重放,在将实际的工作量放到生产系统之前,可以在测试系统上重放实际工作量,从而测试系统更改的影响。记录数据库服务器在一段有代表性的时段(例如高峰期间)内的生产工作量(包括事务处理并发度和相关性)。此记录数据用于在经过适当配置的测试系统上重放工作量。通过在测试系统中使数据库服务器承受与生产工作量几乎相同的工作量,可以在数据库更改获得整体成功方面获得高度的信心。

 

数据库重放:

(1)  在测试环境中重新创建实际的生产数据库工作量。

(2)  在生产中实施更改之前,确定和分析潜在的不稳定性。

(3)  捕获生产中的工作量:

a)  捕获带有实际负载和并发度的完整生产工作量

b)  将捕获的工作量移到测试系统

(4)  在测试中重放工作量:

a)  在测试系统中进行所需的更改

b)  重放带有生产负载和并发度的工作量

c)  采用提交顺序

(5)  分析和报告:

a)  错误

b)  数据差异

c)  性能差异

 

1.3 系统体系结构:捕获

一般情况下,可通过重放记录来确定升级到新版本的RDBMS 服务器是否安全。在系统中运行生产工作量时,内置到RDBMS 中的一种特殊记录基础结构可以记录有关所有外部客户机请求的数据。外部请求包括所有SQL 查询、PL/SQL 块、PL/SQL远程过程调用、DML 语句、DDL 语句、对象导航请求或Oracle Call Interface (OCI) 调用。

在记录过程中,后台作业以及通常情况下的所有内部客户机将继续工作,不会被记录。最终结果是一份工作量记录,其中包含重放工作量所必需的全部信息;RDBMS 可通过外部请求来查看这些信息。

记录基础结构只会对记录系统造成最低的性能开销(额外的CPU、内存和输出/输出)。但是,应计划配备额外的磁盘空间用于记录实际工作量。

 

RAC 说明:

RAC 环境中的实例可以访问公用数据库文件。但是,它们不需要共享公用的通用文件系统。在这样的环境中,工作量记录会在记录过程中写入各个实例的文件系统。为了进行处理和重放,需要将工作量记录的所有部分手动复制到单个目录中。

 

 

1.4 系统体系结构:处理工作量

处理工作量捕获数据,创建特定于新工作量重放的元数据文件,这是重放指定工作量捕获所必需的。仅创建新文件,而不对工作量捕获过程中创建的任何文件进行修改。因此,可以对相同的捕获目录多次运行预处理(例如,过程遇到意外错误或被取消时)。

在此阶段中,将重新映射外部客户机连接。可以修改会影响重放结果的所有重放参数。

 

注:

因为处理工作量捕获的成本可能相对较高,所以最好的做法是在生产数据库系统以外的某个系统中执行该操作。

 

 

1.5 系统体系结构:重放

 

在重放系统中重放工作量之前,务必执行以下操作:

1. 在测试系统中还原重放数据库,以便与工作量捕获开始时的捕获数据库匹配。

2. 根据需要更改测试系统(如执行升级等)。

3. 将工作量复制到测试系统。

 

一个名为“重放驱动程序”的特殊应用程序将使用工作量记录,向在其中重放工作量的RDBMS 发送请求。该RDBMS 通常是一个测试系统。假定重放系统的数据库适合于重放已记录的工作量。不会重放内部RDBMS 客户机。重放驱动程序是一种特殊客户机,它使用工作量记录并向测试系统发送相应的请求,其行为与记录工作量过程中使用的客户机在发送外部请求时的行为相同(参见前面的示例)。使用其行为与RDBMS 的唯一外部客户机相同的特殊驱动程序,可以记录和重放客户机不可知的基础结构。

 

重放驱动程序包含一个或多个连接到重放系统的客户机,并且可以根据工作量捕获发送请求。重放驱动程序可以根据网络带宽、CPU 和内存容量,在所有重放客户机之间均匀分配工作量捕获流。

 

 

 

1.6 更改前生产系统

数据库重放侧重于记录和重放RDBMS所承受的工作量。因此,记录工作量的操作是在图中所示的位置完成的。在软件堆栈中的RDBMS 上进行记录可实现此级别以下的所有项目交换,并可使用记录和重放功能测试新的设置。

在重放工作量时,RDBMS 将执行记录过程中发现的操作。也就是说,RDBMS 代码在重放阶段的行为方式与记录阶段的行为方式非常相似。这是通过重新创建所有外部客户机对RDBMS 的请求实现的。外部客户机请求包括了RDBMS 的所有可能的外部客户机发出的请求。

 

 

1.7 支持的工作量

 

1.7.1 支持的工作量: