zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

Oracle的学习心得和知识总结(十四)|Oracle数据库Real Application Testing之DBMS_WORKLOAD_CAPTURE包技术详解

Oracle数据库技术 详解 总结 知识 application 十四
2023-09-14 09:15:34 时间

注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下:

1、参考书籍:《Oracle Database SQL Language Reference》
2、参考书籍:《PostgreSQL中文手册》
3、EDB Postgres Advanced Server User Guides,点击前往
4、PostgreSQL数据库仓库链接,点击前往
5、PostgreSQL中文社区,点击前往
6、Oracle Real Application Testing 官网首页,点击前往
7、Oracle 21C RAT Testing Guide,点击前往


1、本文内容全部来源于开源社区 GitHub和以上博主的贡献,本文也免费开源(可能会存在问题,评论区等待大佬们的指正)
2、本文目的:开源共享 抛砖引玉 一起学习
3、本文不提供任何资源 不存在任何交易 与任何组织和机构无关
4、大家可以根据需要自行 复制粘贴以及作为其他个人用途,但是不允许转载 不允许商用 (写作不易,还请见谅 💖)




文章快速说明索引

学习目标:

目的:接下来这段时间我想做一些兼容Oracle数据库Real Application Testing (即:RAT)上的一些功能开发,本专栏这里主要是学习以及介绍Oracle数据库功能的使用场景、原理说明和注意事项等,基于PostgreSQL数据库的功能开发等之后 由新博客进行介绍和分享!今天我们主要看一下 DBMS_WORKLOAD_CAPTURE package 的相关内容!


学习内容:(详见目录)

1、Oracle数据库Real Application Testing之DBMS_WORKLOAD_CAPTURE包技术详解


学习时间:

2023年03月28日 20:39:22


学习产出:

1、Oracle数据库Real Application Testing之DBMS_WORKLOAD_CAPTURE包技术详解
2、CSDN 技术博客 1篇


注:下面我们所有的学习环境是Centos7+PostgreSQL15.0+Oracle19c+MySQL5.7

postgres=# select version();
                                   version                                   
-----------------------------------------------------------------------------
 PostgreSQL 15.0 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 7.1.0, 64-bit
(1 row)

postgres=#

#-----------------------------------------------------------------------------#

SQL> select * from v$version; 

BANNER									    BANNER_FULL 								BANNER_LEGACY									CON_ID
--------------------------------------------------------------------------- --------------------------------------------------------------------------- --------------------------------------------------------------------------- ----------
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production	    Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production	Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production		     0
									    Version 19.3.0.0.0


SQL>
#-----------------------------------------------------------------------------#

mysql> select version();
+-----------+
| version() |
+-----------+
| 5.7.19    |
+-----------+
1 row in set (0.06 sec)

mysql>

负载捕获包简介

  1. 官方链接:https://docs.oracle.com/en/database/oracle/oracle-database/21/arpls/DBMS_WORKLOAD_CAPTURE.html

Oracle 测试指南 数据库回放,相关内容:

  1. 官方链接:https://docs.oracle.com/en/database/oracle/oracle-database/21/ratug/database-replay.html

DBMS_WORKLOAD_CAPTURE包配置工作负载捕获系统并生成工作负载捕获数据。这个捕获的重放是通过DBMS_WORKLOAD_REPLAY包实现的。

由于捕获基础设施是实例范围的(在Oracle Real Application Clusters (Oracle RAC)中也是如此),因此在任何时间点只生成一个工作负载捕获。因此,捕获接口不需要作为参数传递的状态对象,因为在任何时间点都有一个状态。这意味着所有子程序都不能是对象的方法,而是包范围的PL/SQL子程序。


DBMS_WORKLOAD_CAPTURE 安全模型

安全模型描述了使用 DBMS_WORKLOAD_CAPTURE 所需的权限。以下代码描述了执行以下操作所需的最小权限集:

  • 创建目录对象
  • 操作DBMS_WORKLOAD_CAPTURE和DBMS_WORKLOAD_REPLAY包提供的接口
  • 充当重播客户端用户(wrc someuser/somepassword 或 wrc USER=someuser PASSWORD=somepassword)
DROP USER rom1 CASCADE;
CREATE USER rom1 IDENTIFIED BY rom1;
 
GRANT EXECUTE ON DBMS_WORKLOAD_CAPTURE TO rom1;
GRANT EXECUTE ON DBMS_WORKLOAD_REPLAY TO rom1;
 
