Oracle 11g数据库:数据库重放_第1页
Oracle 11g数据库:数据库重放_第2页
Oracle 11g数据库:数据库重放_第3页
Oracle 11g数据库:数据库重放_第4页
Oracle 11g数据库:数据库重放_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.:.;Oracle DBA很早就盼望可以在消费环境中捕获运用程序的负载,然后经过在测试环境中重放捕获的负载来判别 HYPERLINK qqread/keys/shujuku/index.html t _blank 数据库或运用程序的改动对数据库性能的影响, HYPERLINK qqread/tag/899/index.html t _blank Oracle 11g数据库新的数据库重放特性使DBA可以捕获,处置负载,然后有选择性地或跨大范围的数据库环境和平台全部重放,本文为在日益不稳定的数据库环境中运用Oracle 11g数据库重放有效地快速预告运用程序的改动对性能的影响提供一个入门。 假设

2、我在IT行业这几年教会了我一切,那它是继墨菲定律凡事只需有能够出错,那就一定会出错之后的又一真理了,过去的几年里,我认 识到了多个墨菲定律推论的正确性,包括“替代的零件往往不能代用及特别是“墨菲实践上是一个乐观主义者的回答,我希望有一天我本人的推论也能经过长期 的察看被添加到这些严厉的定律中,我的推论就是:“没有东西可以象在测试环境那样在消费环境中运转。Oracle DBA面临一个严峻的挑战:如何准确预告下一组对数据库或运用程序,甚至是硬件 HYPERLINK qqread/z/sys/safe-seting/index.html t _blank 配置的改动对整个数据库环境产生的负面影响。这

3、里所说的整个环境字面上的意思是:任何运用程序运转时执行的每一条SQL语句,不论它仅仅是一个简单的查询语句还是包括大量DML语句的批处置作业,都必需捕获。这个挑战目前变得更加锋利,由于当前的运用程序负载大都是跨多个技术产生的:N层运用程序 HYPERLINK qqread/network/server/index.html t _blank 效力器、web farms、甚至传统的客户端/效力器方式运用程序。况且,当某个运用程序执行速度慢下来时,要跟踪追捕检查性能下降的根本缘由几乎不能够的。它能够是因不正确的 HYPERLINK qqread/tag/3887/index.html t _blan

4、k 网络配置、不正确的运用程序 HYPERLINK qqread/z/server/seting/index.html t _blank 效力器配置、甚至能够是由于运用程序客户端环境变量设置不正确引起的。目前实现这个艰巨的目的独一的选择是“捕获/重放运用程序负载产品套件,这类运用程序是专门设计用于捕获当前消费环境数据库曾经执行过的完好负载p+0,然后重放该负载p+1。然而,以我多年的阅历看来,这意味着公司要尽早购买第三方较昂贵的 HYPERLINK qqread/solution/yingyong/index.html t _blank 处理方案如HP的LoadRunner工具。软件的答应本钱

5、和效力器的配置本钱需求集中精神思索,特别是人力资源配置的思索,能够在捕获/重放负载开场之前很容易就会到达六位数美金的投入了。这就是为什么许多IT机构放弃了这个想法,由于测试运用程序性能倒退的本钱要素使其变得不太能够。性能倒退之外的要素我之前写的关于Oracle 11g新的SQL语句性能调试特性:SQL性能分析器SPA和SQL方案管理器SPM曾经讨论过Oracle 11g是如何让DBA定位因运用程序环境改动引起的性能提升、坚持原样、性能倒退的SQL语句的,一切捕获/重放工具都必需求能捕获并能比较源p+0 和未来p+1系统、运用程序、数据库性能统计,特别是当前性能较低的SQL语句。但这里我还要提出

6、另外两个需求标志的回归类型:错误回归:在 重放捕获的负载时,经常会遇到错误,现实上这个错误几乎就是一个想要的结果,例如:我想校验一个预期中的异常,如违背援用完好性如主键、外键、独一键、 CHECK、NOT NULL约束出现时能被正确地捕获,同时,我还希望有违背重要的事务规那么的情况出现能被捕获到,如在检查职员工资单时发现根本工资与总工资扣除一切费用 后不平衡的情况,我希望这种异常能被当作错误一样被捕获到。因此,任何强大的捕获/重放工具都必需可以监视下面三种类型的错误回归:一切预期的错误都发生了吗?有不是预期的错误形状出现吗?很显然,这阐明严厉的因系统或运用程序改动的错误回归是能够的。预期的错误

7、有没有出现的吗?这种情况更复杂了,由于这阐明在系统或运用程序内某些不祥的事情曾经发送变化了,也能够是重要的事务规那么被滥用或没有运用到一切事务上。数据回归:一切捕获/重放工具在重放完成后,假设数据本身出现了差别还必需发出提示信号,例如,在测试一个关键义务的金融系统时,我必需确保一样的 金融业务安装合理的顺序完成,在p+1环境一切帐户总和都应该象p+0环境中到达平衡,假设结果不一样,我必需思索在我的运用程序、数据库或环境中是什么 改动导致了重放不准确的情况出现。捕获和重放套件的另一个关键特性是:在p+1环境上重放捕获的负载前,必需确保负载捕获启动时P+0环境被复位,否那么能够会误诊为数据回归,而

