分类:
2008-10-16 19:10:00
这篇文章主要集中讲述如何:
◆从一个Oracle 11g数据库捕获一个真实的负载
◆捕获对应的自动负载仓库(AWR)数据
◆为最后的负载重放准备测试数据库环境
◆传输生产环境配置到测试环境
◆预处理生产负载
◆在测试系统上重放负载
◆分析发现的任何性能问题和分歧
模拟应用程序环境
本文中关于我的测试环境有一点需要说明:为了简化过程,捕获和重放操作都使用相同的数据库。我使用的是最基本的Oracle 11g种子数据库和默认安装的样本方案。数据库将运行在带闪回日志功能的ARCHIVELOG模式下,以便需要重放时可以快速地利用FLASHBACK DATABASE命令回退到某个初始点。
第一阶段:录制负载
◆为了建立一个捕获/重放情景,我建立了一个新用户、表、索引和相关的PL/SQL对象:
◆一个新用户ADMIN,它将被用作所有管理对象的一个仓库,同时,我还创建了一个表主键的值。创建该用户和表的代码请参考附件A:ADMINSetup.sql.
◆PL/SQL包ADMIN.PKG_SEQUENCING控制指定新的主键值,该包的说明参考附件B:pkg_sequencing.spc,该包最初的版本内容参考附件C:pkg_sequencing_v1.bdy.
◆另一个用户AP,它将封装一个帐户支付系统的方案,包括新的表AP.VENDORS,AP.INVOICES和AP.INVOICE_ITEMS,创建这个方案及其相关的对象脚本参考附件D:APSetup.sql.
◆为了填充AP方案的对象,我创建了一个包AP.PKG_LOAD_GENERATOR,它的说明文件和主体文件分别参考附件E:pkg_load_generator.spc和附件F:pkg_load_generator.bdy.
◆最后,APInitialization.sql中的代码用几百行模拟数据填充了表AP.VENDORS,并在表AP.INVOICES中创建了25条发票记录,在表AP.INVOICE_ITEMS中创建了与之对应的发票详细信息条目,收集了ADMIN和AP方案下所有对象的原始统计信息,它还创建了一个目录对象DBRControl,用于数据库重放时存储结果脚本和捕获负载期间产生的XML文件。
[1]