GRANT CREATE SESSION TO rom1;
GRANT CREATE ANY DIRECTORY TO rom1;
GRANT SELECT_CATALOG_ROLE TO rom1;
GRANT BECOME USER TO rom1;

需要适当的操作系统权限来访问和操作捕获和重放系统上的文件和目录。这意味着Oracle进程和执行捕获或重放的操作系统用户必须能够访问和操作至少一个可以从运行实例的主机访问的公共目录。此外,执行重放的OS用户应该能够在用于重放客户机的主机上执行wrc,并且能够适当地访问文件系统,以便在需要时将捕获复制到重放客户机的主机上。


此表按字母顺序列出了 DBMS_WORKLOAD_CAPTURE 程序包子程序:

DBMS_WORKLOAD_CAPTURE Package Subprograms

SubprogramDescription
ADD_FILTER Procedures添加指定的筛选器
DECRYPT_CAPTURE Procedure此过程解密工作负载捕获中使用各种高级加密标准(如AES128、AES192或AES256)加密的敏感数据
DELETE_CAPTURE_INFO Procedure删除 DBA_WORKLOAD_CAPTURES 和 DBA_WORKLOAD_FILTERS 视图中与给定工作负载捕获 ID 对应的行
DELETE_FILTER Procedure删除指定的过滤器
ENCRYPT_CAPTURE Procedure此过程使用各种高级加密标准(如AES128、AES192或AES256)对工作负载捕获中的敏感数据进行加密
EXPORT_AWR Procedure导出与给定捕获ID关联的AWR快照
FINISH_CAPTURE Procedure通过向所有连接的会话发出停止捕获的信号来完成工作负载捕获,并停止捕获对数据库的未来请求
GET_CAPTURE_INFO Function检索有关规定目录中工作负载捕获的所有信息,将信息导入 DBA_WORKLOAD_CAPTURES 和 DBA_WORKLOAD_FILTERS 视图,并返回相应的 DBA_WORKLOAD_CAPTURES.ID
IMPORT_AWR Function导入与给定捕获ID关联的AWR快照
REPORT Function使用一个或多个不同的源返回关于考虑中的工作负载捕获的报告
START_CAPTURE Procedure在所有实例上启动工作负载捕获

ADD_FILTER Procedures

这个过程添加了一个过滤器来捕获工作负载的一个子集。其语法格式如下:

DBMS_WORKLOAD_CAPTURE.ADD_FILTER (
   fname           IN   VARCHAR2 NOT NULL, 
   fattribute      IN   VARCHAR2 NOT NULL, 
   fvalue          IN   VARCHAR2 NOT NULL);

DBMS_WORKLOAD_CAPTURE.ADD_FILTER (
   fname           IN   VARCHAR2 NOT NULL, 
   fattribute      IN   VARCHAR2 NOT NULL, 
   fvalue          IN   NUMBER NOT NULL);

其参数解释如下:

ParameterDescription
fname要添加的筛选器的名称。如果不需要,可用于稍后的删除筛选器。(强制)
fattribute指定需要应用过滤器的属性(强制)
fvalue指定给定属性应等于的值,以便认为筛选器是活动的。对于STRING类型的所有属性,'%'之类的通配符都是可接受的。这意味着NUMBER属性的过滤器被解析为“attribute = value”,STRING属性的过滤器被解析为“attribute like value”(强制)。

fattribute 可能的值如下:

  • INSTANCE_NUMBER - type NUMBER
  • USER - type STRING
  • MODULE - type STRING
  • ACTION - type STRING
  • PROGRAM - type STRING
  • SERVICE - type STRING
  • PDB_NAME - type STRING

注意事项:

  • 工作负载捕获过滤器在DEFAULT INCLUSIONDEFAULT EXCLUSION模式下工作,这由START_CAPTURE过程的default_action输入决定
  • ADD_FILTER添加了一个影响下一个工作负载捕获的新过滤器,并且将过滤器视为INCLUSION过滤器还是EXCLUSION过滤器取决于START_CAPTURE Procedure的default_action输入的值
  • 指定的筛选器仅对下一个工作负载捕获有效。如果后续捕获需要使用相同的筛选器集,则需要在每次执行START_CAPTURE Procedure之前指定它们
  • 所有筛选器都列在DBA_WORKLOAD_FILTERS视图中
  • 您可以通过指定PDB类型的筛选器来捕获特定PDB的工作负载

