在之前的博客中,我们介绍了Oracle 19c AWR的一些变化,如下:
Oracle 19c AWR 报告的变化
https://www.cndba.cn/dave/article/4364
1 AWR 说明
在Oracle 19c多租户环境中,AWR数据的存储位置和生成模式可以通过AWR_ROOT和AWR_PDB进行区分。
1.1 AWR_ROOT(默认模式)
AWR数据默认存储在CDB级别的SYSAUX表空间中,相关元数据和统计信息以WRM$*和WRH$*命名的表存在。所有PDB的性能数据会被统一收集到CDB的AWR仓库中。
- WRM$_*:存储元数据信息(如检查的数据库和采集的快照)
- WRH$_*:保存实际采集的统计数据。
查看相关的对象:
select table_name from dba_tables where table_name like ‘WRM$%’;
select table_name from dba_tables where table_name like ‘WRH$%’;
1.2 AWR_PDB(PDB独立模式)
当启用PDB独立AWR功能时,每个PDB的AWR数据会独立存储在其本地SYSAUX表空间中,与CDB的AWR仓库隔离。具体启用方法下节说明。
2 启用PDB AWR
SQL> alter session set container = CDB$ROOT;
SQL> alter system set AWR_PDB_AUTOFLUSH_ENABLED = TRUE SCOPE=BOTH;
System altered.
SQL> alter system set AWR_SNAPSHOT_TIME_OFFSET=1000000 SCOPE=BOTH;
System altered.
SQL> select * from cdb_hist_wr_control;
DBID SNAP_INTERVAL RETENTION TOPNSQL CON_ID SRC_DBID
---------- ---------------------------------------- ---------------------------------------- ------------------------------ ---------- ----------
SRC_DBNAME
----------------------------------------------------------------------------------------------------------------------------------------------------------------
469831111 +00000 01:00:00.0 +00008 00:00:00.0 DEFAULT 0 469831111
CDB$ROOT
1793280612 +40150 00:01:00.0 +00008 00:00:00.0 DEFAULT 3 1793280612
DAVE
185015308 +40150 00:01:00.0 +00008 00:00:00.0 DEFAULT 4 185015308
ORCL
注意:
AWR_SNAPSHOT_TIME_OFFSET参数允许设置快照生成的偏移时间(单位为秒),分散快照任务,避免多实例同时操作引发的 CPU 峰值,启用PDB AWR 建议配置。
参数取值范围有2个:
- 常规值:0–3599 秒(即 1 小时内)。
- 特殊值:1000000(启用自动偏移模式)。
如果配置为特殊值(1000000),Oracle 会自动分配基于数据库名称自动计算偏移量,适用于大量 PDB的场景,无需手动配置。
这里要注意,PDB的间隔为:+40150 00:01:00.0,这个是 Oracle 内部表示时间间隔的特殊格式:
- 40150:天数(约 110 年)
- 00:01:00.0:时分秒(1 分钟)
组合意义:每 40150 天生成一次快照(即不自动生成快照)。
默认行为:
- PDB 级别:Oracle 默认不为 PDB 开启自动 AWR 快照功能,因此 SNAP_INTERVAL 显示为 +40150 00:01:00.0(功能关闭)。
- CDB 级别:CDB$ROOT 的 SNAP_INTERVAL 为 +00000 01:00:00.0(每小时一次),说明自动快照仅在 CDB 级别默认启用。
所以还需要进入PDB 修改interval 为1小时,快照保留30天:
SQL> alter session set container=dave;
SQL> execute exec DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(interval => 60, retention => 30*24*60 );
SQL> select dbid,con_id,SNAP_INTERVAL,RETENTION from cdb_hist_wr_control;
DBID CON_ID SNAP_INTERVAL RETENTION
---------- ---------- ---------------------------------------- ----------------------------------------
1793280612 3 +00000 01:00:00.0 +00008 00:00:00.0
因为AWR的数据是存储在SYSAUX 表空间的,需要监控SYSAUX表空间使用率,避免因AWR数据过多导致空间不足。
3 生成AWR 报告
在CDB 和 PDB 级别都可以生成。
3.1 CDB 级别
CDB 级别和11g 中一样,直接执行:
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL>@$ORACLE_HOME/rdbms/admin/awrrpt.sql
这个过程和11g的一样,没有区别。
3.2 PDB 级别
PDB级别,需要先切换到PDB在执行:
SQL> alter session set container=dave;
Session altered.
脚本模式选择:执行awrrpt.sql 时需选择AWR_PDB模式,并指定PDB的快照范围。
SQL> @$ORACLE_HOME/rdbms/admin/awrrpt.sql
Specify the Report Type
~~~~~~~~~~~~~~~~~~~~~~~
AWR reports can be generated in the following formats. Please enter the
name of the format at the prompt. Default value is 'html'.
'html' HTML format (default)
'text' Text format
'active-html' Includes Performance Hub active report
Enter value for report_type:
Type Specified: html
Specify the location of AWR Data
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
AWR_ROOT - Use AWR data from root (default)
AWR_PDB - Use AWR data from PDB
Enter value for awr_location: AWR_PDB -- 选择类型
Location of AWR Data Specified:
AWR_PDB
……
注意:
在19c 的PDB AWR 中还有一个PDB AWR生成缓慢的bug,如下:
PDB AWR Report Generation Slow Or Not Happening (Doc ID 3080349.1)
这个bug在19.26 版本还存在,可以使用awrrpti.sql 脚本代替,该脚本生成 Oracle RAC 环境中指定数据库实例的 AWR 报告.
版权声明:本文为博主原创文章,未经博主允许不得转载。