目录结构
注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下:
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之Database Replay相关视图
- 文章快速说明索引
- DBA_WORKLOAD_FILTERS
- DBA_WORKLOAD_CAPTURES
- DBA_WORKLOAD_CAPTURE_SQLTEXT
- DBA_WORKLOAD_REPLAYS
- DBA_WORKLOAD_CONNECTION_MAP
- DBA_WORKLOAD_REPLAY_CLIENTS
- DBA_WORKLOAD_REPLAY_DIVERGENCE
- DBA_WORKLOAD_DIV_SUMMARY
- DBA_WORKLOAD_REPLAY_SCHEDULES
文章快速说明索引
学习目标:
目的:接下来这段时间我想做一些兼容Oracle数据库Real Application Testing (即:RAT)上的一些功能开发,本专栏这里主要是学习以及介绍Oracle数据库功能的使用场景、原理说明和注意事项等,基于PostgreSQL数据库的功能开发等之后 由新博客进行介绍和分享!
学习内容:(详见目录)
1、Oracle数据库Real Application Testing之Database Replay相关视图
学习时间:
2023年04月23日 20:27:54
学习产出:
1、Oracle数据库Real Application Testing之Database Replay相关视图
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>
注:数据库回放的实操大致步骤一样,不过在不同的场景下有不同的操作 因此有了不同的实操案例,有兴趣的小伙伴们可以看一下之前的实操文档:
- Oracle的学习心得和知识总结(十三)|Oracle数据库Real Application Testing之Database Replay实操(一),点击前往
- Oracle的学习心得和知识总结(二十二)|Oracle数据库Real Application Testing之Database Replay实操(二),点击前往
DBA_WORKLOAD_FILTERS
- 官方链接:https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/DBA_WORKLOAD_FILTERS.html
DBA_WORKLOAD_FILTERS 显示已在当前数据库中定义的所有工作负载过滤器。在 Oracle 数据库 11g 中,仅支持 CAPTURE 类型的负载过滤器。从 Oracle Database 11gR2 开始,支持 REPLAY 类型的过滤器。
Column | Datatype | NULL | Description |
---|---|---|---|
TYPE | VARCHAR2(30) | 工作负载过滤器的类型(CAPTURE 或 REPLAY) | |
ID | VARCHAR2(40) | 工作负载过滤器的序号 | |
STATUS | VARCHAR2(6) | 工作负载过滤器的状态:NEW - 此过滤器将由下一个后续操作使用,例如下一个工作负载捕获。IN USE - 此过滤器当前正被正在进行的操作使用,例如活动工作负载捕获。USED - 此过滤器过去曾被某些操作使用过,例如过去的工作负载捕获 | |
SET_NAME | VARCHAR2(1000) | 过滤器所属的过滤器集的名称 | |
NAME | VARCHAR2(128) | 工作负载过滤器的名称 | |
ATTRIBUTE | VARCHAR2(128) | 定义过滤器的属性的名称 | |
VALUE | VARCHAR2(4000) | 定义筛选器的属性的值。 如果属性是字符串类型,则支持 % 和 _ 等通配符。 |
DBA_WORKLOAD_CAPTURES
- 官方链接:https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/DBA_WORKLOAD_CAPTURES.html
DBA_WORKLOAD_CAPTURES 显示当前数据库中已执行的所有工作负载捕获。它还列出调用了 DBMS_WORKLOAD_CAPTURE.GET_CAPTURE_INFO() 或 DBMS_WORKLOAD_REPLAY.GET_REPLAY_INFO() 的捕获。每行包含有关一个工作负载捕获的信息。
Column | Datatype | NULL | Description |
---|---|---|---|
ID | NUMBER | NOT NULL | 工作负载捕获的内部密钥 |
NAME | VARCHAR2(128) | NOT NULL | 工作负载捕获的名称 |
DBID | NUMBER | NOT NULL | 捕获工作负载的数据库的 ID |
DBNAME | VARCHAR2(128) | NOT NULL | 捕获工作负载的数据库的名称 |
DBVERSION | VARCHAR2(17) | NOT NULL | 捕获工作负载的数据库版本 |
PARALLEL | VARCHAR2(3) | 指示捕获工作负载的数据库是 Oracle RAC 数据库 (YES) 还是单实例数据库 (NO) | |
DIRECTORY | VARCHAR2(128) | NOT NULL | 用于工作负载捕获的目录对象的名称 |
STATUS | VARCHAR2(40) | NOT NULL | 工作负载捕获的当前状态:IN PROGRESS - 工作负载捕获正在进行中。COMPLETED - 工作负载捕获已成功完成。FAILED - 工作负载捕获因遇到错误而中止 |
START_TIME | DATE | NOT NULL | 捕获开始的日期时间 |
END_TIME | DATE | 捕获完成或失败的日期时间;如果捕获仍在进行中则为 NULL | |
DURATION_SECS | NUMBER | 工作负载捕获的持续时间(以秒为单位) | |
START_SCN | NUMBER | NOT NULL | 本次捕获的起始 SCN 值 |
END_SCN | NUMBER | 本次捕获的结束 SCN 值;如果捕获仍在进行中则为 NULL | |
DEFAULT_ACTION | VARCHAR2(30) | NOT NULL | 应用工作负载捕获过滤器的模式:INCLUDE - 所有捕获过滤器都被视为 EXCLUSION 过滤器,确定不会捕获的工作负载。EXCLUDE - 所有捕获过滤器都被视为 INCLUSION FILTERS,确定将捕获的工作负载。 |
FILTERS_USED | NUMBER | 用于此捕获的过滤器数 | |
CAPTURE_SIZE | NUMBER | 工作负载捕获的总大小 | |
DBTIME | NUMBER | 此工作负载捕获中记录的数据库时间总量(以微秒为单位) | |
DBTIME_TOTAL | NUMBER | 在工作负载捕获期间整个数据库的数据库时间总量(以微秒为单位),包括未捕获的工作负载部分 | |
USER_CALLS | NUMBER | 此工作负载捕获中记录的用户调用总数 | |
USER_CALLS_TOTAL | NUMBER | 工作负载捕获期间整个数据库的用户调用总数,包括未捕获的工作负载部分 | |
USER_CALLS_UNREPLAYABLE | NUMBER | 在此工作负载捕获的后续重放中不会重放的用户调用总数 | |
PLSQL_SUBCALL_SIZE | NUMBER | 从 PL/SQL 执行的 SQL 的工作负载捕获总大小 | |
PLSQL_CALLS | NUMBER | 工作负载捕获中记录的 PL/SQL 调用总数 | |
PLSQL_SUBCALLS | NUMBER | 从 PL/SQL 执行的 SQL 的工作负载捕获中记录的调用总数 | |
PLSQL_DBTIME | NUMBER | 工作负载捕获中记录的来自 PL/SQL 调用的数据库时间总量(以微秒为单位) | |
TRANSACTIONS | NUMBER | 此工作负载捕获中记录的事务总数 | |
TRANSACTIONS_TOTAL | NUMBER | 工作负载捕获期间整个数据库的事务总数,包括未捕获的工作负载部分 | |
CONNECTS | NUMBER | 此工作负载捕获中记录的会话连接总数 | |
CONNECTS_TOTAL | NUMBER | 在工作负载捕获期间跨整个数据库的会话连接总数,包括未捕获的工作负载部分 | |
ERRORS | NUMBER | 此工作负载捕获中记录的错误总数 | |
AWR_DBID | NUMBER | 与此工作负载捕获相对应的 AWR 快照的数据库 ID。对于在当前数据库中执行的捕获,此值等于当前数据库的 DBID。对于在其他数据库中执行的捕获,此值将为 NULL 或由 DBMS_WORKLOAD_CAPTURE.IMPORT_AWR() 填充 | |
AWR_BEGIN_SNAP | NUMBER | 与此工作负载捕获相对应的 AWR 快照的开始快照 ID | |
AWR_END_SNAP | NUMBER | 与此工作负载捕获相对应的 AWR 快照的结束快照 ID | |
AWR_EXPORTED | VARCHAR2(12) | 指示对应于此工作负载捕获的 AWR 快照是否已使用 DBMS_WORKLOAD_CAPTURE.EXPORT_AWR() 导出(YES )或未导出(NO ),或者是否无法导出 AWR 快照,因为捕获仍在进行中,已成功运行至完成,或者是在不同的数据库中完成的,没有导出(NOT POSSIBLE ) | |
ERROR_CODE | NUMBER | 此工作负载捕获的错误代码 | |
ERROR_MESSAGE | VARCHAR2(512) | 此工作负载捕获的错误消息 | |
DIR_PATH | VARCHAR2(4000) | NOT NULL | 工作负载捕获目录对象的完整目录路径 |
DIR_PATH_SHARED | VARCHAR2(10) | NOT NULL | 负载捕获目录是否为所有记录数据库实例共享(仅适用于Oracle RAC数据库) |
LAST_PROCESSED_VERSION | VARCHAR2(128) | 最后使用 DBMS_WORKLOAD_REPLAY.PROCESS_CAPTURE() 预处理此捕获的数据库版本;如果从未对捕获进行过预处理,则为 NULL | |
SQLSET_OWNER | VARCHAR2(128) | SQL 调优集所有者的用户名 | |
SQLSET_NAME | VARCHAR2(128) | 此工作负载捕获的 SQL 调整集的名称 | |
PLSQL_MODE | VARCHAR2(12) | PL/SQL 调用的捕获选项。可能的值:TOP_LEVEL:仅限顶级 PL/SQL;EXTENDED:顶级 PL/SQL 和从 PL/SQL 执行的 SQL | |
ENCRYPTION | VARCHAR2(128) | 指示用于给定捕获的加密标准:NULL - 捕获文件未加密;AES128 – 捕获文件使用 AES128 加密;AES192 – 捕获文件使用 AES192 加密;AES256 – 捕获文件使用 AES256 加密 | |
ENCRYPTION_VERIFIER | RAW(512) | 内部用于创建加密捕获的数据 | |
PATCH_NAME | VARCHAR2(128) | 数据库工作负载捕获和重放补丁名称。此列仅在向后移植到 Oracle Database 12c 第 1 版 (12.1) 和更早版本时填充 | |
STORAGE_TYPE | NUMBER(38) | 描述捕获的工作负载的存储位置 |
DBA_WORKLOAD_CAPTURE_SQLTEXT
- 官方链接:https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/DBA_WORKLOAD_CAPTURE_SQLTEXT.html
DBA_WORKLOAD_CAPTURE_SQLTEXT 显示已记录在工作负载捕获中的所有 SQL 语句。对于那些长度超过 1000 个字符的 SQL 语句,可以使用 DBMS_WORKLOAD_REPLAY.LOAD_LONG_SQLTEXT
过程将完整语句加载到 DBA_WORKLOAD_LONG_SQLTEXT
视图。
Column | Datatype | NULL | Description |
---|---|---|---|
CAPTURE_ID | NUMBER(38) | NOT NULL | 工作负载捕获的内部密钥 |
SQL_ID | VARCHAR2(13) | NOT NULL | 库缓存中父游标的 SQL 标识符 |
SQL_TYPE | VARCHAR2(64) | SQL 语句的类型,可以包括 INSERT、SELECT 和 CREATE INDEX 等值 | |
SQL_TEXT | VARCHAR2(1000) | 当前游标的 SQL 文本的前千个字符 | |
SQL_LENGTH | NUMBER(38) | SQL语句的长度 | |
SQL_TEXT_COMPLETE | CHAR(1) | 指示 SQL_TEXT 列是否包含 SQL 语句的全文。可能的值:Y :SQL_TEXT 列包括 SQL 语句的全文。N :SQL_TEXT 列仅包含 SQL 文本的前千个字符 |
DBA_WORKLOAD_REPLAYS
- 官方链接:https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/DBA_WORKLOAD_REPLAYS.html
DBA_WORKLOAD_REPLAYS 显示当前数据库中已执行的所有工作负载重放。它还列出了调用了 DBMS_WORKLOAD_REPLAY.GET_REPLAY_INFO()
的回放。每行包含有关一个工作负载重放的信息。
Column | Datatype | NULL | Description |
---|---|---|---|
ID | NUMBER | NOT NULL | 工作负载重放的内部密钥 |
NAME | VARCHAR2(128) | NOT NULL | 工作负载重放的名称 |
DBID | NUMBER | NOT NULL | 重放工作负载的数据库的 ID |
DBNAME | VARCHAR2(128) | NOT NULL | 重放工作负载的数据库的名称 |
DBVERSION | VARCHAR2(17) | NOT NULL | 重放工作负载的数据库版本 |
PARALLEL | VARCHAR2(3) | 指示重放负载的数据库是 Oracle RAC 数据库 (YES ) 还是单实例数据库 (NO ) | |
DIRECTORY | VARCHAR2(128) | NOT NULL | 工作负载重放的目录对象的名称 |
CAPTURE_ID | NUMBER | 重放的捕获 (DBA_WORKLOAD_CAPTURES.ID) 的 ID。如果回放涉及回放计划,则 CAPTURE_ID 将为空 | |
STATUS | VARCHAR2(40) | NOT NULL | 工作负载重放的当前状态:PREPARE - 工作负载准备已启动,正在等待客户端加入。IN PROGRESS - 正在进行工作负载重放。COMPLETED - 工作负载重放已成功完成。CANCELLED - 工作负载重放或工作负载准备已被取消。FAILED - 工作负载重放由于遇到错误而中止 |
PREPARE_TIME | DATE | 工作负载准备开始的日期时间 | |
START_TIME | DATE | 重放开始的日期时间 | |
END_TIME | DATE | 重放完成或取消的日期时间;如果重放仍在进行中则为 NULL | |
DURATION_SECS | NUMBER | 工作负载重放的持续时间(以秒为单位) | |
NUM_CLIENTS | NUMBER | NOT NULL | 此工作负载重放中使用的工作负载重放客户端进程数 |
NUM_CLIENTS_DONE | NUMBER | NOT NULL | 已完成重放的工作负载重放客户端进程数 |
FILTER_SET_NAME | VARCHAR2(128) | 用于回放的过滤器集的名称 | |
DEFAULT_ACTION | VARCHAR2(30) | NOT NULL | Reserved for future use |
SYNCHRONIZATION | VARCHAR2(9) | 指示是否应维护记录的事务语义 (TRUE ) 或 (FALSE )。启用同步后,将保留在原始工作负载捕获期间观察到的提交顺序。重放的每个动作只有在其所有相关提交都已执行后才会执行。相关提交是在原始工作负载捕获中的给定操作之前发出的提交。另请参阅:DBMS_WORKLOAD_REPLAY.PREPARE_REPLAY() 了解此重放参数的详细说明 | |
CONNECT_TIME_SCALE | NUMBER | NOT NULL | 重放期间捕获的流的连接时间比例因子。该值被解释为百分比。默认值 100 表示 100%。另请参阅:DBMS_WORKLOAD_REPLAY.PREPARE_REPLAY() 了解此重放参数的详细说明 |
THINK_TIME_SCALE | NUMBER | NOT NULL | 考虑重放期间捕获的流的时间比例因子。它缩放来自同一捕获流的两个连续用户调用之间经过的思考时间。输入被解释为百分比。默认值 100 表示 100%。另请参阅:DBMS_WORKLOAD_REPLAY.PREPARE_REPLAY() 了解此重放参数的详细说明 |
THINK_TIME_AUTO_CORRECT | VARCHAR2(5) | 指示思考时间是否应在调用之间自动更正 (TRUE ) 或 (FALSE )。如果回放比捕获慢,则值为 TRUE 会减少思考时间。FALSE 值不执行任何操作。另请参阅:DBMS_WORKLOAD_REPLAY.PREPARE_REPLAY() 了解此重放参数的详细说明 | |
SCALE_UP_MULTIPLIER | NUMBER | NOT NULL | 在多重捕获重放之前,SCALE_UP_MULTIPLIER 用于扩展工作负载捕获的查询部分。来自每个捕获会话的查询同时重放的次数与 SCALE_UP_MULTIPLIER 的值一样多 |
USER_CALLS | NUMBER | 重放的用户调用总数 | |
DBTIME | NUMBER | 重放的累积数据库时间(以微秒为单位) | |
NETWORK_TIME | NUMBER | 重放的累计网络时间(以微秒为单位) | |
THINK_TIME | NUMBER | 重放的累计思考时间(以微秒为单位) | |
PAUSE_TIME | NUMBER | 重放暂停的总时间(以秒为单位)(通过调用 PAUSE_REPLAY 过程) | |
PLSQL_CALLS | NUMBER | 重放的顶级 PL/SQL 调用总数 | |
PLSQL_SUBCALLS | NUMBER | 从 PL/SQL 执行的 SQL 的重放调用总数 | |
PLSQL_DBTIME | NUMBER | 来自 PL/SQL 调用的数据库时间总量(以微秒为单位) | |
ELAPSED_TIME_DIFF | NUMBER | Reserved for future use | |
REPLAY_DEADLOCKS | NUMBER | 工作负载重放使用来自捕获文件的计时信息或基于提交的同步。使用基于提交的同步,捕获时间提交顺序在重放期间被保留,并且会话通常等待要进行下一次提交的会话;这种等待被归类为WCR: replay clock 等待。如果要进行下一次提交的会话本身被等待WCR: replay clock 的会话阻塞,则会发生重放死锁。重放死锁通过允许阻止程序继续执行并乱序提交来解决。重放死锁不会被检测为数据库死锁,因为WCR: replay clock 是一个空闲等待,专门为数据库重放引入 | |
AWR_DBID | NUMBER | 与此工作负载重放对应的 AWR 快照的数据库 ID。对于在当前数据库中执行的重放,此值等于当前数据库的 DBID。对于在其他数据库中执行的重放,此值将为 NULL 或由 DBMS_WORKLOAD_REPLAY.IMPORT_AWR() 填充。另见:DBMS_WORKLOAD_REPLAY.IMPORT_AWR() | |
AWR_BEGIN_SNAP | NUMBER | 与此工作负载重放相对应的 AWR 快照的开始快照 ID | |
AWR_END_SNAP | NUMBER | 与此工作负载重放对应的 AWR 快照的结束快照 ID | |
AWR_EXPORTED | VARCHAR2(12) | 指示是否已使用 DBMS_WORKLOAD_REPLAY.EXPORT_AWR()(YES )或未使用(NO )导出与此工作负载重放相对应的 AWR 快照,或者是否因为重放仍在进行中而无法导出 AWR 快照,已成功运行至完成,或者是在未从中导出的不同数据库中完成的(NOT POSSIBLE )。另见:DBMS_WORKLOAD_REPLAY.EXPORT_AWR() | |
ERROR_CODE | NUMBER | 此工作负载重放的错误代码 | |
ERROR_MESSAGE | VARCHAR2(512) | 此工作负载重放的错误消息 | |
DIR_PATH | VARCHAR2(4000) | NOT NULL | 重放目录对象的完整目录路径 |
REPLAY_DIR_NUMBER | NUMBER | 根据此视图中其他列的值计算的散列值,例如 NAME、DBID、DBNAME、PREPARE_TIME、START_TIME 和 END_TIME 列。对于任何重放,它都应该是相当独特的。该值用于在重放目录下创建子目录 | |
SQLSET_OWNER | VARCHAR2(128) | SQL 调优集所有者的用户名 | |
SQLSET_NAME | VARCHAR2(128) | 此工作负载重放的 SQL 调整集的名称 | |
SCHEDULE_NAME | VARCHAR2(128) | 要重放的计划的名称。它定义了一个或多个工作负载捕获,以及开始重放的顺序。如果 SCHEDULE_NAME 为 NULL,则重放是自 Oracle Database 11g 以来引入的常规重放,使用来自 DBMS_WORKLOAD_REPLAY 的现有 API 完成:INITIALIZE_REPLAY 、PREPARE_REPLAY 和 START_REPLAY 。如果 SCHEDULE_NAME 不为 NULL ,则重放是 Oracle Database 12c 中引入的新的合并重放。也就是说,它是在 DBMS_WORKLOAD_REPLAY :INITIALIZE_CONSOLIDATED_REPLAY 、PREPARE_CONSOLIDATED_REPLAY 和 START_CONSOLIDATED_REPLAY 中使用新 API 完成的一个或多个工作负载捕获的重放。另见:DBMS_WORKLOAD_REPLAY | |
DIVERGENCE_LOAD_STATUS | VARCHAR2(5) | 指示是否已加载重放分歧数据 (TRUE ) 或 (FALSE ) | |
PLSQL_MODE | VARCHAR2(12) | PL/SQL 调用的重放选项。可能的值: TOP_LEVEL:仅限顶级 PL/SQL。EXTENDED:如果 PL/SQL 中没有记录 SQL,则从 PL/SQL 或顶级 PL/SQL 执行 SQL | |
CONNECT_TIME_AUTO_CORRECT | VARCHAR2(12) | 指示当重放进行得比捕获快时,是否自动减少连接新会话的等待时间。减少的数量由重放和捕获最慢会话之间的经过时间差决定。默认值是true。当回放比捕获慢时没有影响 | |
RAC_MODE | VARCHAR2(19) | Oracle RAC 环境中的重放选项:GLOBAL_SYNC :跨所有实例同步。这是默认值。来自工作负载重放客户端 (wrc) 的数据库连接是基于连接重新映射完成的。PER_INSTANCE_CLIENT :跨所有实例同步。来自一个 wrc 的所有数据库连接仅连接到一个实例。PER_INSTANCE_SYNC :同步在一个实例内。来自一个 wrc 的所有数据库连接仅连接到一个实例 | |
QUERY_ONLY | VARCHAR2(1) | 指示是否仅重放来自当前工作负载捕获的仅查询工作负载,跳过所有可能更新数据库的 DML/DDL (Y ) 或 (N ) | |
PDB_LEVEL | VARCHAR2(1) | 指示回放是 PDB 级回放 (Y ) 还是非 (N ) | |
NUM_CLIENTS_ABORTED | NUMBER | 重放期间中止的工作负载重放客户端数 | |
PATCH_NAME | VARCHAR2(128) | 数据库工作负载捕获和重放补丁名称。此列仅在向后移植到 Oracle Database 12c 第 1 版 (12.1) 和更早版本时填充 | |
DURATION_LIMIT | NUMBER(38) | 重放持续时间限制(以秒为单位)。如果未设置重放持续时间限制,则此列的值为空 | |
STATUS_DETAILS | VARCHAR2(128) | 提供有关重放状态的其他详细信息。如果其他详细信息不可用,则此列的值为空 |
DBA_WORKLOAD_CONNECTION_MAP
- 官方链接:https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/DBA_WORKLOAD_CONNECTION_MAP.html
DBA_WORKLOAD_CONNECTION_MAP 显示工作负载重放的连接映射信息。 每行为特定工作负载重放定义一个连接映射。
Column | Datatype | NULL | Description |
---|---|---|---|
REPLAY_ID | NUMBER | NOT NULL | 回放的ID(对应DBA_WORKLOAD_REPLAYS.ID) |
CONN_ID | NUMBER | NOT NULL | 连接映射表的Key(ID) |
SCHEDULE_CAP_ID | NUMBER | 计划捕获 ID(对应于 DBA_WORKLOAD_SCHEDULE_CAPTURES.SCHEDULE_CAP_ID) | |
CAPTURE_CONN | VARCHAR2(4000) | NOT NULL | 捕获期间使用的连接字符串 |
REPLAY_CONN | VARCHAR2(4000) | 重放期间应使用的连接字符串 |
DBA_WORKLOAD_REPLAY_CLIENTS
- 官方链接:https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/DBA_WORKLOAD_REPLAY_CLIENTS.html
DBA_WORKLOAD_REPLAY_CLIENTS 显示所有工作负载重放客户端及其分配的实例。
Column | Datatype | NULL | Description |
---|---|---|---|
WRC_ID | NUMBER(38) | NOT NULL | 工作负载重放客户端的标识符 |
SCHEDULE_CAP_ID | NUMBER(38) | NOT NULL | 添加到重放计划的工作负载捕获的唯一标识符。0 用于非合并重放 |
INSTANCE_NUMBER | NUMBER(38) | NOT NULL | 重放客户端连接的实例 |
DBA_WORKLOAD_REPLAY_DIVERGENCE
- 官方链接:https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/DBA_WORKLOAD_REPLAY_DIVERGENCE.html
DBA_WORKLOAD_REPLAY_DIVERGENCE 显示有关已重放的用户调用的数据/错误分歧的信息。
DBA_WORKLOAD_DIV_SUMMARY 在 DBA_WORKLOAD_REPLAY_DIVERGENCE 视图中显示重放分歧信息的摘要。DBA_WORKLOAD_REPLAY_DIVERGENCE 可能有重复的条目,而 DBA_WORKLOAD_DIV_SUMMARY 只保留一个条目并跟踪每个重复条目的出现次数。
Column | Datatype | NULL | Description |
---|---|---|---|
REPLAY_ID | NUMBER | NOT NULL | 工作负载重放的 ID(密钥) |
TIMESTAMP | TIMESTAMP(6) WITH TIME ZONE | 分歧发生的时间 | |
DIVERGENCE_TYPE | NUMBER | NOT NULL | Reserved for future use |
IS_QUERY_DATA_DIVERGENCE | VARCHAR2(1) | 指示数据差异是否来自 SELECT 查询获取的行数 (Y) 或 (N) | |
IS_DML_DATA_DIVERGENCE | VARCHAR2(1) | 指示差异是否来自受 INSERT、UPDATE 或 DELETE SQL 语句影响的行数 (Y) 或 (N) | |
IS_ERROR_DIVERGENCE | VARCHAR2(1) | 指示差异是否来自捕获或重放期间看到的错误 (Y) 或 (N) | |
IS_THREAD_FAILURE | VARCHAR2(1) | 指示差异是否来自重放期间失败的会话 (Y) 或 (N) | |
IS_DATA_MASKED | VARCHAR2(1) | 指示 SQL 调用是否包含屏蔽绑定数据 (Y) 或 (N)。如果在重放数据库中使用数据屏蔽技术,则需要屏蔽工作负载捕获文件。否则,从包含敏感绑定数据的捕获文件生成的 SQL 语句将与数据库不匹配。当重放客户端向服务器发送屏蔽绑定数据时,它会为当前 SQL 调用打开 IS_DATA_MASKED 标志 | |
IS_CLIENT_FAILURE | VARCHAR2(1) | 指示工作负载重放客户端在重放期间是否失败 (Y) 或 (N) | |
EXPECTED_ROW_COUNT | NUMBER | 在捕获期间为 SELECT 查询提取的行数或受 INSERT、UPDATE 或 DELETE SQL 语句影响的行数 | |
OBSERVED_ROW_COUNT | NUMBER | 回放期间为 SELECT 查询提取的实际行数或受 INSERT、UPDATE 或 DELETE SQL 语句影响的行数 | |
EXPECTED_ERROR# | NUMBER | 捕获期间出现的错误编号(如果捕获成功运行则为 0) | |
EXPECTED_ERROR_MESSAGE | VARCHAR2(4000) | 错误消息的文本,其编号出现在 EXPECTED_ERROR# 列中 | |
OBSERVED_ERROR# | NUMBER | 重放期间看到的实际错误号(如果重放成功运行则为 0,如果无法重放捕获的调用则为 15566(对应于 ORA-15566)) | |
OBSERVED_ERROR_MESSAGE | VARCHAR2(4000) | 其编号出现在 OBSERVED_ERROR# 列中的错误消息的文本 | |
STREAM_ID | NUMBER | NOT NULL | 报告差异的会话的流 ID |
CALL_COUNTER | NUMBER | NOT NULL | 报告分歧的用户呼叫的调用计数器 |
CAPTURE_STREAM_ID | NUMBER | 重放产生差异的捕获文件的内部 ID | |
SQL_ID | VARCHAR2(13) | 报告差异的 SQL 的 SQL ID | |
SESSION_ID | NUMBER | NOT NULL | 报告差异的会话的会话 ID |
SESSION_SERIAL# | NUMBER | NOT NULL | 捕获的报告分歧的会话的会话序列号 |
SERVICE | VARCHAR2(64) | 报告分歧的会话的服务名称 | |
MODULE | VARCHAR2(64) | 报告差异的会话的模块名称 | |
ACTION | VARCHAR2(64) | 报告分歧的会话的操作名称 | |
INSTANCE_NUMBER | NUMBER | 报告分歧的实例编号 | |
WRC_ID | NUMBER | 工作负载重放客户端的标识符 |
DBA_WORKLOAD_DIV_SUMMARY
- 官方链接:https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/DBA_WORKLOAD_DIV_SUMMARY.html
DBA_WORKLOAD_DIV_SUMMARY 在 DBA_WORKLOAD_REPLAY_DIVERGENCE 视图中显示重放分歧信息的摘要。 DBA_WORKLOAD_REPLAY_DIVERGENCE 可能有重复的条目,而 DBA_WORKLOAD_DIV_SUMMARY 只保留一个条目并跟踪每个重复条目的出现次数。
从 Oracle 数据库 12.2.0.1 开始,重放报告是从 DBA_WORKLOAD_DIV_SUMMARY 而不是从 DBA_WORKLOAD_REPLAY_DIVERGENCE 生成的,这样可以更快地生成重放报告。
Column | Datatype | NULL | Description |
---|---|---|---|
REPLAY_ID | NUMBER | NOT NULL | 工作负载重放的 ID(密钥) |
DIVERGENCE_TYPE | NUMBER | NOT NULL | Reserved for future use |
IS_QUERY_DATA_DIVERGENCE | VARCHAR2(1) | 指示数据差异是否来自 SELECT 查询获取的行数 (Y) 或 (N) | |
IS_DML_DATA_DIVERGENCE | VARCHAR2(1) | 指示差异是否来自受 INSERT、UPDATE 或 DELETE SQL 语句影响的行数 (Y) 或 (N) | |
IS_ERROR_DIVERGENCE | VARCHAR2(1) | 指示差异是否来自捕获或重放期间看到的错误 (Y) 或 (N) | |
IS_THREAD_FAILURE | VARCHAR2(1) | 指示差异是否来自重放期间失败的会话 (Y) 或 (N) | |
IS_DATA_MASKED | VARCHAR2(1) | 指示 SQL 调用是否包含屏蔽绑定数据 (Y) 或 (N)。如果在重放数据库中使用数据屏蔽技术,则需要屏蔽工作负载捕获文件。否则,从包含敏感绑定数据的捕获文件生成的 SQL 语句将与数据库不匹配。当重放客户端向服务器发送屏蔽绑定数据时,它会为当前 SQL 调用打开 IS_DATA_MASKED 标志 | |
IS_CLIENT_FAILURE | VARCHAR2(1) | 指示工作负载重放客户端在重放期间是否失败 (Y) 或 (N) | |
STREAM_ID | NUMBER | NOT NULL | 报告差异的会话的流 ID |
SQL_ID | VARCHAR2(13) | 报告差异的 SQL 的 SQL ID | |
EXPECTED_ERROR# | NUMBER | 捕获期间出现的错误编号(如果捕获成功运行则为 0) | |
EXPECTED_ERROR_MESSAGE | VARCHAR2(4000) | 错误消息的文本,其编号出现在 EXPECTED_ERROR# 列中 | |
OBSERVED_ERROR# | NUMBER | 重放期间看到的实际错误号(如果重放成功运行则为 0,如果无法重放捕获的调用则为 15566(对应于 ORA-15566)) | |
OBSERVED_ERROR_MESSAGE | VARCHAR2(4000) | 其编号出现在 OBSERVED_ERROR# 列中的错误消息的文本 | |
SERVICE | VARCHAR2(64) | 报告分歧的会话的服务名称 | |
MODULE | VARCHAR2(64) | 报告差异的会话的模块名称 | |
INSTANCE_NUMBER | NUMBER | 报告分歧的实例编号 | |
WRC_ID | NUMBER | 工作负载重放客户端的标识符 | |
OCCURRENCES | NUMBER | 回放时出现分歧的次数 |
示例:
以下查询打印在回放期间出现错误分歧的前 3 个 SQL 语句。此查询显示捕获的错误号和重放期间看到的实际错误号。
SQL> SELECT * FROM
(SELECT occurrences, sql_id, expected_error#, observed_error#
FROM dba_workload_div_summary
WHERE replay_id = 123
AND is_error_divergence = 'Y'
ORDER BY occurrences DESC)
WHERE ROWNUM <= 3;
OCCURRENCES SQL_ID EXPECTED_ERROR# OBSERVED_ERROR#
----------- ------------- --------------- ---------------
8 0xrm2wjdqv17m 0 1
4 8bzwdnnznspjd 1422 0
3 6d8rwrac8dsk7 1 1400
SQL>
DBA_WORKLOAD_REPLAY_SCHEDULES
- 官方链接:https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/DBA_WORKLOAD_REPLAY_SCHEDULES.html
DBA_WORKLOAD_REPLAY_SCHEDULES 显示当前重放目录的重放计划名称。
重放计划定义一个或多个工作负载捕获,以及开始重放的顺序。当前重放目录由 DBMS_WORKLOAD_REPLAY.SET_REPLAY_DIRECTORY('replay_dir')
设置。视图中的每一行都包含有关一个重放计划的信息。
Column | Datatype | NULL | Description |
---|---|---|---|
SCHEDULE_NAME | VARCHAR2(128) | NOT NULL | 要重放的计划的名称。它定义了一个或多个工作负载捕获,以及开始重放的顺序 |
DIRECTORY | VARCHAR2(128) | NOT NULL | 重放计划名称的目录对象名称 |
STATUS | VARCHAR2(128) | 如果正在创建计划,则为 NEW,如果重放当前正在使用计划,则为 CURRENT,否则为 NULL |