使用案例:

  • 默认情况下,捕获以 INCLUSION 模式工作,该模式记录除了那些满足指定过滤器条件的请求之外的所有内容。例如,如果您想排除来自 SCOTT 的所有请求,您可以在开始捕获之前添加以下过滤器:
EXEC DBMS_WORKLOAD_CAPTURE.ADD_FILTER ('filter user1', 'USER', 'SCOTT');
  • 根据逻辑析取运算符 OR 评估多个过滤器。 因此,如果您想记录 SCOTT 和 JOHN 的工作量,您可以添加一个额外的过滤器:
EXEC DBMS_WORKLOAD_CAPTURE.ADD_FILTER ('filter user2', 'USER', 'JOHN');
  • 在 CDB 中,您可以通过过滤器排除特定 PDB 的工作负载:
EXEC DBMS_WORKLOAD_CAPTURE.ADD_FILTER ('filter pdb workload', 'PDB_NAME', 'CDB1_PDB1');
  • 要使用 DBMS_APPLICATION_INFO 来识别发布到数据库的工作负载:
DBMS_APPLICATION_INFO.SET_MODULE('ORDER_ENTRY', NULL);
-- run some SQL here
DBMS_APPLICATION_INFO.SET_ACTION('ORDER_ENTRY_LOG');
-- run logging SQL
  • 如果已捕获工作负载,您希望从捕获中排除日志记录 SQL,请指定捕获过滤器:
DBMS_WORKLOAD_CAPTURE.ADD_FILTER('filter logging operations', 'ACTION', 'ORDER_ENTRY_LOG');
  • 要过滤掉完整的订单输入交易,请定义一个过滤器:
DBMS_WORKLOAD_CAPTURE.ADD_FILTER('filter order entry', 'MODULE', 'ORDER_ENTRY');

DECRYPT_CAPTURE Procedure

此过程解密工作负载捕获中使用各种高级加密标准(例如 AES128、AES192 或 AES256)加密的敏感数据。其语法格式如下:

DBMS_WORKLOAD_CAPTURE.DECRYPT_CAPTURE (
   src_dir               IN   VARCHAR2,
   dst_dir               IN   VARCHAR2);

其参数解释如下:

ParameterDescription
src_dir指向要解密的工作负载捕获的目录对象。此参数区分大小写。
dst_dir指向具有写入权限的操作系统路径的目录对象。解密后的抓包文件将写入该目录。该参数区分大小写。

注意事项:此过程依赖于软件密钥库。标识符是 oracle.rat.database_replay.encryption(区分大小写)。


DELETE_CAPTURE_INFO Procedure

此过程删除 DBA_WORKLOAD_CAPTURES 和 DBA_WORKLOAD_FILTERS 视图中与给定工作负载捕获 ID 相对应的行。其语法格式如下:

DBMS_WORKLOAD_CAPTURE.DELETE_CAPTURE_INFO(capture_id     IN   NUMBER);

其参数解释如下:

ParameterDescription
capture_id需要删除的工作负载捕获的ID。对应于 DBA_WORKLOAD_CAPTURES.ID(强制)

注意事项:传递正在进行的捕获的 ID 将首先自动停止该捕获。


DELETE_FILTER Procedure

此过程删除指定的过滤器。其语法格式如下:

DBMS_WORKLOAD_CAPTURE.DELETE_FILTER (
   filter_name           IN   VARCHAR2(40) NOT NULL);

其参数格式如下:

ParameterDescription
filter_nameFilter to be deleted

注意事项:

DELETE_FILTER 过程只影响之前的任何捕获都没有使用过的过滤器。因此:

  • 只有在任何捕获完成后使用 ADD_FILTER 过程添加了过滤器,才能删除过滤器
  • 不能再使用此子程序删除在 START_CAPTURE 和 FINISH_CAPTURE 之前使用 ADD_FILTER 添加的过滤器

ENCRYPT_CAPTURE Procedure

此过程使用各种高级加密标准(例如 AES128、AES192 或 AES256)对工作负载捕获中的敏感数据进行加密。要即时加密捕获,请在 START_CAPTURE 过程中使用加密参数。

其语法格式如下:

