您在这里:首页 > 学员专区 > 技术文章
Oracle视频
Oracle
CUUG课程

Oracle DG 监控主库和物理备库

 

1、监控途径:概括起来主要通过两个方面来进行:

2、监控恢复进度

(1)查看进程的活动状态

V$MANAGED_STANDBY视图专用于显示物理Standby数据库相关进程的当前状态,该视图中的列也很有特点,查看进程状态时,通常我们会关注PROCESS、CLIENT_PROCESS、SEQUENC#和STATUS几列,例如:

SQL> SELECT PROCESS,CLIENT_PROCESS,SEQUENCE#, STATUS FROM V$MANAGED_STANDBY;

PROCESS   CLIENT_P  SEQUENCE# STATUS

--------- -------- ---------- ------------

ARCH      ARCH        78  CLOSING

ARCH      ARCH        79  CLOSING

MRP0      N/A          80  WAIT_FOR_LOG

RFS       LGWR        80  IDLE

RFS       ARCH         0  IDLE

RFS       N/A            0  IDLE

相关说明:

PROCESS:进程名称,如ARCH、RFS、MRP0等。

CLIENT_P:对应的Primary数据库中的进程,如ARCH、LGWR等。

SEQUENCE#:归档序号。

STATUS:进程的当前状态,值较多,常见的有:

1)ALLOCATED:正准备连接Primary数据库。

2)ATTACHED:正在连接Primary数据库。

3)CONNECTED:已连接至Primary数据库。

4)IDLE:空闲中。

5)RECEIVING:归档文件接收中。

6)OPENING:归档文件处理中。

7)CLOSING:归档文件处理完,收尾中。

8)WRITING:REDO数据库写向归档文件中。

9)WAIT_FOR_LOG:等待新的REDO数据中。

10)WAIT_FOR_GAP:归档有中断,正等待中断的那部分REDO数据。

11)APPLYING_LOG:应用REDO数据中。


(2)检查REDO应用进度

V$ARCHIVE_DEST_STATUS视图显示归档文件路径配置信息及REDO的应用情况等,例如:

SQL> SELECT DEST_NAME,ARCHIVED_THREAD#,ARCHIVED_SEQ#,APPLIED_THREAD#,APPLIED_SEQ#,

DB_UNIQUE_NAME FROM V$ARCHIVE_DEST_STATUS WHERE STATUS='VALID';

DEST_NAME ARCHIVED_THREAD# ARCHIVED_SEQ# APPLIED_THREAD# APPLIED_SEQ# DB_UNIQUE_NAME

-------------------- ---------------- ------------- --------------- ------------ ------------------------------

LOG_ARCHIVE_DEST_1         1          79              0            0      NONE

STANDBY_ARCHIVE_DEST      1          78              1           78     NONE


(3)检查归档文件路径和创建信息

物理Standby数据库端可以通过查询V$ARCHIVED_LOG视图,获取归档文件的一些附加信息,如文件创建时间、创建进程、归档序号、是否被应用等,例如:

SQL>  SELECT NAME,CREATOR,SEQUENCE#,APPLIED,COMPLETION_TIME FROM V$ARCHIVED_LOG;

NAME                                               CREATOR  SEQUENCE# APP COMPLETIO

-------------------------------------------------- ------- ---------- --- ---------

/u01/archive/1_1_717413573.dbf                     ARCH             1 YES 30-APR-10

/u01/archive/1_3_717413573.dbf                     ARCH             3 YES 30-APR-10

… …

/u01/archive/1_78_717413573.dbf                    ARCH            78 YES 01-MAY-10

/u01/archive/1_79_717413573.dbf                    ARCH            79 YES 02-MAY-10


(4)查询归档历史

物理Standby数据库端通过V$LOG_HISTORY视图,可以查询所有已被应用的归档文件信息(无论该归档文件是否还存在),例如:

SQL> SELECT FIRST_TIME,FIRST_CHANGE#,NEXT_CHANGE#, SEQUENCE# FROM V$LOG_HISTORY;

