信心十足地管理变更:通过 Oracle 真正应用测试升级到 Oracle 数据库 11g
以下内容旨在概述产品的总体发展方向。此信息仅供参考,不可纳入任何合同。此信息不承诺提供任何资料、代码或功能,并且不应作为制定购买决策的依据。此处所述有关 Oracle 产品的任何特性或功能的开发、发布以及相应的日程安排均由 Oracle 自行决定。
操作和基础架构主要考虑因素
有效地管理变更是一种战略需要!
变更管理的生命周期
做出更改{ }测试{ }
发现补丁和解决方法{ }
诊断和解决问题{ }
生产供应{ }
诊断和管理问题{ }
Managing Change With Confidence
建立测试环境{ }
变更管理的生命周期
建立测试环境{ }
做出更改{ }测试{ }
发现补丁和解决方法{ }
诊断和解决问题{ }
生产供应{ }
诊断和管理问题{ }
Oracle 真正应用测试
Oracle 真正应用测试
价值
• 快速的新技术采用
• 更高的测试质量
商业效益
• 更低的成本
• 更低的风险
组件
• 数据库重放Database Replay
• SQL性能分析(SPA)
数据库重放
今天的测试生产环境 — 数千个真实的联机用户
生产环境
今天的测试测试环境 — 1-2 名测试人员试图模拟数千个用户
生产环境 测试
数据库重放捕获的数千个联机用户的负载
生产环境
捕获
负载
数据库重放重放的数千个联机用户的负载
生产环境 测试
捕获 重放
负载
数据库重放测试生产级的系统更改
生产环境 测试
捕获 重放
负载
使用数据库重放的真正应用测试
• 在测试环境中重放生产负载
• 在对生产环境进行更改前识别、分析和修复潜在的不稳定因素
• 在生产环境中捕获负载• 使用实际负载、时限和并行特性捕获完全生产负载
• 将捕获的负载移到测试系统
• 在测试环境中重放负载• 在测试系统中做出需要的更改
• 使用完整生产特性重放负载
• 执行提交排序
• 分析和报告• 错误
• 数据差异
• 性能差异分析和报告
支持的更改
不支持的更改
支持的更改
•数据库升级、补丁
•模式、参数
•RAC 节点、互连
•OS 平台、OS 升级
•CPU、内存
•存储
•等
客户端
客户端 …
客户端
中间层
存储设备
记录外部客户端请求
…
…
数据库重放工作流
生产环境 (>= 9.2.0.8)测试环境
(11g)
捕获 重放分析和
报告处理
存储设备存储设备
中间层
重放驱动程序
客户端
第 1 步:负载捕获
文件 1
文件 2
文件 n
…
生产系统
文件系统
客户端
客户端 …
客户端
中间层
存储设备
• 以二进制文件形式保存捕获的所有外部客户端请求
• 不包括系统背景和内部操作
• 最小开销• 尽可能避免函数调用
• 缓冲的 I/O
• 不依赖客户端协议
• 可以在 9.2.0.8 上捕获,然后在11g 上重放
• 捕获感兴趣时间段内的负载,如高峰负载时段、月末处理时段等
第 2 步:处理负载文件
文件 1
文件 2
文件 n
…
元数据
重放文件
测试系统• 设置测试系统
• 应用程序数据应自捕获开始时间起与生产系统相同
• 使用 RMAN、Snapshot Standby、imp/exp、Data Pump 等创建测试系统
• 做出更改:升级数据库及/或操作系统、更改存储、迁移平台等
• 处理过程将捕获的数据转换为可重放格式
• 负载一经处理便可多次重放
• 对于 RAC,将所有捕获文件复制到一个位置以供处理
文件 1
文件 2
文件 n
…
捕获文件
第 3 步:重放负载
• 重放保留捕获系统的时限、并发性和相关性的负载
• 重放客户端是一个使用处理过的负载并将请求发送给重放系统的特殊程序
• 客户端将捕获的调用转换为OCI 调用序列并提交给数据库
• 对于高并发性负载,可能需要启动多个客户端
测试系统
重放客户端
文件 1
文件 2
文件 n
…
重放文件
元数据
select * from tab …
Binds:Bind 1:‘b’
Cursor #:1
# Rows Fetched: 10
OCIStmtPrepare()
OCIBindByName()
OCIAttrSet()
OCIStmtExecute()
分析和报告
• 错误差异:对每个调用,都会报告错误差异• 新增:捕获过程中未出现而重放过程中出现的错误
• 未找到:捕获过程中出现而在重放过程中未出现的错误
• 变异:重放过程中出现但与捕获过程中不同的错误
• 数据差异• 重放:对比每个调用返回的行数并报告差异
• 用户:应用程序级验证脚本
• 性能报告• 捕获和重放报告:提供高级别性能信息
• ADDM 报告:提供深入的性能分析
• AWR、ASH、重放阶段报告:帮助进行比较分析或偏差分析
0
20
40
60
80
所用
时间
(天
)
安装与设置 识别关键事务 运行测试
数据库重放
传统测试工具2
20 54
80
2420
数据库重放:½ 个月
传统测试工具:7 ½ 个月
总测试时间
500
LoadRunner 与数据库重放对比电子商务套件测试
SQL Performance
Analyzer (SPA)
为什么选用 SQL Performance Analyzer (SPA)?
• 企业希望系统有较高性能且满足 SLA
• SQL 性能降低是导致系统性能降低的头号原因
• 没有用于主动检测所有 因更改而引起的 SQL 性能降低的解决方案
• DBA 使用耗时且低效的手动脚本来识别问题
SPA 在任何 SQL 性能变化影响到用户之前就将其识别出来
……
客户端
客户端 …
客户端
捕获 SQL
• 测试变更对 SQL 查询性能的影响
• 在生产环境中捕获 SQL 负载(包括统计信息和绑定变量)
• 在测试环境中重新执行 SQL 查询
• 分析性能更改 — 提升和降低
中间层
存储设备
Oracle DB
重新执行 SQL 查询
生产* 测试
使用 SQL Tuning Advisor 调整性能降低
SQL Performance Analyzer
* 请注意,SPA 还可以在生产系统上运行以进行某些更改
…
SQL Performance Analyzer 工作流
存储设备
生产环境 (>= 9i)
测试环境(10.2 或11g)
捕获
SQL
传输
SQL
更改前
执行 SQL
更改后
执行 SQL
比较
性能
存储设备
中间层
客户端
第 1 步:捕获 SQL 负载
• SQL 调优集 (STS) 用于存储 SQL 负载
• 对于 Oracle9i,可使用SQL*Trace
• STS 包括:
• SQL 文本
• 绑定变量
• 执行计划
• 执行统计信息
• 增量捕获用于从一个时段的游标缓存填充 STS
生产数据库
游标缓存
SQL 调优集
增量捕获
第 2 步:将 SQL 负载移至测试系统
生产数据库
游标缓存
SQL 调优集
测试数据库
SQL 调优集
• 对于 Oracle 数据库 10g 或更高版本,将 STS 导出到测试系统
• 将临时表传输到测试系统中(datapump、数据库链接等)
• 从临时表复制 SQL 调优集(“解压缩”)
导出/导入
第 3 步:在做出更改前执行 SQL
• 建立 SQL 负载性能基线
• 捕获SQL 执行计划和统计信息
• 顺序执行 SQL(非并行)
• 执行每一 SQL
• 忽略 DDL/DML
• 用于只执行 Explain Plan 分析的选项
SQL 调优集
获得下个 SQL
SQL Performance Analyzer
执行计划与
统计信息
测试执行
保存结果
第 4 步:做出更改后执行 SQL
• 更改后重新执行 SQL
• 收集新的 SQL 执行计划和统计信息
SQL 调优集
SQL Performance Analyzer
获得下个 SQL
执行计划与
统计信息
测试执行
保存结果
完成
• 手动实施计划的更改
• 数据库升级、打补丁
• 优化器统计信息刷新
• 模式更改
• 数据库参数更改
• 调优操作,例如创建 SQL 配置文件
• SPA 还可以无需供应硬件即可模拟出在Exadata 服务器上的性能
第 5 步:性能对比和分析
完成 完成
比较
SQL 性能
SQL Performance Analyzer
分析报告
• 使用不同的量度进行性能对比,例如:
• 执行时间
• CPU 时间
• 优化器成本
• 缓冲获取内容
• SPA 报告显示对每个 SQL 的更改所造成的影响
• 性能提升的 SQL
• 性能降低的 SQL
• 无变化的 SQL
• 使用 SQL Tuning Advisor 或 SQL
Plan Baseline修复性能降低的 SQL
SPA 报告
10g
生产环境
1. 测试环境升级
2. 通过 SPM 修复回退
+参数
更改
11g
测试环境
11g
生产环境
对生产环境进行例行测试:SPA 用法
+新的统计
数据更改
+SQL
配置文件 + 模式
更改
3. 参数更改(不好)
4. 收集统计数据(好)
5. SQL 配置文件修复回退
6. 索引(非常好)
+验证
调优
到:
SQL Performance Analyzer 优点
完整负载
低风险
只需数分钟的自动分析
自动负载捕获
生产负载
从:
部分负载
高风险
耗时数月的手动分析
手动创建负载
合成负载
“Oracle 真正应用测试将测试更改所需的时间缩减到原来的 20%,测试成本降低到原来的 30%,通过减少意外事故规避风险,而且改善了 IT 操作的服务质量。”
David Mitchell
OVUM 高级副总裁
信息来源:Oracle 真正应用测试 — 通过卓越的测试实现业务灵活性,2008 年 1 月
变更管理的生命周期
建立测试环境{ }
做出更改{ }测试{ }
发现补丁和解决方法{ }
诊断和解决问题{ }
生产供应{ }
诊断和管理问题{ }
供应自动化
通过克隆实现供应自动化
• 优点
• 简单、准确、可靠的镜像呈现
• 减少出错率,提升可靠性
• 通过自动化降低 TCO
• 提高服务质量
• 特性
• 基于黄金映像的软件克隆
• 映像可预修补到任何级别
• 映像来自于主机本身或软件库
• 选择性地执行克隆后配置,如数据库创建
• 可并行克隆数个主目录
• 数据库克隆使用快速可靠的 RMAN 技术
根据需要提供简单、准确、可靠的供应能力
部署周期
2
34
1
创建参照系统 创建黄金映像
生产系统供应扩大(RAC 集群)
测试用户
1
5
缩小
测试和试运行
生产数据库
自动补丁管理
•新增功能• 开箱即用的单实例和 RAC 数据库、AS 中间层(定制 BPEL 和 SOA
应用程序)补丁应用的最佳实践• 支持临时补丁、补丁集和 CPU
• 元数据驱动的补丁应用先决条件• 对 RAC/ASM/集群件的滚动升级支持• 实时更新的来自 Metalink的最佳实践• 支持基于 sudo 和 PAM 的权限验证
优点
• Oracle 系统维护简单、准确、可靠
• 减少错误,提高可靠性
• 补丁过程执行速度更快
• 服务质量更高
自动测试供应减少数据库测试的时间和工作量
• 自动化生成测试数据库重放的工作流
• 捕获生产负载、性能数据
• 将负载、性能数据复制到临时存储
• 供应软件,创建测试数据库
• 部署重放客户端并编排重放
<在此处插入图片>
总结
使用 Oracle 真正应用测试信心十足地管理变更并……
• 降低变更风险
• 减少测试时间,且不会影响质量
• 减少意外事故
• 提高应用程序可靠性
• 改善系统性能
• 提升最终用户体验
• 改善服务质量
• 加快新技术的采用
用于 11g 之前的数据库的真正应用测试
• 关于如何在早期版本中使用数据库重放和 SQL
Performance Analyzer 的更多信息,请参见 OTN
• 用于早期版本的真正应用测试
• Metalink 说明: 560977.1• http://www.oracle.com/technology/products/manageability/database/pdf/metalink_re
al_application_testing_for_earlier_releases.pdf
• 用 SQL Performance Analyzer 测试 Oracle 9i 升级到 Oracle 数据库10g 第 2 版后对性能的影响
• http://www.oracle.com/technology/products/manageability/database/pdf/o
wp_spa_9i.pdf
“光是数据库重放和 SQL 计划管理特性就值得您升级到 Oracle 数据库 11g”
Arup Nanda
高级总监Starwood Hotels & Resorts
Worldwide
“Oracle 数据库 11g 将减少负责测试生产负载更改的 DBA
的工作量。Data Guard 和真正应用测试的配合如诗一般美妙,毋庸置疑,大多数车间将很快对该组合产生依赖”
Sean McCown
Infoworld 特约编辑