8、实践上运用程序,数据库和环境都没有发送任何改动。从属的事务需求捕获并重放,这好比钢琴家演奏完一段曲子后,磁带记录不仅记录了记录信息,还记录了每个按键被按下的频率信息,本质上,它给听众提供 了一份艺术巨匠演奏风格的准确复本,包括一切复杂的演奏停顿对于小于25岁的年轻读者而言,能够没有看到过钢琴演奏磁带,可以用mp3或wav文件替 换,或讯问一下年长的同事当年听磁带的事情。数据库重放:功能摘要赞赏Oracle 11g新的数据库重放DBR套件为我们提供了一切讨论到的功能,DBR允许允许DBA:捕获在消费系统上产生的负载,这包括跨多个会话同时搜集一切依赖的事务时捕获并行执行的一样SQL语句的才干。捕获

9、的数据在测试系统上执行前先要做一些处置,这允许DBA调整负载重放的频率,以及重新映射到不同用户会话,不同效力的衔接,或-在Oracle 11g RAC测试系统中重放时,是一个或多个数据库实例。在测试系统上重放捕获的经过处置过的负载,测试系统的配置符合p+1配置的要求,因此DBA可以准确地判别任何系统改动包括运用程序改动,软件 HYPERLINK qqread/z/auto/update/index.html t _blank 补丁,甚至硬件晋级对负载的影响,测试系统可以是测试或QA数据库环境,也可以是一个快照备用数据库关于备用数据库后面的文章有更多的阐明。执行回归分析突出p+0和p+1模拟负载

10、之间的差别,DBR会自动识别和分析错误回归,数据回归和SQL语句回归的向量。数据库重放的愉快之处是它消除了创建执行回归分析的模拟负载的必要性,相反,DBA可以准确地执行记录下来的SQL语句,因此这倾向于提供更准确的 系统回归实况录像,由于其他外部要素如网络等待时间减少了或没有了,一切记录下来的SQL语句组成了重放的负载,实践上看起来几乎不会出现无用的或很 少执行的代码,这些代码能够会被忽略,假设运用程序是在一个RAC集群数据库环境中的话这是很关键的。本文接下来的4小节提供了数据库重放功能的高级入门指南,实现它们的通用目的:在从p+0到p+1迁移一个消费系统时准确判别需求回归到什么程度,本系列后

11、面的文章中,我会引见如何利用数据库重放功能捕获、预处置、重放和分析重放结果。第一步:录制负载Oracle 11g企业管理 HYPERLINK qqread/keys/shujuku/index.html t _blank 数据库控制台提供了一个非常直观的管理数据库重放功能的接口,如启用负载捕获,预处置,回归分析等,每一步它都提供了良好的形状反响信息,图1显示了初始的数据库重放控制台界面:点击查看大图图1:数据库重放控制台主界面这一步看到的全部负载就是对消费数据库捕获和录制的内容,DBA只需求保证在消费系统上有足够的负载,DBR做了其他一切事情捕获一切外部客户端发起执行的SQL语句,这包括:SQ

12、L查询,DML语句和DDL语句。PL/SQL块和远程过程调用RPCs。对象导航恳求和OCI调用。留意DBS捕获操作执行过程中,Oracle 11g不会停顿任何后台运转中的作业,一切内部客户端也可以继续产生恳求。DBR经过一系列影子 HYPERLINK qqread/z/windows/process/index.html t _blank 进程记录负载,这些影子进程过滤出必要的信息准确地复制系统负载,最后将这些元数据写入一系列XML文件,后面重放时就是运用的这些XML文件,Oracle 11g DBA只需求关怀文件系统上能否有足够的存储空间来重放这些XML文件。第二步:“整理负载当DBR负载录

13、制终了后,在重放前,总是需求对其进展一些细微的调整。例如:重新映射外部客户端的衔接,以便在p+1环境中能准确地重放,在这一步中,DBR为它最后重放预备详细的元数据,一切影响重放结果的参数也是在这一步进展修正的。在一样数据库版本上重放时这个预处置过程必需存在,当只需数据库版本匹配,就可以在一个消费、测试或其他数据库系统上执行擦除操作,实践上,Oracle剧烈建议在一个非消费 HYPERLINK qqread/network/server/index.html t _blank 效力器上执行这个元数据的“整理操作,以不影响消费效力器的性能或安康为宜。第三步:重放负载负载曾经整理好了,可以启动重放操

14、作了,完成元数据擦除后,选定的DBR重放客户端就可以随需重放负载了。复位测试环境:在启动重放前,DBA首先必需复位用于测试的目的数据库和主机环境,由于在运用改动前,测试效力器的关键部位需求与消费效力器匹配,否那么,能够引发非预期的回归,侥幸的是,随 HYPERLINK qqread/z/oracle_10g/index.html t _blank Oracle 10g数 据库出现的闪回数据库FLASHBACK DATABASE特性协助 我们简单完成这个义务,其他可选的包括经过RMAN恢复到一个时间点,或运用数据泵导出导入,一旦测试环境正确地复位终了,接 下来,DBA运用一切的改动到测试效力器上