FIRST_TIM FIRST_CHANGE# NEXT_CHANGE#  SEQUENCE#

--------- ------------- ------------ ----------

27-APR-10        446075       475833          1

27-APR-10        475833       489482          2

… …

30-APR-10        544929       590113         78

01-MAY-10        590113       652357         79

仍然通过该视图,稍稍修改下SQL语句,就可以查询到最后应用的归档文件,例如:

SQL> SELECT THREAD#, MAX(SEQUENCE#) AS "LAST_APPLIED_LOG" FROM V$LOG_HISTORY GROUP BY THREAD#;

THREAD# LAST_APPLIED_LOG

---------- ----------------

1               79

当然也可以通过查询V$ARCHIVED_LOG视图中的APP列获得相同的功能,例如:

SQL> SELECT THREAD#, SEQUENCE#, APPLIED FROM V$ARCHIVED_LOG;

THREAD#  SEQUENCE# APP

---------- ---------- ---

1          1 YES

1          2 YES

1          3 YES


(5)查看物理Standby数据库未接收的日志文件

日志文件的发送是通过LOG_ARHIVE_DEST_N参数来控制,因此我们只需要对比本地生成的归档和远端生成的归档间差异即可。例如:

SQL> SELECT LOCAL.THREAD#, LOCAL.SEQUENCE# FROM (SELECT THREAD#, SEQUENCE# FROM V$ARCHIVED_LOG WHERE DEST_ID=1) LOCAL WHERE LOCAL.SEQUENCE# NOT IN  (SELECT SEQUENCE# FROM V$ARCHIVED_LOG WHERE DEST_ID=2 AND  THREAD# = LOCAL.THREAD#);

THREAD#  SEQUENCE#

---------- ----------

1         76

1         77

1         78

1         79

说明:  DEST_ID=N,N其实就是LOG_ARCHIVE_DEST_N参数中的那个N。


(6)监控日志应用服务

1) 查询当前数据的基本信息(v$database信息):如,查询数据库角色、保护模式、保护级别等:

SQL> SELECT DATABASE_ROLE,DB_UNIQUE_NAME,OPEN_MODE,

PROTECTION_MODE,PROTECTION_LEVEL, SWITCHOVER_STATUS  FROM V$DATABASE;

DATABASE_ROLE    DB_UNIQUE_NAME                 OPEN_MODE  PROTECTION_MODE      PROTECTION_LEVEL     SWITCHOVER_STATUS

---------------- ------------------------------ ---------- -------------------- -------------------- --------------------

PRIMARY          orcl_pd                        READ WRITE MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY SESSIONS ACTIVE

再比如,查询failover后快速启动的信息:

SQL> SELECT FS_FAILOVER_STATUS,FS_FAILOVER_CURRENT_TARGET,  FS_FAILOVER_THRESHOLD,  FS_FAILOVER_OBSERVER_PRESENT FROM V$DATABASE;

FS_FAILOVER_STATUS    FS_FAILOVER_CURRENT_TARGET     FS_FAILOVER_THRESHOLD FS_FAIL

--------------------- ------------------------------ --------------------- -------

DISABLED                                                                 0


2) 查看当前REDO应用和REDO传输服务的活动状态

查询物理Standby数据库当前REDO应用和REDO传输服务的状态非V$MANAGED_STANDBY视图莫属,例如:

SQL> SELECT PROCESS, STATUS, THREAD#, SEQUENCE#, BLOCK#, BLOCKS FROM V$MANAGED_STANDBY;

PROCESS   STATUS          THREAD#  SEQUENCE#     BLOCK#     BLOCKS

--------- ------------ ---------- ---------- ---------- ----------

ARCH      CLOSING               1         78      98305       1752

ARCH      CLOSING               1         79      98305       1752

MRP0      WAIT_FOR_LOG          1         80          0          0

RFS       IDLE                  1         80      75297          3

RFS       IDLE                  0          0          0          0

RFS       IDLE                  0          0          0          0


3) 检查应用模式(是否启用了实时应用)