DBMS_WORKLOAD_CAPTURE.ENCRYPT_CAPTURE
   src_dir     IN VARCHAR2,
   dst_dir     IN VARCHAR2,
   encryption  IN VARCHAR2 DEFAULT 'AES256');

其参数解释如下:

ParameterDescription
src_dir指向待加密工作负载捕获的目录对象。参数值区分大小写。
dst_dir指向具有写入权限的操作系统路径的目录对象。加密的捕获文件将写入此目录。参数值区分大小写。
encryption指定工作负载捕获中的敏感数据是否加密。可能的值为:AES128、AES192 和 AES256。默认值为 AES256。

注意事项:对于加密捕获,ENCRYPT_CAPTURE 过程依赖于软件密钥库。标识符是 oracle.rat.database_replay.encryption(区分大小写)。


EXPORT_AWR Procedure

此过程导出与给定捕获 ID 关联的 AWR 快照。其语法格式如下:

DBMS_WORKLOAD_CAPTURE.EXPORT_AWR (
   capture_id     IN NUMBER);

其参数解释如下:

ParameterDescription
capture_id要导出其 AWR 快照的捕获的 ID(必填)

注意事项:

只有在当前数据库中执行了相应的工作负载捕获(意味着 DBA_WORKLOAD_CAPTURES 中的相应行不是通过调用 GET_CAPTURE_INFO 函数创建的)并且与原始捕获时间段对应的 AWR 快照仍然可用时,此过程才有效。


FINISH_CAPTURE Procedure

此过程向所有连接的会话发出信号以停止工作负载捕获并停止捕获对数据库的未来请求。其语法格式如下:

DBMS_WORKLOAD_CAPTURE.FINISH_CAPTURE
   timeout     IN   NUMBER  DEFAULT 30
   reason       IN   VARCHAR2 DEFAULT NULL);

其参数解释如下:

ParameterDescription
timeout以秒为单位指定过程在超时之前应等待的时间。如果您想取消当前的工作负载捕获并且不等待任何会话刷新它的捕获缓冲区,请传递 0。默认值:30 秒
reason指定调用过程的原因。原因出现在视图 DBA_WORKLOAD_CAPTURES 的 ERROR_MESSAGE 列中

注意事项:

  • 默认情况下,FINISH_CAPTURE会等待30秒,以便在超时之前接收来自数据库集群中所有会话的成功确认
  • 当 FINISH_CAPTURE 正在等待确认时,所有正在执行用户请求或接收到新用户请求的会话,刷新它们的缓冲区并将它们的确认发送回 FINISH_CAPTURE
  • 如果数据库会话在整个 FINISH_CAPTURE 期间保持空闲(等待下一个用户请求),则该会话可能具有未刷新的捕获缓冲区,并且不会向 FINISH_CAPTURE 发送确认
  • 为避免这种情况,在调用 FINISH_CAPTURE 时不要让会话保持空闲状态(等待下一个用户请求)。在运行 FINISH_CAPTURE 之前关闭数据库会话,或者在 FINISH_CAPTURE 期间向这些会话发送新的数据库请求

GET_CAPTURE_INFO Function

此过程检索有关规定目录中存在的工作负载捕获的所有信息,将信息导入 DBA_WORKLOAD_CAPTURES 和 DBA_WORKLOAD_FILTERS 视图,并返回适当的 DBA_WORKLOAD_CAPTURES.ID

其语法格式如下:

DBMS_WORKLOAD_CAPTURE.GET_CAPTURE_INFO
   dir     IN   VARCHAR2)
  RETURN NUMBER;

其参数解释如下:

ParameterDescription
dir所有工作负载捕获文件所在的 DIRECTORY 对象的名称(区分大小写)(强制)

注意事项:

如果 DBA_WORKLOAD_CAPTURES 中已经存在描述规定目录中捕获的适当行,则 GET_CAPTURE_INFO 函数仅返回该行的 DBA_WORKLOAD_CAPTURES.ID。如果没有现有行与规定目录中存在的捕获相匹配,则会将新行插入 DBA_WORKLOAD_CAPTURES 并返回该行的 ID。


IMPORT_AWR Function

此过程导入与给定捕获 ID 关联的 AWR 快照,前提是这些 AWR 快照之前使用 EXPORT_AWR 过程从原始捕获系统导出。其语法格式如下:

DBMS_WORKLOAD_CAPTURE.IMPORT_AWR (
   capture_id       IN   NUMBER,
   staging_schema   IN   VARCHAR2,
   force_cleanup    IN   BOOLEAN DEFAULT FALSE)
 RETURN NUMBER;