15、的消费系统,使其如今的形状变为p+1,然后传送前面捕获的负载给这个p+1效力器。经过重放驱动重放负载:当在p+1效力器上最后一次重放前面捕获的负载时,一个叫做重放驱动的运用程序向目的数据库系统发送恳求,由于重放驱动是客 户端不可知论的,对Oracle 11g而言最初发送恳求的客户端类型是没有区别的,重放驱动消灭了录制的负载和向p+1系统发送恳求的过程,就象是外部客户端发送的恳求一样。由于它将在一切重放客户端之间分配一切的负载捕获流,重放驱动能够会思索 HYPERLINK qqread/tag/3838/index.html t _blank 网络带宽、 HYPERLINK qqread/key

16、s/cpu/index.html t _blank cpu和内存容量,重放驱动也能够充分利用重新映射衔接字串,使它们建立起一对一如单实例到单实例或多对一如单节点到多个RAC节点的关系,意味着衔接 HYPERLINK qqread/z/network/fzjh/index.html t _blank 负载平衡能够需求思索,同样重要的是,重放驱动会忽略最初由外部客户端产生的活动如EM数据库控制,不会重放这种活动,同时,它还会忽略经过 HYPERLINK qqread/tag/1849/index.html t _blank 数据库衔接衔接到外部数据库或访问目录对象的活动记录。另一个运用数据库重放吸

17、引人的优点是:可以同步方式或异步方式重放捕获的负载。在同步方式下,每一个事务都按照录制时的顺序准确地重放,然而, DBR也可以异步重放负载,如不思索事务的同步性,因此可以产生比录制时更大的负载,这在试图执行一个“测试到破坏新的或修正正的数据库环境时特别有 用。DBR负载重放的范围:Oracle 11gR1数据库重放功能可以准确地评价下面几类对数据库环境的改动。数据库晋级数据库打补丁改动数据库方式改动初始化参数修正一个或多个RAC节点及其内连配置操作系统平台的概念,包括从32位转移到64位改动效力器内存或cpu配置改动数据库的存储配置,包括在文件系统如ext3,ntfs、ASM存储、和/或RAW

18、存储之间迁移数据库文件DBR负载重放限制:数据库重放模拟才干有一些显着的且合理的限制:SQL*Loader直接途径装入不能重放,常规途径SQL*Loader操作可以重放导入导出操作,不论是经过传统的方式还是数据泵的方式,都不能重放Oracle共享效力器会话不能跟踪闪回数据库恢复和Flashback查询操作不能重放Oracle数据流,包括非基于PL/SQL的高级查询,不能重放分布式事务处置,包括远程COMMIT操作,只能当作本地事务重放基于Oracle调用接口OCI对象导航不能重放对于大多数部分,这些限制有意义,例如:闪回数据库本质上是一个不完全的数据库恢复操作,因此它不是正常事务处置的范畴,我

19、也不会思索它能否会使性能倒退,虽然限制对于共享效力器会话有意义,但依然有一些数据库是运用共享效力器作为衔接池的,因此这是一个小小的遗憾。第四步:回归分析负载重放终了后,数据库重放将提供多个有关在p+1环境和p+0环境下负载性能不同的分析,正如我在本文最前面提到的,任何好的回归测试套件都有才干捕获和分析性能回归、数据回归和错误回归,DBR在这些方面没有让我们绝望。例如:DBR可以经过它的一套捕获重放报告立刻检测到任何性能差别,经过这些报告,可以下钻到存储在ADDM自动数据库诊断监视器、AWR自动负载仓库和活动会话历史ASH报告中更详细的分析。无论问题出自哪里,DBR都能识别并处置以下两种类型的问

20、题:联机问题意味DBR能够做了一些误操作,应该先暂停,否那么重放的结果变得没什么意义脱机问题实践上是数据库重放操作胜利的预期结果,这种类型的问题通常是在重放操作终了后被检测到的下一步实际知识具备了,在本系列的下一篇文章中,我将论述:在Oracle 11gR1数据库单实例上捕获一个简单的负载预处置捕获的负载在一个双节点的Oracle 11gR1 RAC集群数据库上重放预处置过的负载标识出在转移到类型目的环境过程中能够出现的问题Oracle 11gR1提供了捕获消费环境中运用程序的负载,并在测试环境中重放负载的才干,利用这种技术判别当对系统、 HYPERLINK qqread/keys/shuju

21、ku/index.html t _blank 数据库或运用程序修正后在性能方面的影响有多大,在本文中,我将描画Oracle 11g数据库重放功能如何从当前的消费数据库中p+0环境捕获和预备负载,以及如何在一个Oracle 11g测试环境作为下一个p+1数据库系统重放一样的负载,这种技术使Oracle DBA有时机分析和隔离对性能有害的改动。 这篇文章主要集中讲述如何:从一个Oracle 11g数据库捕获一个真实的负载捕获对应的自动负载仓库AWR数据为最后的负载重放预备测试数据库环境传输消费环境 HYPERLINK qqread/z/sys/safe-seting/index.html t _b