物理Standby数据库查询V$ARCHIVE_DEST_STATUS视图,如果打开了实时应用,则RECOVERY_MODE列会显示为:MANAGED REAL TIME APPLY,例如:

SQL> SELECT RECOVERY_MODE FROM V$ARCHIVE_DEST_STATUS WHERE DEST_ID=2;

RECOVERY_MODE

-----------------------

MANAGED


4) Data Guard事件(V$DATAGUARD_STATUS)

该视图显示那些被自动触发写入Alert.log或服务器Trace文件的事件。通常是在你不便访问到服务器查询Alert.log时,可以临时访问本视图查看一些与Data Guard相关的信息,例如:

SQL> SELECT MESSAGE FROM V$DATAGUARD_STATUS;

MESSAGE

---------------------------------------------------------------------------------------------------

ARC0: Archival started

ARC1: Archival started

ARC0: Becoming the 'no FAL' ARCH

ARC0: Becoming the 'no SRL' ARCH

ARC1: Becoming the heartbeat ARCH

Attempt to start background Managed Standby Recovery process

MRP0: Background Managed Standby Recovery process started

Managed Standby Recovery not using Real Time Apply

Clearing online redo logfile 1 /u01/app/oracle/oradata/orcl/redo01.log

Clearing online redo logfile 1 complete

Media Recovery Waiting for thread 1 sequence 74


(7)调整物理Standby端REDO数据应用频率

调整应用频率,说白了就是调整I/O读取能力,所以通常我们从以下几个方面着手:

1)设置RECOVER并行度

在介质恢复或REDO应用期间,都需要读取重做日志文件,默认都是串行恢复,我们可以在执行RECOVER的时候加上PARALLEL子句来指定并行度,提高读取和应用的性能,例如:

SQL> RECOVER STANDBY DATABASE PARALLEL 2 ;

提 示: 建议PARALLEL的值为#CPUs×2。

注意: 该设置仅对当前环境有效,Oracle数据库重启之后,默认情况下并行度会恢复至初始值,如果DBA觉着每次执行很麻烦,要通过初始化参数PARALLEL_MAX_SERVERS来设置默认的并行度。

2) 加快REDO应用频繁

设置初始化参数DB_BLOCK_CHECKING=FALSE能够提高2倍左右的应用效率,该参数设置是否验证数据块的有效性,对于物理Standby数据库,禁止验证基本上还是可以接受的(Primary数据库强烈建议将该参数值设置为TRUE,当然默认就是TRUE),该参数是一个动态参数,修改后直接生效,不需要重启数据库。

3) 设置PARALLEL_EXECUTION_MESSAGE_SIZE参数值

如果打开了并行恢复,适当提高初始化参数PARALLEL_EXECUTION_MESSAGE_ SIZE的参数值,比如4096也能提高大概20%左右的性能,不过需要注意,增大这个参数的参数值可能会占用更多内存。

4) 优化磁盘I/O

在恢复期间最大的瓶颈就是I/O读写,要缓解这个瓶颈,使用本地异步I/O并设置初始化参数DISK_ASYNCH_IO=TRUE会有所帮助。DISK_ASYNCH_IO参数控制到数据文件的磁盘I/O是否异步。某些情况下异步I/O 能降低数据库文件并行读取,提高整个恢复时间。


(文章来自网络,如有侵权请来信告知,本站将在第一时间删除。)

相关文章 [上一篇] Oracle DG 管理影响物理Standby的主库事件
010-88589926(88587026)
CUUG热门培训课程
Oracle DBA就业培训
CUUG名师
网络课程
技术沙龙
最新动态

总机:(010)-88589926,88589826,88587026 QQ讨论群:243729577 182441349 邮箱:cuug_bj@cuug.com
通信地址:北京市海淀区紫竹院路98号北京化工大学科技园609室(CUUG)邮政编码:100089 
中国UNIX用户协会 Copyright 2010  ALL Rights Reserved 北京神脑资讯技术有限公司
京ICP备11008061号  京公网安备110108006275号