自Oracle 12.2始,Active Dataguard也可以支持AWR功能了
自Oracle 12.2始,Active Dataguard也开始支持AWR功能了
在之前的版本里,Active Dataguard不支持AWR report。只能安装standby statspack来监控ADG数据库的性能,而且statspack不支持自动收集;需要手工收集statspack快照,或者自己定义脚本/Job来收集statspack的快照。
从Oracle 12.2开始,通过dblink以及RMF(Remote Management Framework,远程管理架构)技术,ADG也开始支持AWR功能了。
就像上面的示意图所示,主库通过dblink连接到ADG数据库并发起收集AWR快照的动作,之后ADG数据库把AWR快照通过dblink发送到主库存储。主库和ADG库在这里组成一个RMF拓扑结构,ADG库是拓扑结构中的source,而主库则是拓扑结构中的destination。存储在主库中的ADG库的AWR快照被称为remote snapshot。
这是RMF结构的最简单的方式。实际上RMF拓扑可以更复杂;比如存储remote snapshot的destination可以不是主库,而是不相关的另外一个数据库;比如可以有多个source;比如除了destination库之外还可以有candidate destination库,candidate destination库是一个source类型的数据库,但可以在destination库宕掉后替代destination库。
在配置好整个环境后,ADG库就会和主库一样,定期自动生成AWR snapshot并存储到主库中(收集snapshot的指令实际上是从主库发出的)。当然也可以在主库调用DBMS_WORKLOAD_REPOSITORY.CREATE_REMOTE_SNAPSHOT API手工收集。需要生成ADG的AWR report时,在主库上执行@$ORACLE_HOME/rdbms/admin/awrrpti.sql并指定ADG的dbid即可。
不过当Dataguard环境中各个数据库的角色发生改变时(比如发生了switchover),RMF拓扑也需要额外的配置才能让AWR在ADG库上继续工作。
下面我们大概讲一下在ADG环境中部署AWR的过程:
假设我们有两个数据库,R12201是主库,而DG1是对应的ADG库。Dataguard的配置已经完成并且可以正常工作。
1. 在主库上配置sys$umf用户。因为RMF功能需要使用sys$umf用户,而这个用户默认是被锁住的,所以需要先解锁这个用户并且设置密码:
SQL> alter user sys$umf account unlock identified by oracle;
2. 创建两个dblink,一个是从主库到ADG库(R12201_TO_DG1),另一个是从ADG库到主库(DG1_TO_R12201)。但因为ADG库是只读的,所以创建dblink的操作都需要在主库运行:
SQL> create database link R12201_TO_DG1 connect to sys$umf identified by oracle using 'dg1';
SQL> create database link DG1_TO_R12201 connect to sys$umf identified by oracle using 'r12201';
3. 等待一段时间,直到前两个步骤的改动都已经同步到ADG库上。
4. 在主库上使用DBMS_UMF配置节点名:
SQL> exec dbms_umf.configure_node('R12201');
5. 在ADG库上使用DBMS_UMF配置节点名:
SQL> exec dbms_umf.configure_node('DG1', 'DG1_TO_R12201');
6. 在主库上配置RMF拓扑TOPOLOGY_ADG并且把ADG库注册到RMF拓扑中:
SQL> exec dbms_umf.create_topology('TOPOLOGY_ADG');
SQL> exec dbms_umf.register_node('TOPOLOGY_ADG', 'DG1', 'R12201_TO_DG1', 'DG1_TO_R12201','TRUE','FALSE');
7. 在主库上执行下面的操作把拓扑的ADG库DG1的AWR service开启:
SQL> exec DBMS_WORKLOAD_REPOSITORY.register_remote_database(node_name=>'DG1');
8. 配置ADG的AWR功能就做完了,可以检查相关视图来验证这个拓扑配置:
col topology_name for a20
col node_name for a20
SQL> select * from DBA_UMF_TOPOLOGY;
TOPOLOGY_NAME TARGET_ID TOPOLOGY_VERSION TOPOLOGY
-------------------- ---------- ---------------- --------
TOPOLOGY_ADG 3211929203 4 ACTIVE
SQL> select * from dba_umf_registration;
TOPOLOGY_NAME NODE_NAME NODE_ID NODE_TYPE AS_SO AS_CA STATE
-------------------- -------------------- ---------- ---------- ----- ----- --------------------
TOPOLOGY_ADG R12201 3211929203 0 FALSE FALSE OK
TOPOLOGY_ADG DG1 3472153111 0 TRUE FALSE OK
SQL> select * from DBA_UMF_LINK;
TOPOLOGY_NAME FROM_NODE_ID TO_NODE_ID LINK_NAME
-------------------- ------------ ------------------------------------------------------------------------------------
TOPOLOGY_ADG 3211929203 3472153111 R12201_TO_DG1
TOPOLOGY_ADG 3472153111 3211929203 DG1_TO_R12201
SQL> select * from DBA_UMF_SERVICE;
TOPOLOGY_NAME NODE_ID SERVICE
-------------------- ---------- -------
TOPOLOGY_ADG 3472153111 AWR
9. 这时候每当默认生成AWR snapshot时,主库与ADG库会同时生成。如果要手工生成ADG的AWR快照,可以执行下面的命令(参数值为ADG库的node_id)
SQL> exec DBMS_WORKLOAD_REPOSITORY.CREATE_REMOTE_SNAPSHOT(3472153111);
10. 如果要生成ADG库的AWR report,可以执行下面的操作:
SQL> @?/rdbms/admin/awrrpti.sql
Instances in this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DB Id Inst Num DB Name Instance Host
------------ ---------- --------- ---------- ------
3472153111 1 R12201 DG1 ol65
* 1154541834 1 R12201 R12201 ol65
Enter value for dbid:
Enter value for dbid: 3472153111 <<<此处需要指定DG1的dbid
下面是一个ADG库的AWR report的例子,可以看到数据库的Role为PHYSICAL STANDBY。
结语:Oracle 12.2在Active Dataguard上引入AWR功能,可以让Active dataguard的数据库性能诊断更加轻松可控。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25462274/viewspace-2141799/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/25462274/viewspace-2141799/