22、lank 配置到测试环境预处置消费负载在测试系统上重放负载分析发现的任何性能问题和分歧模拟运用程序环境本文中关于我的测试环境有一点需求阐明:为了简化过程,捕获和重放操作都运用一样的数据库。我运用的是最根本的Oracle 11g种子数据库和默许安装的样本方案。数据库将运转在带闪回日志功能的ARCHIVELOG方式下,以便需求重放时可以快速地利用FLASHBACK DATABASE命令回退到某个初始点。第一阶段:录制负载为了建立一个捕获/重放情景,我建立了一个新用户、表、索引和相关的PL/SQL对象:一个新用户ADMIN,它将被用作存储一切管理对象的一个仓库,同时,我还创建了一个表存储主键的值。创

23、建该用户和表的代码请参考附件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

24、_load_generator.spc和附件F:pkg_load_generator.bdy。最后,APInitialization.sql中的代码用几百行模拟数据填充了表AP.VENDORS,并在表AP.INVOICES中创建了 25条发票记录,在表AP.INVOICE_ITEMS中创建了与之对应的发票详细信息条目,搜集了ADMIN和AP方案下一切对象的原始统计信息,它还 创建了一个目录对象DBRControl,用于数据库重放时存储结果脚本和捕获负载期间产生的XML文件。建立一个负载捕获至此,我们的源数据库环境初始化好了,我将启动一个真实的负载捕获,下面的图2.1.1显示了数据库重放的初始窗

25、口,它是经过访问EM数据库控制软件的【软件和支持】标签上的【真正运用程序测试】小节下的【数据库链接】得到的。 HYPERLINK qqread/ArtImage/20210723/lb3_1.jpg t _blank 点击查看大图点击查看大图图2.1.1:负载捕获设置:初始化界面假设我选择了第一个义务,在我的捕获会话执行前必需先确认一切在检查列表中列出的先决条件都已具备才行。 HYPERLINK qqread/ArtImage/20210723/lb3_2.jpg t _blank 点击查看大图点击查看大图图2.1.2:负载捕获设置:方案环境检查列表接下来的界面让我选择在正式捕获负载之前能否重

26、启数据库,并过滤不需求的会话活动如EM本身,留意我会按照Oracle 11g的最正确实际建议“去除捕获:我会接受EM的建议停顿并重启数据库以建立一个有效的捕获启动时间。 HYPERLINK qqread/ArtImage/20210723/lb3_3.jpg t _blank 点击查看大图点击查看大图图2.1.3:负载捕获设置:选项接下来的界面显示的是给捕获会话命名和指定存储重放脚本的目录。 HYPERLINK qqread/ArtImage/20210723/lb3_4.jpg t _blank 点击查看大图点击查看大图图2.1.4:负载捕获设置:设置参数接下来要求为义务调度命名,图2.1.

27、5和图2.1.6显示了最终的义务确认设置界面。 HYPERLINK qqread/ArtImage/20210723/lb3_5.jpg t _blank 点击查看大图点击查看大图图2.1.5:负载捕获设置:指定EM义务名 HYPERLINK qqread/ArtImage/20210723/lb3_6.jpg t _blank 点击查看大图点击查看大图图2.1.6:负载捕获设置:最终的义务视图最后,Oracle 11g恳求最后一次确认。 HYPERLINK qqread/ArtImage/20210723/lb3_7.jpg t _blank 点击查看大图点击查看大图图2.1.7:负载捕获设

28、置:义务提交捕获就启动了,只需Oracle 11g显示这个屏幕,它实践上是等我再次在源数据库上启动代表性的负载。捕获一个真实的负载为了经过不同用户模拟类似代码的并行执行过程,我预备了一个简单的shell脚本参考附录G:RandomLoadGenerator.sh,它做一些 HYPERLINK qqread/keys/cpu/index.html t _blank CPU密 集型计算的简单查询,在AP方案上产生的查询,同时在AP方案的表中插入上千行记录,我曾经将我的源数据库环境配置为运用多个效力名,每一个对应一种用 户,内容参考附录H:SI_Services_tnsnames.ora,我将这些效

29、力名添加到我的数据库配置文件TNSNAMES.ORA中作为可选的 衔接别名。我在我的p+0数据库环境中启动了这个负载,执行终了后,我回到EM数据库控制台查看执行的结果,如图2.2.1所示,然后点击“停顿捕获按钮终了负载捕获。 HYPERLINK qqread/ArtImage/20210723/lb3_8.jpg t _blank 点击查看大图点击查看大图图2.2.1:负载捕获:回想捕获义务形状这时,Oracle 11g会要求他确认能否终了捕获过程,并显示一个计时表直到捕获完成。 HYPERLINK qqread/ArtImage/20210723/lb3_9.jpg t _blank 点击查

