一 问题描述
在PDB里生成AWR报告报错:
SQL> @?/rdbms/admin/awrrpt.sql
ERROR at line 1:
ORA-20200: Database/Instance 1552533615/1 does not exist in
AWR_PDB_DATABASE_INSTANCE
ORA-06512: at line 27
二 解决办法
2.1 连接CDB, 修改参数
ALTER SYSTEM SET awr_pdb_autoflush_enabled= TRUE SID='*' SCOPE=BOTH;
ALTER SYSTEM SET awr_snapshot_time_offset=1000000 SID='*' SCOPE=BOTH;
/*
awr_pdb_autoflush_enabled默认值为false,awr_snapshot_time_offset默认值为0
在CDB里修改,默认会修改所有PDB
*/
2.2 设置pdb快照生成间隔
请注意,要启用自动PDB级快照,必须设置快照间隔,因为PDB级默认值为40150天!因此,如果不进行更改,数据库引擎将永远不会采集快照。
#进pdb,查看快照间隔
select * from cdb_hist_wr_control;
DBID SNAP_INTERVAL RETENTION TOPNSQL CON_ID
---------- -------------------- -------------------- -------------------- ----------
1552533615 +40150 00:01:00.0 +00008 00:00:00.0 DEFAULT
#修改快照间隔为1小时生成一次
execute dbms_workload_repository.modify_snapshot_settings(interval => 60);
#再次查看
SQL> select * from cdb_hist_wr_control;
DBID SNAP_INTERVAL RETENTION TOPNSQL CON_ID
---------- -------------------- -------------------- -------------------- ----------
1552533615 +00000 01:00:00.0 +00008 00:00:00.0 DEFAULT 3
2.3 进pdb,手动创建至少两个快照,验证是否能正常生成AWR报告
alter session set container=ORCLPDB1;
exec dbms_workload_repository.create_snapshot();
exec dbms_workload_repository.create_snapshot();
#查询生成的快照
SQL> select snap_id,dbid,con_id from awr_pdb_snapshot;
SNAP_ID DBID CON_ID
---------- ---------- ----------
1 1552533615 3
2 1552533615 3
#再生成AWR报告,就不报错了:
@?/rdbms/admin/awrrpt.sql
在Location of AWR Data Specified:处选择AWR_PDB.
/*
在CDB 架构下,尤其是是多个PDB的情况下,要注意这一点。 如果CDB 环境有多个PDB,那么如果收集的是整个CDB 的AWR报告,那么该报告也是包含所有PDB的数据,无法准确分析是哪个PDB 导致的性能问题。 所以对于多PDB的情况下,我们建议是按PDB 来收集AWR报告。
*/
--本篇文章转自: