• 确定使用数据库重放的优点
• 列出数据库重放所涉及的步骤
• 使用Enterprise Manager 记录和重放工作量
- 为什么使用数据库重放
• 系统更改(如硬件和软件升级)是不可避免的。
• 客户需要在实施更改前确定更改的全面影响。
• 大量的测试和验证可能会花费很多的时间和资金。
• 测试除了成本昂贵之外,成功率还很低:
– 许多问题未被检测到。
– 更改可能会对系统的可用性和性能产生负面影响。
• 成功率低的原因:
– 无法使用实际的生产工作量进行正确的测试,有许多问题未被
检测到。
• 数据库重放功能使你可以执行与实际情况相符合的测试。
为什么使用数据库重放?
大型业务关键应用程序不但复杂,而且负载模式和使用模式也相当多。与此同时,这些业
务系统要在响应时间、吞吐量、运行时间和可用性方面提供特定服务级别的保证。对系统
的任何更改(如升级数据库或修改配置)通常都需要进行全面的测试和验证,然后才能在
生产系统中实施这些更改。在移到生产系统之前为了保证安全,数据库管理员(DBA) 需
要让测试系统承受与生产环境中的工作量很近似的工作量。DBA 使用一种有效的方式分
析系统级更改对整体SQL 性能的影响也很有益处,因为这样便可以在生产之前对更改执
行任何必要的优化。
- 数据库重放
• 在测试环境中重新创建实际的生产数据库工作量。
• 在生产中实施更改之前,确定和分析潜在的不稳定性。
• 捕获生产中的工作量:
– 捕获带有实际负载和并发度的完整生产工作量
– 将捕获的工作量移到测试系统
• 在测试中重放工作量:
– 在测试系统中进行所需的更改
– 重放带有生产负载和并发度的工作量
– 采用提交顺序
• 分析和报告:
– 错误
– 数据差异
– 性能差异
数据库重放
针对之前列出的挑战,Oracle Database 11 g 提供了具体的解决方案。
通过数据库重放,在将实际的工作量放到生产系统之前,可以在测试系统上重放实际工作
量,从而测试系统更改的影响。记录数据库服务器在一段有代表性的时段(例如高峰期
间)内的生产工作量(包括事务处理并发度和相关性)。此记录数据用于在经过适当配置
的测试系统上重放工作量。通过在测试系统中使数据库服务器承受与生产工作量几乎相同
的工作量,可以在数据库更改获得整体成功方面获得高度的信心。
- 系统体系结构:捕获
系统体系结构:捕获
图中展示了一个正在进行记录的系统。应始终记录生产系统中某个“你所关注的”期
间内的工作量。一般情况下,可通过重放记录来确定升级到新版本的RDBMS 服务器是否
安全。在系统中运行生产工作量时,内置到RDBMS 中的一种特殊记录基础结构可以记录
有关所有外部客户机请求的数据。外部请求包括所有SQL 查询、PL/SQL 块、PL/SQL 远
程过程调用、DML 语句、DDL 语句、对象导航请求或Oracle Call Interface (OCI) 调用。
在记录过程中,后台作业以及通常情况下的所有内部客户机将继续工作,不会被记录。最
终结果是一份工作量记录,其中包含重放工作量所必需的全部信息;RDBMS 可通过外部
请求来查看这些信息。
记录基础结构只会对记录系统造成最低的性能开销(额外的CPU 、内存和输出/ 输出)。
但是,应计划配备额外的磁盘空间用于记录实际工作量。
RAC 说明:RAC 环境中的实例可以访问公用数据库文件。但是,它们不需要共享公用的
通用文件系统。在这样的环境中,工作量记录会在记录过程中写入各个实例的文件系统。
为了进行处理和重放,需要将工作量记录的所有部分手动复制到单个目录中。
- 系统体系结构:处理工作量
系统体系结构:处理工作量
处理工作量捕获数据,创建特定于新工作量重放的元数据文件,这是重放指定工作量捕获
所必需的。仅创建新文件,而不对工作量捕获过程中创建的任何文件进行修改。因此,可
以对相同的捕获目录多次运行预处理(例如,过程遇到意外错误或被取消时)。
在此阶段中,将重新映射外部客户机连接。可以修改会影响重放结果的所有重放参数。
注:因为处理工作量捕获的成本可能相对较高,所以最好的做法是在生产数据库系统以外
的某个系统中执行该操作。
- 系统体系结构:重放
系统体系结构:重放
在重放系统中重放工作量之前,务必执行以下操作:
1. 在测试系统中还原重放数据库,以便与工作量捕获开始时的捕获数据库匹配。
2. 根据需要更改测试系统(如执行升级等)。
3. 将工作量复制到测试系统。
一个名为“重放驱动程序”的特殊应用程序将使用工作量记录,向在其中重放工作量的
RDBMS 发送请求。该 RDBMS 通常是一个测试系统。假定重放系统的数据库适合于重放
已记录的工作量。不会重放内部RDBMS 客户机。重放驱动程序是一种特殊客户机,它使
用工作量记录并向测试系统发送相应的请求,其行为与记录工作量过程中使用的客户机在
发送外部请求时的行为相同(参见前面的示例)。使用其行为与RDBMS 的唯一外部客户
机相同的特殊驱动程序,可以记录和重放客户机不可知的基础结构。
重放驱动程序包含一个或多个连接到重放系统的客户机,并且可以根据工作量捕获发送请
求。重放驱动程序可以根据网络带宽、CPU 和内存容量,在所有重放客户机之间均匀分
配工作量捕获流。
- 更改前生产系统
更改前生产系统
数据库重放侧重于记录和重放RDBMS 所承受的工作量。因此,记录工作量的操作是在
图中所示的位置完成的。在软件堆栈中的RDBMS 上进行记录可实现此级别以下的所
有项目交换,并可使用记录和重放功能测试新的设置。
在重放工作量时,RDBMS 将执行记录过程中发现的操作。也就是说,RDBMS 代码在重
放阶段的行为方式与记录阶段的行为方式非常相似。这是通过重新创建所有外部客户机对
RDBMS 的请求实现的。外部客户机请求包括了 RDBMS 的所有可能的外部客户机发出的
请求。
- 支持的工作量
• 支持的工作量:
– 包含几乎所有类型的绑定的所有SQL(DML、DDL、
PL/SQL)
– 完整的LOB 功能(基于游标和直接OCI)
– 本地事务处理
– 登录和注销
– 会话切换
– 有限的PL/SQL RPC
• 限制:
– 直接路径加载、导入/导出
– 基于OCI 的对象导航(ADT) 和REF 绑定
– 流、非基于PL/SQL 的AQ
– 分布式事务处理、远程描述/提交操作
– 闪回(数据库和查询)
– 共享服务器
支持的工作量
以上显示了支持的和不支持的数据库操作。
注:也会捕获基于 SQL 的XML 操作。系统仅捕获显式的SQL 语句(客户机发布的SQL
语句)。不会捕获数据库本身生成的隐式调用。例如,审计是隐式的,类似后台进程活动
是隐式的。
- 捕获注意事项
计划:
• 为捕获的工作量(二进制文件)留出足够的磁盘空间
• 数据库重新启动:
– 确保重放与实际情况相符的唯一方式
— 启动限制
— 捕获将取消限制
– 可能不是必需的(取决于工作量)
• 还原数据库以进行重放的一种方式:
– 物理还原(提供顺序/时间)
– 逻辑还原应用程序数据
– 闪回/ 快照备用
• 可以指定过滤器来捕获部分工作量
• SYSDBA 或SYSOPER权限和相应的OS 权限
开销:
• TPCC 的性能开销为4.5%
• 内存开销:每个会话64 KB
• 磁盘空间
捕获注意事项
在工作量记录的计划阶段要执行以下任务:
• 检查数据库备份策略,确保在记录开始时数据库可被还原为StartSCN 。
• 计划捕获期间:根据应用情况和峰值期间选择捕获期间。可以使用现有的可管理性功
能,如自动工作量资料档案库(AWR) 和活动会话历史记录(ASH) ,根据工作量历史
记录选择一个恰当的期间。应谨慎计划捕获的开始时间,因为建议的操作是在捕获开
始前关闭并重新启动数据库。
• 指定工作量捕获数据的位置。必须设置用于存储工作量捕获数据的目录。应提供充足
的磁盘空间,因为磁盘空间不足时记录会停止。但是,在停止之前捕获的所有内容仍
可用于重放。
• 定义捕获过滤器,过滤掉不捕获的用户会话。可以指定记录过滤器以跳过不应捕获的
会话。
• 数据库重放功能没有引入任何新的权限或用户角色。记录用户和重放用户必须具有
SYSDBA 权限或SYSOPER权限。这是因为仅具备SYSOPER权限或SYSDBA 权限的
用户才可以启动或关闭开始记录的数据库。还应分配正确的操作系统(OS) 权限,以
便用户能够访问记录、重放目录以及操作这些目录下的文件。
- 重放注意事项
• 预处理捕获的工作量:
– 一次性的操作
– 在与重放时使用版本相同的 DB 版本上
– 如果版本匹配,可在任何位置(生产系统、测试系统或
其它系统)执行
• 还原数据库,然后执行更改:
– 升级
– 方案更改
– OS 更改
– 硬件更改
– 添加实例
重放注意事项
预处理阶段是必需的针对指定数据库版本的一次性操作。创建了必需的元数据以后,可以
按需要多次重放工作量。
必须还原重放数据库,以便与工作量捕获开始时的捕获数据库匹配。成功的重放取决于应
用程序事务处理,该事务处理要访问与捕获系统上的数据相同的应用程序数据。可以选择
使用时间点恢复、闪回和导入/ 导出来还原应用程序数据。
- 重放注意事项
• 管理外部交互
– 重新映射用于工作量的连接字符串:
— 一对一:用于简单的实例对实例重新映射
— 多对一:使用负载平衡器(如单节点对RAC)
– 修改指向生产系统的 DB 链接和目录对象
• 设置一个或多个重放客户机
– 都可以驱动多个工作量会话的多线程客户机
捕获的工作量可能包含对仅在捕获环境中才有意义的外部系统的引用。如果工作量包含对
外部系统的未解析引用,重放该工作量可能会在生产环境中导致意外问题。
应在一个完全孤立的测试环境中执行重放。应确保对外部系统的所有引用都已在重放环境
中得到解析,这样重放工作量才不会危害生产环境。
可以进行一对一或多对一重新映射。例如,在捕获的生产环境中的数据库链接可以引用不
应在重放过程中引用的外部生产数据库。因此,应修改在重放过程中可能会危害生产环境
的所有外部引用。
重放客户机(名为wrc 的可执行程序)将提交捕获的会话的工作量。应安装一个或多个
重放客户机,最好安装在生产主机以外的其它系统上。每个重放客户机都必须能访问保存
预处理的工作量的目录。
也可以修改重放参数以更改重放的行为。
- 重放选项
• 同步的重放:
– 确保数据差异最小
– 基于提交的同步
• 不同步的重放:
– 可用于负载/压力测试
– 不考虑原始提交顺序
– 数据差异大
• 考虑时间选项:
– 自动(默认值)
– 调整考虑时间以保持捕获的请求率:
— 0%:无考虑时间(最高的可能请求率)
— <100%:较高的请求率
— 100%:精确的考虑时间
— >100%:较低的请求率
• 登录时间选项
– 百分比(默认值为100%)
重放选项
在重放工作量的过程中,可以修改以下重放选项:
• synchronization参数将确定在重放工作量时是否使用同步。如果将此参数设置
为TRUE,则重放时将保留捕获的工作量中的COMMIT 顺序,并且所有重放操作都仅
在相关COMMIT 操作全部完成后才能执行。默认值为TRUE。
• think_time_scale 参数将确定同一会话中两个连续的用户调用之间的占用时间范
围;该参数以百分比值形式表示。使用此参数可提高或降低重放速度。将此参数设置
为0 在重放时将以尽可能快的速度将用户调用发送给数据库。默认值为100 。
• 如果重放时完成用户调用所需的时间比捕获时所需的时间长,则
think_time_auto_correct 参数可以更正调用之间的考虑时间(根据
think_time_scale 参数)。此参数的值可以为TRUE 或FALSE。
• connect_time_scale 参数确定了从开始工作量捕获到会话与指定值连接之间的占
用时间范围;该参数值以百分比形式表示。使用此选项可以控制重放过程中的会话连
接时间。默认值为100 。
注:在工作量捕获过程中,占用时间通过用户时间和用户考虑时间来度量。用户时间是用
户调用数据库的占用时间。用户考虑时间是在发布的调用之间用户用于等待的占用时间。
在重放工作量过程中,占用时间是通过用户时间、用户考虑时间和同步时间来度量的。
- 重放分析
• 数据差异
– 每个调用(查询、DML)比较的行数
• 错误差异:
– 新错误
– 变异的错误
– 已消失的错误
• 性能:
– 捕获和重放报表
– ADDM 报表
– 用于偏差分析的 ASH 报表
– AWR 报表
重放分析
与记录的内容比较,重放可能会有一些差异。例如,在较新版本的RDBMS 上重放时,新
的算法可能会导致特定请求的速度变快,从而出现执行时速度较快的差异。这种差异是用
户所需要的。差异的另一个示例是,重放过程中SQL 语句返回的行数少于记录过程中返
回的行数。这种差异显然不是用户所需要的。
对于数据差异,可以将某个操作的结果看成:
•SQL 查询的结果集
• 对持久数据库状态的更新
• 返回代码或错误代码
在确定重放系统中引入的新算法会对整体性能产生怎样的影响时,性能差异很有用。可能
导致重放差异的因素有很多。虽然有些差异无法控制,但其它差异是可以缓解的。DBA
应负责了解工作量运行时操作,并采取必要的措施来降低记录和播放差异的程度。
联机差异有助于决定停止会造成显著差异的重放。差异出现之前的重放结果可能仍然有
用,但继续重放则不会生成可靠的结论。脱机差异报告用于确定重放完成后重放的成功情
况。
重放的数据差异包含了查询和错误的结果。也就是说,记录过程中发生的错误将被当成正
确的结果,重放过程中的任何更改都会被报告。可以使用现有的工具(如ADDM)来度
量记录系统与重放系统之间的性能差异。
此外,重放过程中的错误比较报表可以报告以下内容:
• 记录过程中未出现的错误
• 重放过程中未重现的错误
• 错误类型方面的差异
- Enterprise Manager 中的数据库重放工作流
Enterprise Manager 中的数据库重放工作流
以下是执行数据库重放的典型步骤:使用Enterprise Manager (EM) 完成的步骤标记为“任
务n”。其它步骤都不属于EM 工作流。
1. 在数据库中捕获工作量。(任务1)
2. (可选)导出AWR 数据。(任务1)
3. 在测试系统中还原重放数据库,以便与工作量捕获开始时的捕获数据库匹配。
4. 根据需要更改测试系统(如执行升级等)。
5. 将生成的工作量文件复制到测试系统。
6. 在测试系统中预处理捕获的工作量。(任务2)
7. 配置测试系统以进行重放。
8. 在还原的数据库中重放工作量。(任务3)
[oracle@rtest u01]$ mkdir dbreplay
SQL> create directory db_replay_dir as '/u01/dbreplay';
Directory created.
- 使用Enterprise Manager 捕获工作量
使用Enterprise Manager 捕获工作量
Enterprise Manager (EM) 提供了一个用户界面,可用于管理数据库重放进程中的每个组
件。工作流和用户界面适用于EM Database Control 和EM Grid Control 。
可以通过Database Control 的“Software and Support (软件和支持)”选项卡访问
“Database Replay (数据库重放)”。
在“Database Replay (数据库重放)”页上,可以执行以下指定的任务:
• Capture Workload (捕获工作量)
• Preprocess Captured Workload (预处理捕获的工作量)
• Replay Workload(重放工作量)
• View Workload Capture History(查看工作量捕获历史记录):单击此链接可查看或删
除所有工作量捕获的历史记录。
• Active Capture and Replay(活动的捕获和重放):如果当前捕获或重放正在进行中,
则此表将出现在页面底部(不管表中是否有行)。要查看捕获或重放的状态,请选择
名称,然后单击“View(查看)”,或者仅单击“Name(名称)”链接。
RAC 说明:如果某个例程在捕获 RAC 系统时关闭,则捕获仍正常继续进行,不会中止。
因例程关闭而终止的会话将被重放到该例程关闭的位置。如果在捕获过程中修复了关闭的
进程并将其再次激活,则将正常记录所有新的会话。在重放过程中,不会重放例程的关闭
过程。
- 使用捕获向导
使用捕获向导
在“Capture Workload: Plan Environment(捕获工作量:计划环境)”页上,在满足先决条
件后,选中各个“Acknowledge(确认)”筛选框。如果不处理先决条件,则可能出现以下
问题:
• 不重新启动数据库可能会捕获即时事务处理,这可能会对后来捕获的事务处理重放产生
不利影响。
• 捕获的工作量将被写入文件系统,可能用光所有可用的磁盘空间。
• 如果在捕获和重放开始时应用程序数据不匹配,则错误和数据差异出现的机会就会增
加。
完成时,单击“Next (下一步)”继续执行向导中的剩余操作。
注:可以选择在捕获开始前重新启动数据库。请确保可以暂时停止其它所有数据库活动。
使用捕获向导(续)
在“Capture Workload: Options(捕获工作量:选项)”页上,可以执行以下操作:
• 选择是否在捕获开始前重新启动数据库。可在“Database Restart Options(数据库重新
启动选项)”部分执行此操作。如果在捕获开始前不重新启动数据库,则可能无法准
确而完整地捕获某些数据库活动。在重放过程中,这些未得到完整捕获的活动可能会
导致重放数据库状态与捕获数据库状态产生差异。在这些情况下,重放会报告错误。
• 在“Workload Filters(工作量过滤器)”部分定义工作量过滤器。确定是否需要包括
或排除特定的会话,然后提供过滤器名称、相应的会话属性和值。选择“Inclusion
(包含)”作为过滤模式时,将仅捕获指定的内容;选择“Exclusion(排除)”时,
将捕获指定内容以外的所有内容。可以包括或排除特定的会话,但不能在同一时间既
包括又排除特定会话。默认的过滤器名称排除了Enterprise Manager 活动。“Value
(值)”列显示会话属性的实际名称,但你可以提供任何需要的过滤器名称。
完成时,单击“Next (下一步)”继续执行向导中的剩余操作。
使用捕获向导(续)
在“Capture Workload: Parameters(捕获工作量:参数)”页上,可以提供自己需要的捕
获名称或者接受系统提供的名称。从系统中定义的现有目录对象列表中选择一个目录对象
名称,或者单击“Create Directory Object(创建目录对象)”,为新目录对象指定一个唯
一的名称和路径。此目录用于生成捕获文件。
然后,单击“Next (下一步)”。此时会进入“Capture Workload: Schedule(捕获工作
量:调度)”页;可以在此页上提供自己需要的作业名称或者接受系统提供的名称。”作
业系统会自动以大写形式命名作业。作业名称与捕获名称可以不匹配。
如果立即调度作业,并且在“Option (选项)”步骤中指定重新启动数据库,则在
“Review(复查)”步骤中提交了作业后将显示“Information: Restart Database(信息:
重新启动数据库)”页,随后显示“View Workload Capture (查看工作量捕获)”页。如
果针对以后的某个时间调度了需要或不需要重新启动的作业,则在“Review(复查)”步
骤中提交了作业后,将显示“Database Replay (数据库重放)”页,其中包含一条消息通
知你已经调度了一项作业。如果没有指定捕获持续时间,则在捕获进行过程中,必须在
“Database Replay (数据库重放)”页上单击“Stop (停止)”按钮手动停止捕获。也可
以在“View Workload Capture (查看工作量捕获)”页上停止捕获。
单击“Next (下一步)”将转到“Review(复查)”页;在提交作业之前,可在此页上验
证设置是否符合需要。
RAC 说明:对于RAC,DBA 应在所有实例都可访问的存储位置定义捕获数据的目录。否
则,需要在开始处理工作量记录之前,将工作量捕获数据从所有位置复制到单个位置。
该图中展示了这样一种情况:你立即调度了捕获作业,但没有在“Options(选项)”
步骤中指定重新启动数据库,并且没有指明捕获持续时间。
现在,捕获生效了,你必须在“View Workload Capture (查看工作量捕获)”页上单击
“Stop Capture(停止捕获)”按钮手动停止捕获。
此时,你必须运行你的工作量。
- 使用捕获向导
使用“View Workload Capture (查看工作量捕获)”页可以查看已启动的工作量捕获的进
度,或者查看有关已完成执行的捕获的历史信息。可通过“Database Replay (数据库重
放)”主页上的“Active Capture and Replay (活动的捕获和重放)”表访问此页面(适用
于已完成的捕获),或者在提交了未调度的捕获作业后访问此页面。
该页面包含以下元素:
• “Summary (概要)”部分可提供有关当前工作量捕获的重要信息。
• 在捕获进行过程中可以使用“Stop Capture(停止捕获)”按钮。
• “Workload Profile (工作量概要文件)”子页可提供几项与性能相关的捕获总计数
据。单击“View Workload Capture Report (查看工作量捕获报表)”可调用浏览器窗
口来显示该报表。该报表包含有关捕获的详细信息。“Comparison (比较)”表将整
个系统与已捕获的内容进行比较。“Total(总计)”列显示开始捕获后的系统累计
值;“Capture(捕获)”列显示相同时段内由捕获生成的值部分。
• “Workload Filters(工作量过滤器)”子页可显示在捕获工作量向导的“Options(选
项)”步骤中设置的工作量过滤器。
工作量完成时,请单击“Stop Capture(停止捕获)”。
- 使用捕获向导
使用捕获向导(续)
在你确认要停止工作量捕获时,系统会询问是否要导出AWR 数据。如果你接受,则向导
将生成一个导出作业,并自动生成一个包含捕获期间的AWR 数据的转储文件。该转储文
件是在之前用于生成工作量捕获文件的捕获目录中生成的。
如果选择不导出AWR 数据,或者作业尚未完成,则“Export AWR Data(导出AWR 数
据)”按钮将是可用的。单击此按钮时,将出现一个确认页。确认之后,导出将在后台运
行,你将返回到“View Workload Capture (查看工作量捕获)”页。
- 查看工作量捕获历史记录
查看工作量捕获历史记录
使用“View Workload Capture History(查看工作量捕获历史记录)”页可以:
• 了解曾在此数据库上执行的所有已完成的工作量捕获作业的概况(已删除的捕获作业
除外)
• 从已完成的工作量捕获作业的列表中删除一个或多个条目
• 通过选择捕获名称并单击“View(查看)”或单击“Capture Name (捕获名称)”链
接,访问有关某个工作量捕获作业的其它详细信息
• 导出AWR 数据
如果AWR 数据已导出,则“AWR Data Exported(AWR 数据已导出)”列中相应的
捕获名称上将出现一个绿色的对勾标记。否则,该列将显示一个X 标记。要导出带X
标记的捕获名称的数据,请选中该名称,然后单击“Export AWR Data(导出AWR
数据)”。导出完成后,在相应列中将出现一个对勾标记。
- 处理捕获的工作量
处理捕获的工作量
使用“Preprocess Captured Workload(预处理捕获的工作量)”页可以:
• 选择包含捕获的工作量的目录对象
• 在开始预处理工作量之前,查看有关已完成的捕获的历史信息。此页面包含“Capture
Summary (捕获概要)”和“Capture Details(捕获详细资料)”两个部分。在
“Capture Details(捕获详细资料)”部分可访问“Workload Profile (工作量概要文
件)”和“Workload Filters(工作量过滤器)”两个子页。
选择了目录并查看了捕获详细资料后,可单击“Preprocess Workload (预处理工作量)”
调用预处理捕获的工作量向导。
RAC 说明:在RAC 设置中,选择预处理系统的一个数据库实例,以用于处理工作量记
录。如果已为RAC 中的节点将记录的数据写入到本地文件系统中,则应首先将来自RAC
中所有节点的已记录数据复制到执行预处理的实例的目录中。如果捕获的数据存储在共享
文件系统中,则不需要复制。
- 使用预处理捕获的工作量向导
使用预处理捕获的工作量向导
该途中描述了预处理流程:
• 数据库版本:此步骤将提醒你:当前数据库版本必须与重放捕获的工作量时所用的数
据库版本相同。如果这两个数据库版本不相同,则你虽然可以继续执行下一个步骤,
但预处理的工作量可能无法在较新的主版本数据库上正常重放。
• 调度:此页是一个典型的 Enterprise Manager 调度页,必须在此页上指定作业名称、
身份证明和开始时间。
• 复查:在此页上,可以预览您提供的信息,并单击“Submit (提交)”按钮触发预处
理作业。此时将返回到“Database Replay (数据库重放)”主页,在此页中可看到一
条指向生成的作业的“Confirmation(确认)”消息。
- 使用重放工作量向导
使用重放工作量向导
现在,又重新回到了“Database Replay (数据库重放)”主页。单击“Replay Workload
(重放工作量)”图标可访问“Replay Workload(重放工作量)”页;在此页上,你可
以:
• 指定包含预处理的工作量的目录对象
• 查看有关预处理的工作量的捕获信息
• 查看预处理的工作量的重放历史记录(如果有)
此页面包含“Capture Summary(捕获概要)”和“Capture Details(捕获详细资料)”两
个部分。在“Capture Details(捕获详细资料)”部分可访问“Workload Profile (工作量概
要文件)”和“Workload Filters(工作量过滤器)”两个子页。
准备就绪后,请单击“Set Up Replay (设置重放)”。
- 使用重放工作量向导
使用重放工作量向导(续)
在进入重放阶段之前,应完成以下项目:
• 还原数据库:还原重放数据库,以便与工作量捕获开始时的捕获数据库匹配。成功的
工作量重放取决于应用程序事务处理,该事务处理要访问与捕获系统上的数据相同的
应用程序数据。还原应用程序数据状态的常用方式包括时间点恢复、闪回和导入/ 导
出。
• 执行系统更改:重放之前,应对重放系统进行必需的更改,包括升级任何数据库或系
统。数据库重放的主要目的是测试系统更改对实际捕获的应用程序工作量的影响。因
此,将所做的更改与捕获的工作量结合在一起就可以定义要进行的测试。
• 解决对外部系统的引用:捕获的工作量可能包含对仅在捕获环境中才有意义的外部系
统的引用。例如,捕获的生产环境中的数据库链接可以引用不应在重放过程中引用的
外部生产数据库。在这种情况下,应修改在重放过程中可能会危害生产环境的所有外
部引用。“Replay Workload: References to External Systems(重放工作量:对外部系统
的引用)”页可帮助解决这些问题。
• 设置重放客户机:重放客户机是一种多线程程序(名为 wrc 的可执行程序),其中的
每个线程都可以提交捕获的会话的工作量。此程序随标准Oracle Client 以及Oracle
Instant Client 提供。应安装一个或多个重放客户机,最好安装在数据库主机以外的其
它系统上。此外,每个重放客户机都必须能访问保存有预处理的工作量的目录。
- 使用重放工作量向导
使用重放工作量向导(续)
在“Replay Workload: Choose Initial Options (重放工作量:选择初始选项)”页上,接受
默认的“Replay Name(重放名称)”,或者提供你自己的名称。可以选择默认的重放,
也可以使用以前重放的重放选项。初始重放选项是指“Customize Options (定制选项)”
页上的连接映射和参数。在捕获工作量的同时,也会捕获连接。
在“Replay Workload: Customize Options(重放工作量:定制选项)”页上,可以方便地
使用“Connection Mappings (连接映射)”子页对所用连接使用一个描述符:用作预先植
入的字符串,或者用作映射到描述符字符串的别名。也可以选择一个单独的连接描述符选
项;通过此选项可为每个连接指定一个唯一的描述符。如果在“Choose Initial Options(选
择初始选项)”步骤中选择了“Use replay options from a previous replay (使用上一次重放
的重放选项)”选项,则“Use a separate connect descriptor(使用单独的连接描述符)”
选项将被选中,表中将显示以前的重放系统值。
RAC 说明:重新映射外部交互应包括重新映射实例。特别是,可能需要将每个捕获的连
接字符串都重新映射到重放系统中的某个连接字符串。如果捕获系统和重放系统都是单实
例数据库,则重新映射连接字符串较为简单,需要在配置文件中添加相应的条目。如果捕
获系统和重放系统是具有相同节点数的RAC 数据库,则也属于这种情况。如果捕获系统
和重放系统的节点数不同,则重新映射将较为复杂。
- 使用重放工作量向导
使用重放工作量向导(续)
“Replay Parameters(重放参数)”子页可提供控制重放的某些方面的高级参数。
- 使用重放工作量向导
使用重放工作量向导(续)
工作量是使用连接到数据库的重放客户机进行重放的。进入“Replay Workload: Prepare
Replay Clients (重放工作量:准备重放客户机)”页时,应准备好启动重放客户机。
单击“Next (下一步)”。此时将进入“Replay Workload: Wait for Client Connections(重
放工作量:等待客户机连接)”页。如果重放客户机已连接,则时钟下的文本将发生变
化。如果至少有一个重放客户机已连接,则“Client Connections (客户机连接数)”表中
就会植入内容。
- 使用重放工作量向导
$ wrc REPLAYDIR=/home/oracle/solutions/dbreplay USERID=system PASSWORD=oracle
Workload Replay Client:Release 11.1.0.6.0 - Production on Tue …
Copyright (c) 1982, 2007, Oracle.All rights reserved.
Wait for the replay to start (21:47:01)
$ wrc REPLAYDIR=/home/oracle/solutions/dbreplay USERID=system PASSWORD=oracle
Workload Replay Client: Release 11.1.0.6.0 - Production on Tue …
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Wait for the replay to start (21:47:01)
使用重放工作量向导(续)
重放工作量向导会等待您启动重放客户机。您可以打开单独的终端窗口,使用wrc 可执
行程序启动重放客户机。
可以根据工作量重放的大小启动多个重放客户机。每个客户机将为数据库启动一个或多个
重放线程,每个重放线程对应于工作量捕获中的一个流。
以下是对wrc 所用语法的简要描述:userid 和password 参数是客户机重放用户的用
户ID 和口令。server 参数是连接到重放系统实例的连接字符串。replaydir 参数指
向包含已处理的重放文件的目录。workdir参数定义了客户机的工作目录;如果不指定
此参数,则默认为当前目录。
在启动重放客户机之前,请检查以下项目:
• 重放客户机软件已安装在主机上。
• 客户机可以访问重放目录。
• 重放目录中有已预处理的重放文件。
• 重放用户的userid 和password 正确。此外,用户应能使用工作量重放程序包,
并应具有用户SWITCH 权限。
如果至少有一个重放客户机已连接,则会在“Client Connections (客户机连接)”表中植
入内容。
启动了重放客户机后,请在“Wait for Client Connections(等待客户机连接)”页上单击
“Next (下一步)”。
注:默认情况下,replay 为wrc 模式。
- 使用重放工作量向导
$ wrc REPLAYDIR=/home/oracle/solutions/dbreplay USERID=system PASSWORD=oracle
Workload Replay Client: Release 11.1.0.6.0 - Production on Tue …
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Wait for the replay to start (21:47:01)
Replay started (21:48:14)
使用重放工作量向导(续)
此时,重放客户机将等待数据库启动重放。
在“Replay Workload: Review (重放工作量:复查)”页上,单击“Submit (提交)”将
进入重放PREPARE 模式。此时重放客户机就开始重放捕获的工作量了。
- 查看工作量重放统计信息
查看工作量重放统计信息
进度窗口将随着重放的进展提供比较统计信息。
使用“Stop Replay (停止重放)”按钮可以在任何阶段终止重放。
- 查看工作量重放统计信息
$ wrc REPLAYDIR=/home/oracle/solutions/dbreplay USERID=system PASSWORD=oracle
Workload Replay Client:Release 11.1.0.6.0 - Production on Tue …
Copyright (c) 1982, 2007, Oracle.All rights reserved.
Wait for the replay to start (21:47:01)
Replay started (21:48:14)
Replay finished (21:51:21)
$
查看工作量重放统计信息(续)
重放成功完成时,启动了重放客户机的终端窗口将显示消息“Replay finished(重放已完
成)”,并附有时间戳。至此,重放的工作量就已完成。
“Elapsed Time Comparison (占用时间比较)”图表显示了重放的工作量要完成与捕获的
工作量相同的工作量所花费的时间。
差异表提供了重放环境与捕获环境之间有关数据和错误差异的信息;可将该表用作重放质
量的评估标准。
RAC 说明:如果将特定的捕获实例映射到了重放系统中的某个新实例,则捕获的实例的
所有捕获调用都将被发送到该新实例。如果重放系统也是RAC,并且捕获的实例映射到
重放系统的运行时负载平衡,则针对该已记录实例的所有捕获调用都将被动态分配到使用
运行时负载平衡的重放RAC 系统中的实例。
- 查看工作量重放统计信息
查看工作量重放统计信息(续)
可以单击“View Workload Replay Report(查看工作量重放报表)”按钮或在重放完成后
单击“Report (报表)”选项卡,以显示一个浏览器窗口,该窗口将显示一个报表,其中
包含有关重放的详细信息。
“Report (报表)”子页包含多个工作量性能报表:
• Workload Replay Report(工作量重放报表)
• AWR Compare Period Report(AWR 比较时段报表)
• AWR Report (AWR 报表)
• ASH Report(ASH 报表)
- 程序包和过程
• DBMS_WORKLOAD_CAPTURE
– START_CAPTURE
– FINISH_CAPTURE
– ADD_FILTER
– DELETE_FILTER
– DELETE_CAPTURE_INFO
– GET_CAPTURE_INFO()
– EXPORT_AWR
– IMPORT_AWR()
– REPORT()
• DBMS_WORKLOAD_REPLAY
– PROCESS_CAPTURE
– INITIALIZE_REPLAY
– PREPARE_REPLAY
– START_REPLAY
– CANCEL_REPLAY
– DELETE_REPLAY_INFO
– REMAP_CONNECTION
– EXPORT_AWR
– IMPORT_AWR
– GET_REPLAY_INFO
– REPORT
程序包和过程
要执行这些程序包,需要对捕获和重放程序包拥有EXECUTE权限。这些权限通常是由
DBA 分配的。
注:有关DBMS_WORKLOAD 程序包的详细信息,请参阅《Oracle Database PL/SQL
Packages and Types Reference 11g, Release 1 》。
- 数据字典视图:数据库重放
• DBA_WORKLOAD_CAPTURES :列出数据库中执行的所
有工作量捕获
• DBA_WORKLOAD_FILTERS:列出数据库中定义的所有
工作量过滤器
• DBA_WORKLOAD_REPLAYS:列出数据库中已执行的所
有工作量重放
• DBA_WORKLOAD_REPLAY_DIVERGENCE:用于监视工
作量差异
• DBA_WORKLOAD_CONNECTION_MAP:用于复查工作量
重放使用的所有连接字符串
• V$WORKLOAD_REPLAY_THREAD:监视外部重放客户机
的状态
数据字典视图:数据库重放
有关这些视图的信息,请参阅《Oracle 数据库参考》。
- 数据库重放:PL/SQL 示例
exec DBMS_WORKLOAD_CAPTURE.ADD_FILTER(fname => 'sessfilt',-fattribute => USER ,-fvalue => 'JFV');
exec DBMS_WORKLOAD_CAPTURE.START_CAPTURE(name => 'june_peak',-dir => 'jun07');
执行工作量
exec DBMS_WORKLOAD_CAPTURE.FINISH_CAPTURE();
exec DBMS_WORKLOAD_REPLAY.PROCESS_CAPTURE(capture_dir => 'jun07');
wrc userid=system password=oracle replaydir=/dbreplay
exec DBMS_WORKLOAD_REPLAY.INITIALIZE_REPLAY(replay_name => 'j_r' ,-replay_dir => 'jun07');
数据库重放:PL/SQL 示例
在此示例中,ADD_FILTER过程添加了一个名为sessfilt 的过滤器,用于过滤掉属于
用户名JFV 的所有会话。
要启动工作量捕获,请使用START_CAPTURE 过程。在此示例中,捕获了一个名为
june_peak 的工作量,并将其存储在名为jun07的目录中。因为没有指定持续时间参
数,所以该工作量捕获将持续进行,直到调用FINISH_CAPTURE 过程为止。你可以在该
点运行您的工作量。
要停止工作量捕获,请使用FINISH_CAPTURE 过程。此过程将最终完成工作量捕获,并
使数据库返回到正常状态。
此时可以使用REPORT 函数生成捕获报表。
要预处理捕获的工作量,请使用PROCESS_CAPTURE过程。在此示例中,对存储在
jun07目录中的已捕获工作量进行了预处理。
完成预处理后,可以启动您的重放客户机。
要初始化重放数据,请使用INITIALIZE_REPLAY过程。初始化重放数据时,会将必需
的元数据加载到工作量重放所需的表中。例如,捕获的连接字符串将加载到一个表中;将
在该表中重新映射这些字符串以进行重放。在此示例中,INITIALIZE_REPLAY过程将
经过预处理的工作量数据从jun07目录加载到了数据库中。
- 数据库重放:PL/SQL 示例
exec DBMS_WORKLOAD_REPLAY.REMAP_CONNECTION(connection_id => 101,-replay_connection => 'edlin44:3434/bjava21');
exec DBMS_WORKLOAD_REPLAY.PREPARE_REPLAY(synchronization => TRUE,-think_time_scale=> 2);
exec DBMS_WORKLOAD_REPLAY.START_REPLAY ();
DECLARE
cap_id NUMBER;
rep_id NUMBER;
rep_rpt CLOB;
BEGIN
cap_id := DBMS_WORKLOAD_REPLAY.GET_REPLAY_INFO(dir => 'jun07');
/* Get the latest replay for that capture */
SELECT max(id) INTO rep_id
FROM dba_workload_replays
WHERE capture_id = cap_id;
rep_rpt := DBMS_WORKLOAD_REPLAY.REPORT(replay_id => rep_id,
format => DBMS_WORKLOAD_REPLAY.TYPE_TEXT);
END;
数据库重放:PL/SQL 示例(续)
要重新映射连接,请使用REMAP_CONNECTION 过程。在此示例中,对应于连接ID 101
的连接将使用replay_connection参数定义的新连接字符串。
要在重放系统上准备工作量重放,请使用PREPARE_REPLAY 过程。在此示例中,
PREPARE_REPLAY 过程准备进行j_r 重放以保留工作量捕获中的COMMIT 顺序。
要启动工作量重放,请使用START_REPLAY过程。要停止工作量重放,请使用
REPLAY_CANCEL 过程。
要生成工作量重放报表,请使用REPORT 函数(如图中所示)。
- 校准重放客户机
$ wrc system/oracle@orcl mode=
calibrate replaydir=/dbreplay
Workload Replay Client: Release 11.1.0.6.0 - Production on Tue …
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Report for Workload in: /dbreplay
-----------------------
Recommendation:
Consider using at least 1 clients divided among 1 CPU(s).
Workload Characteristics:
- max concurrency: 4 sessions
- total number of sessions: 11
Assumptions:
- 1 client process per 50 concurrent sessions
- 4 client process per CPU
- think time scale = 100
- connect time scale = 100
- synchronization = TRUE
$
校准重放客户机
因为一个重放客户机可以在数据库中启动多个会话,所以不必为捕获的每个会话都启动一
个重放客户机。需要启动的重放客户机数量取决于工作量流的数量、主机的数量和每台主
机的重放客户机的数量。
例如,假定某个工作量捕获有1,000 个流,该工作量捕获的平均活动会话数大约为60,并
且一台主机只能驱动50 个指向数据库的并发连接。您应使用两台主机,每台有一个重放
客户机。
要评估重放具体工作量所需的重放客户机和主机的数量,请以校准模式运行wrc 可执行
程序。在校准模式下,wrc 可执行程序将接受以下参数:
• replaydir 指定了包含要重放的已预处理工作量捕获的目录。如果不指定目录,则
默认为当前目录。
• process_per_cpu指定了每个CPU 可运行的最大客户机进程数。默认值为4。
• threads_per_process 指定了可在一个客户机进程中运行的最大线程数。默认值
为50。
图中的示例展示了如何在校准模式下运行wrc 可执行程序。在此示例中,执行了
wrc 可执行程序来估计重放存储在replay 目录中的工作量捕获所需的重放客户机和主
机的数量。
注:要列出参与捕获的主机,请使用 list_hosts模式。
- 小结
• 确定使用数据库重放的优点
• 列出数据库重放所涉及的步骤
• 使用Enterprise Manager 记录和重放工作量