30、看大图点击查看大图图2.2.2:负载捕获:确定终止捕获 HYPERLINK qqread/ArtImage/20210723/lb3_10.jpg t _blank 点击查看大图点击查看大图图2.2.3:负载捕获:终了捕获当终止捕获后,Oracle 11g会讯问能否捕获录制的负载对应的自动负载仓库AWR数据,如图2.2.4所示,我选择了捕获一切有关的AWR快照,以便于后面进展报告对比。 HYPERLINK qqread/ArtImage/20210723/lb3_11.jpg t _blank 点击查看大图点击查看大图图2.2.4:负载捕获:恳求生成AWR快照一旦捕获终了,就可以查看捕获结果看

31、捕获能否胜利,以及能否包含了足够的数据,假设发现数据缺乏,FLASHBACK DATABASE命令允许我回到捕获开场前的数据库形状再重新开场捕获,我也选择了“查看负载捕获报告按钮生成一个完好的数据库捕获报告报告链接: databasejournal/img/2021/05/PCW_Report_1.html。第二阶段:预备重放虽然在p+0数据库环境中胜利完成了一个足够的数据库负载捕获,当在p+1环境中重放负载之前还有许多事情要做。复位p+0环境由于我的源和目的环境是同一个数据库,因此首先我需求将环境复位到捕获负载之前的形状,我的数据库任务在闪回日志方式,因此我只需求运用FLASHBACK DA

32、TABASE命令将其回退到初始形状:$ rman target /RMAN shutdown immediate;RMAN startup mount;RMAN reset database to incarnation 6;RMAN flashback database to scn= 4162947;转移到p+1环境接下来,我要做的是运用必要的改动,将我的数据库环境转到p+1形状,简单阐明一下,我将做两个改动,它们对p+1环境的性能有显着的影响:对存储过程ADMIN.PKG_SEQUENCING.NEXT_ID做了特殊处置,运用序列替代了表ADMIN.NEXT_IDS来确定 AP方案中表的

33、下一个主键值,这应该会显着提升存储过程AP.PKG_LOAD_GENERATOR.RANDOMDML的性能,在重放过程中,它在 AP.INVOICES和AP.INVOICE_ITEMS表中创建随机数据工程。删除了在AP.INVOICES.CUSTOMER_ID上的索引,并重新计算了AP方案的统计数值,由于存储过程 AP.PKG_LOAD_GENERATOR.RANDOMQUERY在视图AP.RV_INVOICE_DETAILS上产生随机查询时经常运用这个索 引高效地选择行,在重放时应该看到性能会如预期那样显着回退。“整理负载至此,我的p+1任务环境搭建好了,可以开场为重放做一下负载预处置了,再

34、说一次,我会运用EM数据库控制台启动预处置序列,图2.3.1显示了从“数据库重放面板选择了“预处置负载后的结果。 HYPERLINK qqread/ArtImage/20210723/lb3_12.jpg t _blank 点击查看大图点击查看大图图2.3.1:预处置捕获的负载:选择一个捕获的负载当我选择了想要的负载后,Oracle 11g会提示我是在同一个数据库版本上进展数据库重放. HYPERLINK qqread/ArtImage/20210723/lb3_13.jpg t _blank 点击查看大图点击查看大图图2.3.2:预处置捕获的负载:数据库版本警告然后启动一个新的EM调度义务完

35、成预处置。 HYPERLINK qqread/ArtImage/20210723/lb3_14.jpg t _blank 点击查看大图点击查看大图图2.3.3:预处置捕获的任务量:调度预处置义务Oracle 11g提示要进展最后确实认,以提交调度义务,然后开场执行。 HYPERLINK qqread/ArtImage/20210723/lb3_15.jpg t _blank 点击查看大图点击查看大图图2.3.4:预处置捕获的负载:最后确认第三阶段:重放负载由于我的目的 HYPERLINK qqread/keys/shujuku/index.html t _blank 数据库曾经复位到捕获负载之

36、前的形状了,并且我一切的p+1改动如今曾经预备就绪,至少我曾经预备好负载重放了,我将运用EM控制台进展重放,如图2.4.1所示: HYPERLINK qqread/ArtImage/20210723/lb3_16.jpg t _blank 点击查看大图点击查看大图图2.4.1:负载重放:起点我选择了一个包含有捕获负载文件的目录后,Oracle 11g会确认我曾经检查过胜利重放所要求的先决条件,包括处置之前需求处理的外部援用如外部文件和外部目录,如图2.4.2和2.4.3所示: HYPERLINK qqread/ArtImage/20210723/lb3_17.jpg t _blank 点击查看

37、大图点击查看大图图2.4.2:负载重放:确认先决条件 HYPERLINK qqread/ArtImage/20210723/lb3_18.jpg t _blank 点击查看大图点击查看大图图2.4.3:负载重放:确认对外部系统的援用一旦一切的先决条件都得到确认了,可以开场真实地执行重放义务了,图2.4.4显示了我设置的关于这个义务的根本信息: HYPERLINK qqread/ArtImage/20210723/lb3_19.jpg t _blank 点击查看大图点击查看大图图2.4.4:负载重放:设置重放义务图2.4.5显示我重新映射当前的衔接以便重放时也可以运用它。 HYPERLINK q