其参数解释如下:

ParameterDescription
capture_id应导入其 AWR 快照的捕获的 ID。(强制)
staging_schema当前数据库中有效模式的名称,在将 AWR 快照从捕获目录导入到 SYS AWR 模式时可用作临时区域。SYS 模式不是有效输入。(必填,区分大小写)。
force_cleanup值如下:
  • TRUE - 给定 staging_schema 中存在的任何 AWR 数据在实际导入操作之前被删除。在实际导入之前,所有名称与 AWR 中的任何表匹配的表都将被删除。这通常等同于删除以下 SQL 返回的所有表:
SELECT table_name FROM dba_tables WHERE owner = staging_schema AND table_name like 'WR_$%';
## 仅当您确定 staging_schema 中的任何此类表中没有重要数据时才使用此选项
  • FALSE -(默认)在导入操作之前没有表从 staging_schema 中删除

其返回值解释如下:

返回用于导入 AWR 快照的新的随机生成的数据库 ID。在 DBA_WORKLOAD_CAPTURES 视图的 AWR_DBID 列中可以找到相同的值。

注意事项:

- 如果作为输入提供的 staging_schema 包含与任何 AWR 表同名的任何表,例如 "WRM$_SNAPSHOT""WRH$_PARAMETER" ,IMPORT_AWR 将失败

- 在调用 IMPORT_AWR 之前,请在 staging_schema 中删除任何此类表

REPORT Function

此函数生成有关规定的工作负载捕获的报告。其语法格式如下:

DBMS_WORKLOAD_CAPTURE.REPORT (
   capture_id      IN   NUMBER,
   format          IN   VARCHAR2)
 RETURN CLOB;

其参数解释如下:

ParameterDescription
capture_id需要捕获报告的工作负载捕获的 ID。(强制) 这与包含需要生成报告的工作负载捕获的目录有关。应该是一个有效的 DIRECTORY 对象,它指向主机系统中包含工作负载捕获的有效目录
format指定报告格式。有效值为 DBMS_WORKLOAD_CAPTURE.TYPE_TEXT 和 DBMS_WORKLOAD_CAPTURE.TYPE_HTML。(强制)

其返回值解释如下:以所需格式返回的报告正文作为 CLOB。

ConstantTypeValueDescription
TYPE_HTMLVARCHAR2(4)‘HTML’生成报告的 HTML 版本
TYPE_TEXTVARCHAR2(4)‘TEXT’用作格式参数的输入以生成报告的文本版本

START_CAPTURE Procedure

此过程在所有实例上启动工作负载捕获。其语法格式如下:

DBMS_WORKLOAD_CAPTURE.START_CAPTURE (
   name              IN  VARCHAR2,
   dir               IN  VARCHAR2,
   duration          IN  NUMBER   DEFAULT NULL,
   default_action    IN  VARCHAR2 DEFAULT 'INCLUDE',
   auto_unrestrict   IN  BOOLEAN  DEFAULT TRUE,
   capture_sts       IN  BOOLEAN  DEFAULT FALSE,
   sts_cap_interval  IN  NUMBER   DEFAULT 300,
   plsql_mode        IN  VARCHAR2 DEFAULT 'TOP_LEVEL',
   encryption        IN  VARCHAR2 DEFAULT NULL);

其参数解释如下:

