《Oracle 11g数据库:数据库重放6422.docx》由会员分享,可在线阅读,更多相关《Oracle 11g数据库:数据库重放6422.docx(58页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Oracle DBA很早就盼望能够在生产环境中捕获应用程序的负载,然后通过在测试环境中重放捕获的负载来判断数据库或应用程序的改动对数据库性能的影响,Oracle 11g数据库新的数据库重放特性使DBA可以捕获,处理负载,然后有选择性地或跨大范围的数据库环境和平台全部重放,本文为在日益不稳定的数据库环境中使用Oracle 11g数据库重放有效地快速预报应用程序的改变对性能的影响提供一个入门。 如果我在IT行业这几年教会了我一切,那它是继墨菲定律(凡事只要有可能出错,那就一定会出错)之后的又一真理了,过去的几年里,我认 识到了多个墨菲定律推论的正确性,包括“替代的零件往往不能代用”及特别是“墨菲实
2、际上是一个乐观主义者”的回答,我希望有一天我自己的推论也能通过长期 的观察被添加到这些严格的定律中,我的推论就是:“没有东西能够象在测试环境那样在生产环境中运转”。Oracle DBA面临临一个严峻的的挑战:如何何准确预报下下一组对数据据库或应用程程序,甚至是是硬件配置的改动对对整个数据库库环境产生的的负面影响。这这里所说的整整个环境字面面上的意思是是:任何应用用程序运行时时执行的每一一条SQL语语句,不管它它仅仅是一个个简单的查询询语句还是包包括大量DMML语句的批批处理作业,都都必须捕获。这这个挑战目前前变得更加尖尖锐,因为当当前的应用程程序负载大都都是跨多个技技术产生的:N层应用程程序服
3、务器、weeb farrms、甚至至传统的客户户端/服务器器模式应用程程序。况且,当当某个应用程程序执行速度度慢下来时,要要跟踪追捕检检查性能下降降的根本原因因几乎不可能能的。它可能能是因不正确确的网络配置置、不正确的的应用程序服服务器配置、甚甚至可能是因因为应用程序序客户端环境境变量设置不不正确引起的的。目前实现这个艰艰巨的目标唯唯一的选择是是“捕获/重重放”应用程程序负载产品品套件,这类类应用程序是是专门设计用用于捕获当前前生产环境数数据库已经执执行过的完整整负载(p+0),然后后重放该负载载(p+1)。然然而,以我多多年的经验看看来,这意味味着公司要尽尽早购买第三三方较昂贵的的解决方案(
4、如如HP的LooadRunnner工具具)。软件的的许可成本和和服务器的配配置成本需要要集中精力考考虑,特别是是人力资源配配置的考虑,可可能在捕获/重放负载开开始之前很容容易就会达到到六位数美金金的投入了。这这就是为什么么许多IT机机构放弃了这这个想法,因因为测试应用用程序性能倒倒退的成本因因素使其变得得不太可能。性能倒退之外的的因素我之前写的关于于Oraclle 11gg新的SQLL语句性能调调试特性:SSQL性能分分析器(SPPA)和SQQL计划管理理器(SPMM)已经讨论论过Oraccle 111g是如何让让DBA定位位因应用程序序环境改变引引起的性能提提升、保持原原样、性能倒倒退的SQ
5、LL语句的,所所有捕获/重重放工具都必必须要能捕获获并能比较源源(p+0) 和未来(pp+1)系统统、应用程序序、数据库性性能统计,特特别是当前性性能较低的SSQL语句。但但这里我还要要提出另外两两个需要标记记的回归类型型:错误回归归:在 重放放捕获的负载载时,常常会会遇到错误,事事实上这个错错误几乎就是是一个想要的的结果,例如如:我想校验验一个预期中中的异常,如如违背引用完完整性(如主主键、外键、唯唯一键、 CCHECK、NNOT NNULL约束束)出现时能能被正确地捕捕获,同时,我还希望有违背重要的事务规则的情况出现能被捕获到,如在检查职员工资单时发现基本工资与总工资扣除所有费用 后不平衡
6、的情况,我希望这种异常能被当作错误一样被捕获到。因此,任何强大的捕获/重放工具都必须能够监视下面三种类型的错误回归:所有预期的错误误都发生了吗吗?有不是预期的错错误状态出现现吗?很显然然,这表明严严格的因系统统或应用程序序改变的错误误回归是可能能的。预期的错误有没没有出现的吗吗?这种情况况更复杂了,因因为这表明在在系统或应用用程序内某些些不祥的事情情已经发送变变化了,也可可能是重要的的事务规则被被滥用或没有有应用到所有有事务上。数据回归:所有有捕获/重放放工具在重放放完成后,如如果数据本身身出现了差异异还必须发出出提醒信号,例例如,在测试试一个关键任任务的金融系系统时,我必必须确保相同同的 金
7、融业业务安装合理理的顺序完成成,在p+11环境所有帐帐户总和都应应该象p+00环境中达到到平衡,如果果结果不一样样,我必须考考虑在我的应应用程序、数数据库或环境境中是什么 改变导致了了重放不精确确的情况出现现。捕获和重放套件件的另一个关关键特性是:在p+1环环境上重放捕捕获的负载前前,必须确保保负载捕获启启动时P+00环境被复位位,否则可能能会误诊为数数据回归,而而实际上应用用程序,数据据库和环境都都没有发送任任何改变。从属的事务需要要捕获并重放放,这好比钢钢琴家演奏完完一段曲子后后,磁带记录录不仅记录了了记录信息,还还记录了每个个按键被按下下的频率信息息,本质上,它它给听众提供供 了一份艺艺
8、术大师演奏奏风格的精确确复本,包括括所有复杂的的演奏停顿(对对于小于255岁的年轻读读者而言,可可能没有看到到过钢琴演奏奏磁带,可以以用mp3或或wav文件件替 换,或或询问一下年年长的同事当当年听磁带的的事情。)数据库重放:功功能摘要感谢Oraclle 11gg新的数据库库重放(DBBR)套件为为我们提供了了所有讨论到到的功能,DDBR允许允允许DBA:捕获在生产系统统上产生的负负载,这包括括跨多个会话话同时收集所所有依赖的事事务时捕获并并行执行的相相同SQL语语句的能力。捕获的数据在测测试系统上执执行前先要做做一些处理,这这允许DBAA调整负载重重放的频率,以以及重新映射射到不同用户户会话
9、,不同同服务的连接接,或-在在Oraclle 11gg RAC测测试系统中重重放时,是一一个或多个数数据库实例。在测试系统上重重放捕获的经经过处理过的的负载,测试试系统的配置置符合p+11配置的要求求,因此DBBA可以准确确地判断任何何系统改变(包包括应用程序序改变,软件件补丁,甚至硬件升升级)对负载载的影响,测测试系统可以以是测试或QQA数据库环环境,也可以以是一个快照照备用数据库库(关于备用用数据库后面面的文章有更更多的说明)。执行回归分析突突出p+0和和p+1模拟拟负载之间的的差异,DBBR会自动识识别和分析错错误回归,数数据回归和SSQL语句回回归的向量。数据库重放的美美妙之处是它它消
10、除了创建建执行回归分分析的模拟负负载的必要性性,相反,DDBA可以准准确地执行记记录下来的SSQL语句,因因此这倾向于于提供更准确确的 系统回回归实况录像像,因为其他他外部因素(如如网络等待时时间)减少了了或没有了,所所有记录下来来的SQL语语句组成了重重放的负载,实实际上看起来来几乎不会出出现无用的或或很 少执行行的代码,这这些代码可能能会被忽略,如如果应用程序序是在一个RRAC集群数数据库环境中中的话这是很很关键的。本文接下来的44小节提供了了数据库重放放功能的高级级入门指南,实实现它们的通通用目标:在在从p+0到到p+1迁移移一个生产系系统时准确判判断需要回归归到什么程度度,本系列后后面
11、的文章中中,我会介绍绍如何利用数数据库重放功功能捕获、预预处理、重放放和分析重放放结果。第一步:录制负负载Oracle 11g企业业管理数据库库控制台提供供了一个非常常直观的管理理数据库重放放功能的接口口,如启用负负载捕获,预预处理,回归归分析等,每每一步它都提提供了良好的的状态反馈信信息,图1显显示了初始的的数据库重放放控制台界面面:(点击查看大图图)图1:数数据库重放控控制台主界面面这一步看到的全全部负载就是是对生产数据据库捕获和录录制的内容,DDBA只需要要保证在生产产系统上有足足够的负载,DDBR做了其其他所有事情情(捕获所有有外部客户端端发起执行的的SQL语句句),这包括括:SQL查
12、询,DDML语句和和DDL语句句。PL/SQL块块和远程过程程调用(RPPCs)。对象导航请求和和OCI调用用。注意DBBS捕获操作作执行过程中中,Oraccle 111g不会停止止任何后台运运行中的作业业,所有内部部客户端也可可以继续产生生请求。DBR通过一系系列影子进程程记录负载,这这些影子进程程过滤出必要要的信息准确确地复制系统统负载,最后后将这些元数数据写入一系系列XML文文件,后面重重放时就是使使用的这些XXML文件,OOraclee 11g DBA只需需要关心文件件系统上是否否有足够的存存储空间来重重放这些XMML文件。第二步:“整理理”负载当DBR负载录录制完毕后,在在重放前,总
13、总是需要对其其进行一些细细微的调整。例例如:重新映映射外部客户户端的连接,以以便在p+11环境中能准准确地重放,在在这一步中,DDBR为它最最后重放准备备具体的元数数据,所有影影响重放结果果的参数也是是在这一步进进行修改的。在相同数据库版版本上重放时时这个预处理理过程必须存存在,当只要要数据库版本本匹配,就可可以在一个生生产、测试或或其他数据库库系统上执行行擦除操作,实实际上,Orracle强强烈建议在一一个非生产服服务器上执行行这个元数据据的“整理”操操作,以不影影响生产服务务器的性能或或健康为宜。第三步:重放负负载负载已经整理好好了,可以启启动重放操作作了,完成元元数据擦除后后,选定的DD
14、BR重放客客户端就可以以随需重放负负载了。复位测试环境:在启动重放放前,DBAA首先必须复复位用于测试试的目标数据据库和主机环环境,因为在在应用改变前前,测试服务务器的关键部部位需要与生生产服务器匹匹配,否则,可可能引发非预预期的回归,幸幸运的是,随随Oraclle 10gg数 据库出出现的闪回数数据库(FLLASHBAACK DAATABASSE)特性帮帮助我们简单单完成这个任任务,其他可可选的包括通通过RMANN恢复到一个个时间点,或或使用数据泵泵导出导入,一一旦测试环境境正确地复位位完毕,接 下来,DBBA应用所有有的改变到测测试服务器上上的生产系统统,使其现在在的状态变为为p+1,然然
15、后传送前面面捕获的负载载给这个p+1服务器。通过重放驱动重重放负载:当当在p+1服服务器上最后后一次重放前前面捕获的负负载时,一个个叫做重放驱驱动的应用程程序向目标数数据库系统发发送请求,因因为重放驱动动是客 户端端不可知论的的,对Oraacle 111g而言最最初发送请求求的客户端类类型是没有区区别的,重放放驱动消灭了了录制的负载载和向p+11系统发送请请求的过程,就就象是外部客客户端发送的的请求一样。因为它将在所有有重放客户端端之间分配所所有的负载捕捕获流,重放放驱动可能会会考虑网络带带宽、cpu和内存存容量,重放放驱动也可能能充分利用重重新映射连接接字串,使它它们建立起一一对一(如单单实
16、例到单实实例)或多对对一(如单节节点到多个RRAC节点)的的关系,意味味着连接负载载均衡可能需需要考虑,同同样重要的是是,重放驱动动会忽略最初初由外部客户户端产生的活活动(如EMM数据库控制制),不会重重放这种活动动,同时,它它还会忽略通通过数据库连连接连接到外外部数据库或或访问目录对对象的活动记记录。另一个使用数据据库重放吸引引人的优点是是:可以同步步模式或异步步模式重放捕捕获的负载。在在同步模式下下,每一个事事务都按照录录制时的顺序序准确地重放放,然而, DBR也可可以异步重放放负载,如不不考虑事务的的同步性,因因此可以产生生比录制时更更大的负载,这这在试图执行行一个“测试试到破坏”新新的
17、或修改过过的数据库环环境时特别有有 用。DBR负载重放放的范围:OOraclee 11gRR1数据库重重放功能可以以准确地评估估下面几类对对数据库环境境的改变。数据库升级数据库打补丁改变数据库模式式改变初始化参数数修改一个或多个个RAC节点点及其内连配配置操作系统平台的的概念,包括括从32位转转移到64位位改变服务器内存存或cpu配配置改变数据库的存存储配置,包包括在文件系系统(如exxt3,nttfs)、AASM存储、和和/或RAWW存储之间迁迁移数据库文文件DBR负载重放放限制:数据据库重放模拟拟能力有一些些显着的(且且合理的)限限制:SQL*Loaader直接接路径装入不不能重放,常常规
18、路径SQQL*Loaader操作作可以重放导入导出操作,不不管是通过传传统的方式还还是数据泵的的方式,都不不能重放Oracle共共享服务器会会话不能跟踪踪闪回数据库恢复复和Flasshbackk查询操作不不能重放Oracle数数据流,包括括非基于PLL/SQL的的高级查询,不不能重放分布式事务处理理,包括远程程COMMIIT操作,只只能当作本地地事务重放基于Oraclle调用接口口(OCI)对对象导航不能能重放对于大多数部分分,这些限制制有意义,例例如:闪回数数据库本质上上是一个不完完全的数据库库恢复操作,因因此它不是正正常事务处理理的范畴,我我也不会考虑虑它是否会使使性能倒退,虽虽然限制对于
19、于共享服务器器会话有意义义,但仍然有有一些数据库库是使用共享享服务器作为为连接池的,因因此这是一个个小小的遗憾憾。第四步:回归分分析负载重放完毕后后,数据库重重放将提供多多个有关在pp+1环境和和p+0环境境下负载性能能不同的分析析,正如我在在本文最前面面提到的,任任何好的回归归测试套件都都有能力捕获获和分析性能能回归、数据据回归和错误误回归,DBBR在这些方方面没有让我我们失望。例如:DBR能能够通过它的的一套捕获重重放报告立即即检测到任何何性能差异,通通过这些报告告,可以下钻钻到存储在AADDM(自自动数据库诊诊断监视器)、AAWR(自动动负载仓库)和和活动会话历历史(ASHH)报告中更更
20、详细的分析析。无论问题出自哪哪里,DBRR都能识别并并处理下列两两种类型的问问题:联机问题象征DDBR可能做做了一些误操操作,应该先先暂停,否则则重放的结果果变得没什么么意义脱机问题实际上上是数据库重重放操作成功功的预期结果果,这种类型型的问题通常常是在重放操操作结束后被被检测到的下一步理论知识具备了了,在本系列列的下一篇文文章中,我将将阐述:在Oraclee 11gRR1数据库单单实例上捕获获一个简单的的负载预处理捕获的负负载在一个双节点的的Oraclle 11ggR1 RAAC集群数据据库上重放预预处理过的负负载标识出在转移到到类型目标环环境过程中可可能出现的问问题Oracle 11gR1
21、1提供了捕获获生产环境中中应用程序的的负载,并在在测试环境中中重放负载的的能力,利用用这种技术判判断当对系统统、数据库或应用用程序修改后后在性能方面面的影响有多多大,在本文文中,我将描描述Oraccle 111g数据库重重放功能如何何从当前的生生产数据库中中(p+0环环境)捕获和和准备负载,以及如何在一个个Oraclle 11gg测试环境(作作为下一个pp+1数据库库系统)重放放相同的负载载,这种技术术使Oraccle DBBA有机会分分析和隔离对对性能有害的的改变。 这篇文章主要集集中讲述如何何:从一个Oraacle 111g数据库库捕获一个真真实的负载捕获对应的的自动负载仓仓库(AWRR)
22、数据为为最后的负载载重放准备测测试数据库环环境传输生生产环境配置置到测试环境境预处理生生产负载在在测试系统上上重放负载分析发现的的任何性能问问题和分歧模拟应用程序环环境本文中关于我的的测试环境有有一点需要说说明:为了简简化过程,捕捕获和重放操操作都使用相相同的数据库库。我使用的的是最基本的的Oraclle 11gg种子数据库库和默认安装装的样本方案案。数据库将将运行在带闪闪回日志功能能的ARCHHIVELOOG模式下,以以便需要重放放时可以快速速地利用FLLASHBAACK DAATABASSE命令回退退到某个初始始点。第一阶段:录制制负载为了建立一个个捕获/重放放情景,我建建立了一个新新用户
23、、表、索索引和相关的的PL/SQQL对象:一个新用户AADMIN,它它将被用作存存储所有管理理对象的一个个仓库,同时时,我还创建建了一个表存存储主键的值值。创建该用用户和表的代代码请参考附附件A:ADDMINSeetup.ssql。PL/SQLL包ADMIIN.PKGG_SEQUUENCINNG控制指定定新的主键值值,该包的说说明参考附件件B:pkgg_sequuencinng.spcc,该包最初初的版本内容容参考附件CC:pkg_sequeencingg_v1.bbdy。另一个用户AAP,它将封封装一个帐户户支付系统的的方案,包括括新的表APP.VENDDORS,AAP.INVVOICESS
24、和AP.IINVOICCE_ITEEMS,创建建这个方案及及其相关的对对象脚本参考考附件D:AAPSetuup.sqll。为了填充APP方案的对象象,我创建了了一个包APP.PKG_LOAD_GENERRATOR,它它的说明文件件和主体文件件分别参考附附件E:pkkg_loaad_genneratoor.spcc和附件F:pkg_lload_ggeneraator.bbdy。最后,APIInitiaalizattion.ssql中的代代码用几百行行模拟数据填填充了表APP.VENDDORS,并并在表AP.INVOIICES中创创建了 255条发票记录录,在表APP.INVOOICE_IITEM
25、S中中创建了与之之对应的发票票详细信息条条目,收集了了ADMINN和AP方案案下所有对象象的原始统计计信息,它还还 创建了一一个目录对象象DBRCoontroll,用于数据据库重放时存存储结果脚本本和捕获负载载期间产生的的XML文件件。建立一个负载捕捕获至此,我们的源源数据库环境境初始化好了了,我将启动动一个真实的的负载捕获,下下面的图2.1.1显示示了数据库重重放的初始窗窗口,它是通通过访问EMM数据库控制制软件的【软软件和支持】标标签上的【真真正应用程序序测试】小节节下的【数据据库链接】得得到的。点击查看大图(点击查看大图图)图2.11.1:负载载捕获设置:初始化界面面如果我选择了第第一个
26、任务,在在我的捕获会会话执行前必必须先确认所所有在检查列列表中列出的的先决条件都都已具备才行行。点击查看大图(点击查看大图图)图2.11.2:负载载捕获设置:计划环境检检查列表接下来的界面让让我选择在正正式捕获负载载之前是否重重启数据库,并并过滤不需要要的会话活动动(如EM本本身),注意意我会按照OOraclee 11g的的最佳实践建建议“清除捕捕获”:我会会接受EM的的建议停止并并重启数据库库以建立一个个有效的捕获获启动时间。点击查看大图(点击查看大图图)图2.11.3:负载载捕获设置:选项接下来的界面显显示的是给捕捕获会话命名名和指定存储储重放脚本的的目录。点击查看大图(点击查看大图图)图
27、2.11.4:负载载捕获设置:设置参数接下来要求为任任务调度命名名,图2.11.5和图22.1.6显显示了最终的的任务确认设设置界面。点击查看大图(点击查看大图图)图2.11.5:负载载捕获设置:指定EM任任务名点击查看大图(点击查看大图图)图2.11.6:负载载捕获设置:最终的任务务视图最后,Oraccle 111g请求最后后一次确认。点击查看大图(点击查看大图图)图2.11.7:负载载捕获设置:任务提交捕获就启动了,只只要Oraccle 111g显示这个个屏幕,它实实际上是等我我再次在源数数据库上启动动代表性的负负载。捕获一个真实的的负载为了通过不同用用户模拟相似似代码的并行行执行过程,我
28、我准备了一个个简单的shhell脚本本(参考附录录G:RanndomLooadGenneratoor.sh),它它做一些CPPU密 集型型计算的简单单查询,在AAP方案上产产生的查询,同同时在AP方方案的表中插插入上千行记记录,我已经经将我的源数数据库环境配配置为使用多多个服务名,每每一个对应一一种用 户,内内容参考附录录H:SI_Serviices_ttnsnammes.orra,我将这这些服务名添添加到我的数数据库配置文文件TNSNNAMES.ORA中作作为可选的 连接别名。我在我的p+00数据库环境境中启动了这这个负载,执执行完毕后,我我回到EM数数据库控制台台查看执行的的结果,如图图2
29、.2.11所示,然后后点击“停止止捕获”按钮钮结束负载捕捕获。点击查看大图(点击查看大图图)图2.22.1:负载载捕获:回顾顾捕获任务状状态这时,Oraccle 111g会要求你你确认是否结结束捕获过程程,并显示一一个计时表直直到捕获完成成。点击查看大图(点击查看大图图)图2.22.2:负载载捕获:确定定终止捕获点击查看大图(点击查看大图图)图2.22.3:负载载捕获:结束束捕获当终止捕获后,OOraclee 11g会会询问是否捕捕获录制的负负载对应的自自动负载仓库库(AWR)数据,如如图2.2.4所示,我我选择了捕获获所有有关的的AWR快照照,以便于后后面进行报告告对比。点击查看大图(点击查
30、看大图图)图2.22.4:负载载捕获:请求求生成AWRR快照一旦捕获结束,就就可以查看捕捕获结果看捕捕获是否成功功,以及是否否包含了足够够的数据,如如果发现数据据不足,FLLASHBAACK DAATABASSE命令允许许我回到捕获获开始前的数数据库状态再再重新开始捕捕获,我也选选择了“查看看负载捕获报报告”按钮生生成一个完整整的数据库捕捕获报告(报报告链接: http:/m/img/2008/05/PCCW_Repport_11.htmll)。第二阶段:准备备重放尽管在p+0数数据库环境中中成功完成了了一个足够的的数据库负载载捕获,当在在p+1环境境中重放负载载之前还有许许多事情要做做。复位
31、p+0环境境因为我的源和目目标环境是同同一个数据库库,因此首先先我需要将环环境复位到捕捕获负载之前前的状态,我我的数据库工工作在闪回日日志模式,因因此我只需要要使用FLAASHBACCK DATTABASEE命令将其回回退到初始状状态:$ rmann targget /RRMAN shutddown iimmediiate;RRMAN starttup moount;RRMAN resett dataabase to inncarnaation 6;RMAAN fllashbaack daatabasse to scn= 41629947;转移到p+1环环境接下来,我要做做的是应用必必要的改变
32、,将将我的数据库库环境转到pp+1状态,简简单说明一下下,我将做两两个改变,它它们对p+11环境的性能能有显着的影影响:对存储过程ADDMIN.PPKG_SEEQUENCCING.NNEXT_IID做了特殊殊处理,使用用序列代替了了表ADMIIN.NEXXT_IDSS来确定 AAP方案中表表的下一个主主键值,这应应该会显着提提升存储过程程AP.PKKG_LOAAD_GENNERATOOR.RANNDOMDMML的性能,在在重放过程中中,它在 AAP.INVVOICESS和AP.IINVOICCE_ITEEMS表中创创建随机数据据项目。删除了在AP.INVOIICES.CCUSTOMMER_ID
33、D上的索引,并并重新计算了了AP方案的的统计数值,因因为存储过程程 AP.PPKG_LOOAD_GEENERATTOR.RAANDOMQQUERY在在视图AP.RV_INNVOICEE_DETAAILS上产产生随机查询询时经常使用用这个索 引引高效地选择择行,在重放放时应该看到到性能会如预预期那样显着着回退。“整理”负载至此,我的p+1工作环境境搭建好了,可可以开始为重重放做一下负负载预处理了了,再说一次次,我会使用用EM数据库库控制台启动动预处理序列列,图2.33.1显示了了从“数据库库重放”面板板选择了“预预处理负载”后后的结果。点击查看大图(点击查看大图图)图2.33.1:预处处理捕获的
34、负负载:选择一一个捕获的负负载当我选择了想要要的负载后,OOraclee 11g会会提醒我是在在同一个数据据库版本上进进行数据库重重放.点击查看大图(点击查看大图图)图2.33.2:预处处理捕获的负负载:数据库库版本警告然后启动一个新新的EM调度度任务完成预预处理。点击查看大图(点击查看大图图)图2.33.3:预处处理捕获的工工作量:调度度预处理任务务Oracle 11g提示示要进行最后后的确认,以以提交调度任任务,然后开开始执行。点击查看大图(点击查看大图图)图2.33.4:预处处理捕获的负负载:最后确确认第三阶段:重放放负载因为我的目标数数据库已经复复位到捕获负负载之前的状状态了,并且且我
35、所有的pp+1改动现现在已经准备备就绪,至少少我已经准备备好负载重放放了,我将使使用EM控制制台进行重放放,如图2.4.1所示示:点击查看大图(点击查看大图图)图2.44.1:负载载重放:起点点我选择了一个包包含有捕获负负载文件的目目录后,Orracle 11g会确确认我已经检检查过成功重重放所要求的的先决条件,包包括处理之前前需要解决的的外部引用(如如外部文件和和外部目录),如如图2.4.2和2.44.3所示: 点击查看大图(点击查看大图图)图2.44.2:负载载重放:确认认先决条件点击查看大图(点击查看大图图)图2.44.3:负载载重放:确认认对外部系统统的引用一旦所有的先决决条件都得到到
36、确认了,可可以开始真实实地执行重放放任务了,图图2.4.44显示了我设设置的关于这这个任务的基基本信息:点击查看大图(点击查看大图图)图2.44.4:负载载重放:设置置重放任务图2.4.5显显示我重新映映射当前的连连接以便重放放时也可以使使用它。点击查看大图(点击查看大图图)图2.44.5:负载载重放:设置置连接字符串串正如我在数据库库重放入门那那篇文章中描描述的,Orracle 11g允许许我改变重放放负载的频率率,为了保持持简洁,我选选择了默认的的选项,如图图2.4.66所示:点击查看大图(点击查看大图图)图2.44.6:负载载重放:自定定义重放选项项现在可以启动负负载重放客户户端(WRC
37、C)开始重放放之前捕获的的负载了,如如图2.4.7展示的那那样。接下来来,我用适当当的参数启动动WRC,然然后返回这个个屏幕选择“下下一步”按钮钮开始自动重重放负载。点击查看大图(点击查看大图图)图2.44.7:负载载重放:启动动负载重放客客户端我将打开一个终终端启动重放放会话,启动动WRC客户户端执行,注注意在开始之之前,我将当当前的工作目目录修改为/home/oraclle/DBRRContrrol。$ wrcc systtem/orracleorcl mode=replaay repplaydiir=.Woorkloaad Repplay CClientt: Rellease 11.1.
38、0.6.00 - Prroducttion oon Thuu May 22 199:28:559 20008Copyyrightt (c) 1982, 20077, Oraacle. All rightts resservedd.Waitt for the rreplayy to sstart (19:228:59).回到EM数据库库控制台,我我只需要点击击“下一步”按按钮,Oraacle111g会回答我我所有活动的的数据库重放放操作都在控控制之中。点击查看大图(点击查看大图图)图2.44.8:负载载重放:控制制重放操作同时也反应到终终端会话本身身中了:Wait foor thee repll
39、ay too starrt (199:28:559).Replaay staarted (19:331:17)返回EM数据库库控制台,数数据库重放操操作始终都被被监视着。 点击查看大图(点击查看大图图)图2.44.9:负载载重放:监视视活动的重放放操作直到重放操作完完成。 Wait ffor thhe repplay tto staart (119:28:59).Repllay sttartedd (19:31:177)Repllay fiinisheed (199:37:002)点击查看大图(点击查看大图图)图2.44.10:负负载重放:完完成的重放操操作第四阶段:回归归分析Oracle 1
40、1g给我我们提供了许许多用于对比比捕获的与重重放的负载,如如图2.5.1和2.55.2所示,重重放操作成功功执行完毕后后会提供大部部分对比结果果:点击查看大图(点击查看大图图)图2.55.1:重放放回归分析(一一)点击查看大图(点击查看大图图)图2.55.2:重放放回归分析(二二)正如这些图示,我我对数据库对对象所做的改改动产生了正正面的影响,因因为执行捕获获的负载的时时间比重放同同一负载的时时间要长得多多,同时表明明对系统的修修改明显增加加 了数据库库的吞吐量,最最值得注意的的是这里没有有产生有害的的影响,这从从图2.5.2中很容易易看出来,因因为在产生的的数据之间绝绝对没有分歧歧,也没有异
41、异常错误产生生。报告分析最后,数据库重重放提供了多多个HTMLL格式的报告告用于分析执执行完毕的重重放操作结果果。DB Repllay Reeport这个报告告比较捕获负负载和重放负负载的执行过过程,它查找找任何可能的的数据或错误误回归的源。AWR Repport这个报告提提供自动工作作负载信息库库(AWR)报报告,它简要要地分析了在在重放操作开开始到结束这这段时间周期期内的数据库库的整体性能能。ASH Repport它通过查看看在重放期间间的活动会话话历史记录(AASH)的内内容,找出对对性能影响最最大的SQLL语句和等待待事件。Oracle数数据库11ggR1新的数数据库重放(DDBR)功
42、能能允许Oraacle DDBA从一个个Oraclle 10ggR2环境捕捕获负载,然然后在Oraacle 111gR1环环境中重放这这个负载,以以分析如何将将现有数据库库迁移到新版版本,并分析析对系统整体体性能的影响响。这是本系列最后后一篇文章,将将描述如何使使用这些特性性从现有的OOraclee 10gRR2单实例数数据库环境捕捕获并预处理理负载,然后后在一个Orracle 11gR11 RAC测测试环境中重重放同样的负负载。这给OOraclee DBA提提供了一个史史无前例的机机会标识出在在迁移到RAAC环境时任任何潜在的性性能瓶颈。 前面的文章描写写的是一个相相对简单的场场景:如何在在
43、当前运行OOraclee 11g生生产环境中(pp+0)捕获获一个模拟的的应用程序负负载,然后在在相同的p+1环境重放放,这篇文章章处理稍微更更有难度一点点的任务,因因为:从一个单实例OOraclee 10gRR2数据库捕捕获和记录应应用程序负载载,包括对应应的自动工作作负载信息库库(AWR)数数据。将模拟负载转移移到Oraccle 111gR1 RRAC测试环环境。预处理负载,包包括重新映射射到不同负载载均衡服务的的连接。在Oraclee 11gRR1 RACC测试环境中中重放负载。标识应用程序性性能问题,数数据分歧和错错误分歧。我将使用Oraacle 111gR1提提供的PL/SQL包DD
44、BMS_WWORKLOOAD_CAAPTUREE和DBMSS_WORKKLOAD_REPLAAY来完整这这些任务。第一阶段:录制制一个单实例例环境下的负负载为了使捕获和重重放情景简单单 - 同同时因为我痛痛恨浪费任何何有用的东西西 - 我我将使用前面面文章中使用用的PL/SSQL对象来来完成在单实实例Oraccle 100gR2上的的负载捕获,因因为捕获负载载要求最低的的Oraclle10gRR2版本是110.2.00.4,首先先我使用数据据库升级助手手(DBUAA)将现有数数据库(名 叫DB100G)升级到到10.2.0.4,在在我的Oraacle 110gR2生生产环境中花花了30分钟钟来
45、升级,中中间很顺利。然后我执行同样样的脚本和PPL/SQLL代码创建并并启动一个合合适的环境用用于捕获负载载。(具体脚脚本和代码请请参考本系列列前面的文章章)准备捕获获负载: 现现在我们的源源数据库环境境已经就绪了了,我将启动动一个真实的的负载捕获,LListinng 3.11(见附件)显显示了我如何何使用存储过过程DBMSS_WORKKLOAD_CAPTUURE.ADDD_FILLTER应用用一些过滤器器来排除那些些产生“不感感兴趣” 活活动的用户会会话以及在捕捕获过程中可可以忽略的会会话,在本例例中,我比想想捕获EM控控制台自身的的活动。开始捕获:Liistingg 3.2(见见附件)显示
46、示了我是如何何使用存储过过程DBMSS_WORKKLOAD_CAPTUURE.STTART_CCAPTURRE启动负载载捕获的,这这个存储过程程首先 检查查目标目录(DDBRCONNTROL)中中是否有以前前执行负载捕捕获的文件,如如果有,它会会返回一个错错误,并且不不允许捕获继继续,然而,只只要捕获启动动成功, DDB10G数数据库的警报报日志将会识识别出一个DDBR捕获操操作正在进行行:. . .Moon Junn 23 119:40:41 20008ALTTER SYYSTEM SET ppre_111g_enaable_ccapturre=TRUUE SCOOPE=BOOTH;Moon
47、 Junn 23 119:40:44 20008DBMMS_WORRKLOADD_CAPTTURE.SSTART_CAPTUURE(): Starrting databbase ccapturre at 06/233/20088 19:440:44. . . 因为我正在一个个Oraclle 10ggR2数据库库上捕获,在在开始捕获前前,我将动态态初始化参数数PRE_111G_ENNABLE_CAPTUURE设置为为TRUE。生成负载:为了模拟不同用户相似代码的并行执行,我准备一个shell脚本(10gSI_RandomLoadGenerator.sh),它与本系列前面文章中的shell脚本类似,它启动大约80个用户会话随机执行一些简单的CPU密集型计算的查询,在AP方案上生成复杂的查询,执行往AP方案表中插入几千行数据的DML操作。同时,我将DBB10G数据据库配置为 只使使用一个服务务名(DB110G),不不考虑操作的的类型,并且且在我的TNNSNAMEES.ORAA配置文件中中