38、qread/ArtImage/20210723/lb3_20.jpg t _blank 点击查看大图点击查看大图图2.4.5:负载重放:设置衔接字符串正如我在数据库重放入门那篇文章中描画的,Oracle 11g允许我改动重放负载的频率,为了坚持简约,我选择了默许的选项,如图2.4.6所示: HYPERLINK qqread/ArtImage/20210723/lb3_21.jpg t _blank 点击查看大图点击查看大图图2.4.6:负载重放:自定义重放选项如今可以启动负载重放客户端WRC开场重放之前捕获的负载了,如图2.4.7展现的那样。接下来,我用适当的参数启动WRC,然后前往这个屏幕选

39、择“下一步按钮开场自动重放负载。 HYPERLINK qqread/ArtImage/20210723/lb3_22.jpg t _blank 点击查看大图点击查看大图图2.4.7:负载重放:启动负载重放客户端我将翻开一个终端启动重放会话,启动WRC客户端执行,留意在开场之前,我将当前的任务目录修正为/home/oracle/DBRControl。$ wrc system/oracleorcl mode=replay replaydir=.Workload Replay Client: Release .0 - Production on Thu May 22 19:28:59

40、 2021Copyright (c) 1982, 2007, Oracle. All rights reserved.Wait for the replay to start (19:28:59).回到EM数据库控制台,我只需求点击“下一步按钮,Oracle11g会回答我一切活动的数据库重放操作都在控制之中。 HYPERLINK qqread/ArtImage/20210723/lb3_23.jpg t _blank 点击查看大图点击查看大图图2.4.8:负载重放:控制重放操作同时也反响到终端会话本身中了:Wait for the replay to start (19:28:59).Repl

41、ay started (19:31:17)前往EM数据库控制台,数据库重放操作一直都被监视着。 HYPERLINK qqread/ArtImage/20210723/lb3_24.jpg t _blank 点击查看大图点击查看大图图2.4.9:负载重放:监视活动的重放操作直到重放操作完成。 Wait for the replay to start (19:28:59).Replay started (19:31:17)Replay finished (19:37:02) HYPERLINK qqread/ArtImage/20210723/lb3_25.jpg t _blank 点击查看大图点

42、击查看大图图2.4.10:负载重放:完成的重放操作第四阶段:回归分析Oracle 11g给我们提供了许多用于对比捕获的与重放的负载,如图2.5.1和2.5.2所示,重放操作胜利执行终了后会提供大部分对比结果: HYPERLINK qqread/ArtImage/20210723/lb3_26.jpg t _blank 点击查看大图点击查看大图图2.5.1:重放回归分析一 HYPERLINK qqread/ArtImage/20210723/lb3_27.jpg t _blank 点击查看大图点击查看大图图2.5.2:重放回归分析二正如这些图示,我对数据库对象所做的改动产生了正面的影响,由于执行

43、捕获的负载的时间比重放同一负载的时间要长得多,同时阐明对系统的修正明显添加 了数据库的吞吐量,最值得留意的是这里没有产生有害的影响,这从图2.5.2中很容易看出来,由于在产生的数据之间绝对没有分歧,也没有异常错误产生。报告分析最后,数据库重放提供了多个 HYPERLINK qqread/keys/html/index.html t _blank HTML格式的报告用于分析执行终了的重放操作结果。DB Replay Report这个报告比较捕获负载和重放负载的执行过程,它查找任何能够的数据或错误回归的源。AWR Report这个报告提供自开任务负载信息库AWR报告,它简要地分析了在重放操作开场到

44、终了这段时间周期内的数据库的整体性能。ASH Report它经过查看在重放期间的活动会话历史记录ASH的内容,找出对性能影响最大的SQL语句和等待事件。Oracle数据库11gR1新的数据库重放DBR功能允许Oracle DBA从一个Oracle 10gR2环境捕获负载,然后在Oracle 11gR1环境中重放这个负载,以分析如何将现有数据库迁移到新版本,并分析对系统整体性能的影响。这是本系列最后一篇文章,将描画如何运用这些特性从现有的Oracle 10gR2单实例数据库环境捕获并预处置负载,然后在一个Oracle 11gR1 RAC测试环境中重放同样的负载。这给Oracle DBA提供了一个

45、史无前例的时机标识出在迁移到RAC环境时任何潜在的性能瓶颈。 前面的文章描写的是一个相对简单的场景:如何在当前运转Oracle 11g消费环境中p+0捕获一个模拟的运用程序负载,然后在一样的p+1环境重放,这篇文章处置略微更有难度一点的义务,由于:从一个单实例Oracle 10gR2数据库捕获和记录运用程序负载,包括对应的自开任务负载信息库AWR数据。将模拟负载转移到Oracle 11gR1 RAC测试环境。预处置负载,包括重新映射到不同 HYPERLINK qqread/z/network/fzjh/index.html t _blank 负载平衡效力的衔接。在Oracle 11gR1 RA

