注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下:
Oracle数据库Real Application Testing之Database Replay相关视图
文章快速说明索引
学习目标:
目的:接下来这段时间我想做一些兼容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
DBA_WORKLOAD_FILTERS 显示已在当前数据库中定义的所有工作负载过滤器。在 Oracle 数据库 11g 中,仅支持 CAPTURE 类型的负载过滤器。从 Oracle Database 11gR2 开始,支持 REPLAY 类型的过滤器。
DBA_WORKLOAD_CAPTURES
DBA_WORKLOAD_CAPTURES 显示当前数据库中已执行的所有工作负载捕获。它还列出调用了 DBMS_WORKLOAD_CAPTURE.GET_CAPTURE_INFO() 或 DBMS_WORKLOAD_REPLAY.GET_REPLAY_INFO() 的捕获。每行包含有关一个工作负载捕获的信息。
DBA_WORKLOAD_CAPTURE_SQLTEXT
DBA_WORKLOAD_CAPTURE_SQLTEXT 显示已记录在工作负载捕获中的所有 SQL 语句。对于那些长度超过 1000 个字符的 SQL 语句,可以使用 DBMS_WORKLOAD_REPLAY.LOAD_LONG_SQLTEXT
过程将完整语句加载到 DBA_WORKLOAD_LONG_SQLTEXT
视图。
DBA_WORKLOAD_REPLAYS
DBA_WORKLOAD_REPLAYS 显示当前数据库中已执行的所有工作负载重放。它还列出了调用了 DBMS_WORKLOAD_REPLAY.GET_REPLAY_INFO()
的回放。每行包含有关一个工作负载重放的信息。
DBA_WORKLOAD_CONNECTION_MAP
- 官方链接:https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/DBA_WORKLOAD_CONNECTION_MAP.html
DBA_WORKLOAD_CONNECTION_MAP 显示工作负载重放的连接映射信息。 每行为特定工作负载重放定义一个连接映射。
DBA_WORKLOAD_REPLAY_CLIENTS
- 官方链接:https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/DBA_WORKLOAD_REPLAY_CLIENTS.html
DBA_WORKLOAD_REPLAY_CLIENTS 显示所有工作负载重放客户端及其分配的实例。
DBA_WORKLOAD_REPLAY_DIVERGENCE
DBA_WORKLOAD_REPLAY_DIVERGENCE 显示有关已重放的用户调用的数据/错误分歧的信息。
DBA_WORKLOAD_DIV_SUMMARY 在 DBA_WORKLOAD_REPLAY_DIVERGENCE 视图中显示重放分歧信息的摘要。DBA_WORKLOAD_REPLAY_DIVERGENCE 可能有重复的条目,而 DBA_WORKLOAD_DIV_SUMMARY 只保留一个条目并跟踪每个重复条目的出现次数。
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 生成的,这样可以更快地生成重放报告。
示例:
以下查询打印在回放期间出现错误分歧的前 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
DBA_WORKLOAD_REPLAY_SCHEDULES 显示当前重放目录的重放计划名称。
重放计划定义一个或多个工作负载捕获,以及开始重放的顺序。当前重放目录由 DBMS_WORKLOAD_REPLAY.SET_REPLAY_DIRECTORY('replay_dir')
设置。视图中的每一行都包含有关一个重放计划的信息。