Oracle数据库11gR1新的数据库重放(DBR)功能允许Oracle DBA从一个Oracle 10gR2环境捕获负载,然后在Oracle 11gR1环境中重放这个负载,以分析如何将现有数据库迁移到新版本,并分析对系统整体性能的影响。这是本系列最后一篇文章,将描述如何使用这些特性从现有的Oracle 10gR2单实例数据库环境捕获并预处理负载,然后在一个Oracle 11gR1 RAC测试环境中重放同样的负载。这给Oracle DBA提供了一个史无前例的机会标识出在迁移到RAC环境时任何潜在的性能瓶颈。
前面的文章描写的是一个相对简单的场景:如何在当前运行Oracle 11g生产环境中(p+0)捕获一个模拟的应用程序负载,然后在相同的p+1环境重放,这篇文章处理稍微更有难度一点的任务,因为:
从一个单实例Oracle 10gR2数据库捕获和记录应用程序负载,包括对应的自动工作负载信息库(AWR)数据。
将模拟负载转移到Oracle 11gR1 RAC测试环境。
预处理负载,包括重新映射到不同负载均衡服务的连接。
在Oracle 11gR1 RAC测试环境中重放负载。
标识应用程序性能问题,数据分歧和错误分歧。
我将使用Oracle 11gR1提供的PL/SQL包DBMS_WORKLOAD_CAPTURE和DBMS_WORKLOAD_REPLAY来完整这些任务。
第一阶段:录制一个单实例环境下的负载
为了使捕获和重放情景简单 — 同时因为我痛恨浪费任何有用的东西 — 我将使用前面文章中使用的PL/SQL对象来完成在单实例Oracle 10gR2上的负载捕获,因为捕获负载要求最低的Oracle10gR2版本是10.2.0.4,首先我使用数据库升级助手(DBUA)将现有数据库(名叫DB10G)升级到10.2.0.4,在我的Oracle 10gR2生产环境中花了30分钟来升级,中间很顺利。
然后我执行同样的脚本和PL/SQL代码创建并启动一个合适的环境用于捕获负载。(具体脚本和代码请参考本系列前面的文章)
准备捕获负载:现在我们的源数据库环境已经就绪了,我将启动一个真实的负载捕获,Listing 3.1(见附件)显示了我如何使用存储过程DBMS_WORKLOAD_CAPTURE.ADD_FILTER应用一些过滤器来排除那些产生“不感兴趣”活动的用户会话以及在捕获过程中可以忽略的会话,在本例中,我比想捕获EM控制台自身的活动。
开始捕获:Listing 3.2(见附件)显示了我是如何使用存储过程DBMS_WORKLOAD_CAPTURE.START_CAPTURE启动负载捕获的,这个存储过程首先检查目标目录(DBRCONTROL)中是否有以前执行负载捕获的文件,如果有,它会返回一个错误,并且不允许捕获继续,然而,只要捕获启动成功,DB10G数据库的警报日志将会识别出一个DBR捕获操作正在进行:
. . . |
因为我正在一个Oracle 10gR2数据库上捕获,在开始捕获前,我将动态初始化参数PRE_11G_ENABLE_CAPTURE设置为TRUE。
生成负载:为了模拟不同用户相似代码的并行执行,我准备一个shell脚本(10gSI_RandomLoadGenerator.sh),它与本系列前面文章中的shell脚本类似,它启动大约80个用户会话随机执行一些简单的CPU密集型计算的查询,在AP方案上生成复杂的查询,执行往AP方案表中插入几千行数据的DML操作。
同时,我将DB10G数据库配置为只使用一个服务名(DB10G),不考虑操作的类型,并且在我的TNSNAMES.ORA配置文件中添加了这个服务名。(在后面的步骤中,在Oracle 11gR1 RAC环境中我将描述如何使用DBMS_WORKLOAD_REPLAY.REMAP_CONNECTION重新映射这个连接到不同的服务名)
暂停负载捕获:为了暂停捕获,我执行存储过程DBMS_WORKLOAD_CAPTURE.FINISH_CAPTURE停止负载捕获操作(参考Listing 3.3,见附件),注意DBR捕获成功的结论也会记录在数据库DB10G的警报日志中:
. . . |
. . .Mon Jun 23 19:42:21 2008Thread 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 2008DBMS_WORKLOAD_CAPTURE.FINISH_CAPTURE(): Stopped database capture successfully at 06/23/2008 19:44:32
查看捕获结果:为了查看负载捕获真实的结果,我执行存储过程DBMS_WORKLOAD_CAPTURE.REPORT生成一个摘要报告(参考Listing 3.4,见附件),这个报告的输出文本格式请查看Report 3.1(见附件)或HTML格式(http://www.databasejournal.com/img/2008/06/DB10G_WorkloadCaptureReport.html)。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
OpenWorld18大会:Ellison宣布数据库的搜寻和破坏任务
在旧金山举行的甲骨文OpenWorld 2018大会中,甲骨文首席技术官(CTO)兼创始人Larry Elli […]
-
甲骨文自治数据库亮相 带来云计算新希望
早前甲骨文还不在云计算公司之列,而现在该公司正在迅速弥补其失去的时间。甲骨文的云计算核心是甲骨文自治数据库(O […]
-
ObjectRocket着力发展Azure MongoDB服务
MongoDB吸引了微软公司的注意力,微软公司计划针对运行于该公司2017年发布的Azure Cosmos D […]
-
2017年12月数据库流行度排行榜 定格岁末排名瞬间
数据库知识网站DB-engines最近更新的2017年12月份数据库流行度排名情况是否能提供更多的看点呢?TechTarget数据库网站将与您分享12月份的榜单排名情况,让我们拭目以待。