46、C测试环境中重放负载。标识运用程序性能问题,数据分歧和错误分歧。我将运用Oracle 11gR1提供的PL/SQL包DBMS_WORKLOAD_CAPTURE和DBMS_WORKLOAD_REPLAY来完好这些义务。第一阶段:录制一个单实例环境下的负载为了使捕获和重放情景简单 - 同时由于我痛恨浪费任何有用的东西 - 我将运用前面文章中运用的PL/SQL对象来完成在单实例Oracle 10gR2上的负载捕获,由于捕获负载要求最低的Oracle10gR2版本是,首先我运用数据库晋级助手DBUA将现有数据库名 叫DB10G晋级到,在我的Oracle 10gR2消费环

47、境中花了30分钟来晋级,中间很顺利。然后我执行同样的脚本和PL/SQL代码创建并启动一个适宜的环境用于捕获负载。详细脚本和代码请参考本系列前面的文章预备捕获负载: 如今我们的源数据库环境曾经就绪了,我将启动一个真实的负载捕获,Listing 3.1见附件显示了我如何运用存储过程DBMS_WORKLOAD_CAPTURE.ADD_FILTER运用一些过滤器来排除那些产生“不感兴趣 活动的用户会话以及在捕获过程中可以忽略的会话,在本例中,我比想捕获EM控制台本身的活动。开场捕获:Listing 3.2见附件显示了我是如何运用存储过程DBMS_WORKLOAD_CAPTURE.START_CAPTU

48、RE启动负载捕获的,这个存储过程首先 检查目的目录DBRCONTROL中能否有以前执行负载捕获的文件,假设有,它会前往一个错误,并且不允许捕获继续,然而,只需捕获启动胜利, DB10G数据库的警报日志将会识别出一个DBR捕获操作正在进展:. . .Mon Jun 23 19:40:41 2021ALTER SYSTEM SET pre_11g_enable_capture=TRUE SCOPE=BOTH;Mon Jun 23 19:40:44 2021DBMS_WORKLOAD_CAPTURE.START_CAPTURE(): Starting database capture at 06/2

49、3/2021 19:40:44. . . 由于我正在一个Oracle 10gR2数据库上捕获,在开场捕获前,我将动态初始化参数PRE_11G_ENABLE_CAPTURE设置为TRUE。生成负载:为了模拟不同用户类似代码的并行执行,我预备一个shell脚本10gSI_RandomLoadGenerator.sh,它与本系列前面文章中的shell脚本类似,它启动大约80个用户会话随机执行一些简单的 HYPERLINK qqread/keys/cpu/index.html t _blank CPU密集型计算的查询,在AP方案上生成复杂的查询,执行往AP方案表中插入几千行数据的DML操作。同时,我将

50、DB10G数据库 HYPERLINK qqread/z/sys/safe-seting/index.html t _blank 配置为 只运用一个效力名DB10G,不思索操作的类型,并且在我的TNSNAMES.ORA配置文件中添加了这个效力名。在后面的步骤中,在Oracle 11gR1 RAC环境中我将描画如何运用DBMS_WORKLOAD_REPLAY.REMAP_CONNECTION重新映射这个衔接到不同的效力名暂停负载捕获:为了暂停捕获,我执行存储过程DBMS_WORKLOAD_CAPTURE.FINISH_CAPTURE停顿负载捕获操作参考Listing 3.3,见附件,留意DBR捕获

51、胜利的结论也会记录在数据库DB10G的警报日志中: . . .Mon Jun 23 19:42:21 2021Thread 1 advanced to log sequence 43 (LGWR switch)Current log# 3 seq# 43 mem# 0: /u01/app/oracle/oradata/db10g/redo03.logMon Jun 23 19:44:35 2021DBMS_WORKLOAD_CAPTURE.FINISH_CAPTURE(): Stopped database capture successfully at 06/23/2021 19:44:32

52、查看捕获结果:为了查看负载捕获真实的结果,我执行存储过程DBMS_WORKLOAD_CAPTURE.REPORT生成一个摘要报告参考 Listing 3.4,见附件,这个报告的输出文本格式请查看Report 3.1见附件或HTML格式: /databasejournal/img/2021/06/DB10G_WorkloadCaptureReport.html。第二阶段:预备重放当我胜利地完成从Oracle10gR2单实例 HYPERLINK qqread/keys/shujuku/index.html t _blank 数据库上捕获负载后,开场预备我的目的环境 - Oracle11gR1 RA

53、C集群数据库:我 HYPERLINK qqread/z/sys/safe-seting/index.html t _blank 配置了一个双节点RACRACNODE1和RACNODE2,运用运用Oracle clusterware .0配置和管理集群环境。我在集群中每个节点上部署了一个Oracle .0 ASM实例,在共享磁盘存储上为数据库文件创建了两个ASM磁盘组+DATA,+FRA。我运用Oracle 11gR1的规范种子数据库模板创建一个新的RAC数据库RACDB,部署了两个RAC实例RACDB1和RACDB2,每个节点上一个,经过一个监听器提供效力。我部