ParameterDescription
name工作负载捕获的名称。允许为工作负载捕获添加标签,例如“感恩节周末”或“圣诞节高峰工作负载”,以供将来参考。工作负载捕获的名称与捕获的工作负载操作一起保留。(强制)
dir存储所有工作负载捕获文件的 DIRECTORY 对象的名称(区分大小写)。应包含足够的空间来容纳所有工作负载捕获文件(强制)
duration用于指定需要捕获工作负载的持续时间(以秒为单位)的可选输入。DEFAULT 为 NULL,这意味着工作负载捕获将继续,直到用户执行 DBMS_WORKLOAD_CAPTURE.FINISH_CAPTURE
default_action可以是 INCLUDE 或 EXCLUDE。确定默认情况下是否应捕获每个用户请求。还确定指定的工作负载过滤器是否应被视为 INCLUSION 过滤器或 EXCLUSION 过滤器。下面详解两种的区别
auto_unrestrict可以是 TRUE 或 FALSE。 如果为 TRUE,则在成功的 START_CAPTURE 后,所有使用 STARTUP RESTRICT 以 RESTRICTED 模式启动的实例将自动不受限制(默认TRUE)。如果为 FALSE,则没有数据库实例自动不受限制
capture_sts如果此参数为 TRUE,SQL 调优集捕获也会与工作负载捕获并行启动。生成的 SQL 调整集可以使用 EXPORT_AWR 过程连同 AWR 数据一起导出。目前,Oracle RAC 环境不支持并行 STS 捕获,因此如果在该上下文中使用此参数则无效。使用 DBMS_WORKLOAD_REPLAY 接口定义的捕获过滤器不适用于 SQL 调优集捕获。调用用户必须具有适当的权限(“ADMINISTER SQL TUNING SET”)。如果启动 SQL 集捕获失败,工作负载捕获将停止。原因存储在 DBA_WORKLOAD_CAPTURES.ERROR_MESSAGE 中。默认值为 FALSE
sts_cap_interval指定从游标缓存中捕获 SQL 集的捕获间隔,以秒为单位。默认值为 300。
plsql_mode指定 PL/SQL 捕获模式: TOP_LEVEL — 仅捕获顶级 PL/SQL 调用;EXTENDED — 捕获顶级 PL/SQL 调用 和 从 PL/SQL 调用的 SQL
encryption指定工作负载捕获中的敏感数据是否加密

default_action:

  • 如果 INCLUDE,默认情况下会捕获所有用户对数据库的请求,但过滤器定义的工作负载部分除外。在这种情况下,使用 ADD_FILTER 过程指定的所有过滤器都被视为 EXCLUSION 过滤器,确定未捕获的工作负载。(DEFAULT,因此所有指定的过滤器都被假定为 EXCLUSION 过滤器)
  • 如果 EXCLUDE,默认情况下不会捕获对数据库的用户请求,除了由过滤器定义的工作负载部分。在这种情况下,使用 ADD_FILTER 过程指定的所有过滤器都被视为 INCLUSION 过滤器,确定捕获的工作负载。

encryption:可能的值是:

  1. NULL — 捕获文件未加密(默认)
  2. AES128 — 捕获文件使用 AES128 加密
  3. AES192 — 捕获文件使用 AES192 加密
  4. AES256 — 捕获文件使用 AES256 加密

使用说明:

  • 成功调用 START_CAPTURE 后发送到数据库的所有用户请求都会在给定的持续时间内记录在给定的 dir 目录中,前提是指定了一个。如果未指定持续时间,捕获将无限期持续,直到执行 FINISH_CAPTURE 过程
  • 工作负载捕获一旦开始,就会在指定的持续时间内,或直到执行 FINISH_CAPTURE 后,继续记录跨数据库实例关闭和启动的用户请求,以先发生者为准
  • 可以使用工作负载过滤器(如 ADD_FILTER 过程中所述)仅捕获发送到数据库的用户请求的一个子集。默认情况下,当未定义工作负载过滤器时,将捕获所有用户请求
  • 从 Oracle 数据库后台进程(如 SMON、PMON、MMON)和 Oracle 数据库调度程序作业(详见 DBMS_SCHEDULER 程序包)启动的工作负载不会被捕获,无论工作负载过滤器如何定义。这些活动应该在适当配置的回放系统上自动发生
  • 默认情况下,在成功调用 START_CAPTURE 后,使用 STARTUP RESTRICT 在 RESTRICTED 模式下启动的所有数据库实例都是 UNRESTRICTED。如果您不希望这种行为,请对 auto_unrestrict 输入参数使用 FALSE
  • 为工作负载有一个明确定义的起点很重要,这样重放系统可以在启动捕获的工作负载的重放之前恢复到该点。要为工作负载捕获定义明确的起点,最好在执行 START_CAPTURE 时不要有任何活动的用户会话。如果正在进行的会话有正在进行的事务,则这些事务不会在后续数据库重放中正确重放,因为只有调用在 START_CAPTURE 之后执行的那部分事务会被重放
  • 对于加密捕获,START_CAPTURE 过程依赖于软件密钥库。标识符是 oracle.rat.database_replay.encryption(区分大小写)
  • 您必须在自动登录模式下配置软件密钥库。否则,如果在抓取过程中数据库被弹回,则抓取自动终止