从oracle 12.2开始可以生成备库的awr报告,前提是先配置一下。
基本原理是:由于备库不能写入,因此awr快照信息需要存放在主库(或其他可写的库),
通过数据库链可以将快照信息从备库抓过来,然后还是在主库上执行awrrpti.sql 来生成备库的awr报告。
为实现上述功能,oracle设计了一个远程管理框架 (RMF) 的东西,可以简单理解为一个工作组,组长采集各组员的状态,然后对外发布报告。底层实现是通过用户sys$umf、数据库链、dbms包、视图来完成的。
主库的db_unique_name: apex
备库的db_unique_name: apexstd
主备库都设置了网络别名:tns_std、tns_pri
主库:
alter user sys$umf identified by sysumf account unlock;
create database link dbl_pri_to_std CONNECT TO sys$umf IDENTIFIED BY sysumf using 'tns_std';
create database link dbl_std_to_pri CONNECT TO sys$umf IDENTIFIED BY sysumf using 'tns_pri';
select owner,db_link,username from dba_db_links;
exec dbms_umf.configure_node ('apex');
备库:
exec dbms_umf.configure_node ('apexstd','dbl_std_to_pri');
主库:
exec DBMS_UMF.create_topology('Topology_1');
exec DBMS_UMF.register_node('Topology_1', 'apexstd', 'dbl_pri_to_std', 'dbl_std_to_pri', 'FALSE', 'FALSE');
exec DBMS_WORKLOAD_REPOSITORY.register_remote_database(node_name=>'apexstd');
exec dbms_workload_repository.create_remote_snapshot('apexstd');
至少执行2次
然后还是在主库上生成备库的awr,操作如下:
生成的报告:
内容基本无差别,除了多出一项 Active Data Guard (ADG) Report
参考:
如何在 Active Data Guard 备库中生成AWR (Doc ID 2469650.1