54、署了一个新的RAC效力TESTLBA作为这两个节点对外提供的效力,并将衔接数调整为最大,运用 HYPERLINK qqread/z/network/fzjh/index.html t _blank 负载平衡顾问程序LBA跨这两个实例分配衔接以模拟一个OLTP环境,Listing 3.5见附件显示了srvctl命令调用DBMS_SERVICE.MODIFY_SERVICE和为TESTLBA效力配置的TNSNAMES.ORA网络配置工程。最后,我在RACDB集群数据库严厉地创建了与之前在DB10G数据库上创建的一样的表,索引和PL/SQL包。然后执行APInitialization.sql脚本初始

55、化表AP.VENDORS,AP.INVOICES和AP_INVOICE_DETAILS。预备负载:至此我的数据库重放目的环境曾经就绪了,下面为在RAC环境重放做最后的预备的任务:在节点RACNODE1和RACNODE12上添加新的目录/home/oracle/DBRControl。在RACDB数据库中创建一个新的目录对象DBRCONTROL,同时在每个节点上也在其物理位置创建了呼应的目录,并给这个目录对象授予了适宜的权限。我将在DB10G数据库上捕获负载时产生的文件分别复制到这两个节点的一样目录下了,留意也可以将这些文件只复制到其中一个节点,由于在RAC集群环境中,任何一个节点都可以管理重放负

56、载。最后,我执行存储过程DBMS_WORKLOAD_REPLAY.PROCESS_CAPTURE为重放对先前捕获的负载做预处置任务,这个存储过程解析在DB10G数据库上的用户会话操作,为在RACDB上重放做预处置。Listing 3.6见附件显示了我在集群节点上创建物理目录和在RACDB数据库中创建对应的目录对象的命令,以及在将一切文件复制到适宜的物理目录下后如何 执行存储过程DBMS_WORKLOAD_REPLAY.PROCESS_CAPTURE进展负载预处置的。第三阶段:重放负载如今我的RAC数据库曾经预备好可以接受执行重放先前捕获的负载了,如前面的文章谈到的那样,运用 HYPERLINK

57、 qqread/tag/899/index.html t _blank Oracle 11g EM进展重放时必需按照严厉的顺序执行,调用存储过程DBMS_WORKLOAD_REPLAY执行重放时这些步骤也必需按步骤执行,重新映射一切的衔接,调整一切自定义重放频率设置,搜集重放性能,回归统计报表搜集。 启动数据库负载重放:为了启动数据库重放,我将运用存储过程DBMS_WORKLOAD_REPLAY.INITIATE_REPLAY,它将吧 RACDB数据库置为INIT FOR REPLAY形状,是经过存储过程DBMS_WORKLOAD_REPLAY.PREPARE_REPLAY将数据库置为PREP

58、ARE形状的必要前提条 件。重新映射衔接字符串:为了保证将一切参与在DB10G数据库上生成负载的会话重新映射到RACDB上对应的TESTLBA负载平衡衔接上,我将运用存储过程DBMS_WORKLOAD_REPLAY.REMAP_CONNECTION。参考Listing 3.7见附件中关于如何调用这两个存储过程以及如何查看重新映射衔接的结果的例子。自定义负载重放选项:正如我在数据库重放入门那篇文章中谈到的那样,Oracle 11g允许DBA本人精细控制重放的频率,负载重放客户端可以提供存储过程DBMS_WORKLOAD_REPLAY.PREPARE_REPLAY设置多个额外的参数被牢牢控制:表3

59、.1重放客户端选项重放选项描画SYNCHRONIZATION定义消费负载时能否运用SYNCHRONIZATION:l TRUE:这是默许值,在重放过程中捕获的负载中将被保管的COMMIT的顺序,一切重放动作只需当一切依赖的COMMIT动作执行终了后才干执行。l FALSE:原始的COMMIT顺序不会得到服从,这样很能够会前往大量的数据分歧,但它在载入或压力测试时非常有用。THINK_TIME_SCALE定义同一会话两个延续用户调用之间说破费的时间,因此由它驱动重放的速度:l 默许值是100,或原始负载产生速度的100%。l 假设设置为0,延续发送到重放数据库的速度会是尽能够地快。l 假设设置的

60、值大于100%,那速度就呼应减低了。THINK_TIME_AUTO_CORRECT基于指定的百分比纠正用户调用之间的THINK_TIME_SCALE,将这个参数设置为TRUE,重放客户端将被强迫缩短调用之间的“思索时间,以便让重放说破费的时间与最初搜集的时间相匹配。CONNECT_TIME_SCALE用指定的值标定从负载捕获开场到会话衔接所破费的时间,这应该了解为用户会话衔接保管的时间百分比。留意数据库重放负载捕获时间与负载重放时间之间的区别:捕获负载过程中,所破费的时间是经过用户时间中的用户调用时间和用户思索时间在发出另一个调用是用户等待的时间组成的。然而,在负载重放过程中,所破费的时间是由

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论