这里简单记录一下对DATAGUARD的监控与管理,具体内容参考官方文档。
1. 以下命令用于在屋里备用数据库上启用实时应用功能。在备用站点上发出命令:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;
如果此时未定义SRL,将收到ORA-38500。
2. 确认归档参数可以使用下列查询:
SQL> show parameter archive_dest;
3. 要确认是否启用了实时应用,可以在主库使用下面的查询:
SQL> select recovery_mode,dest_id from v$archive_dest_status where dest_id=2;
RECOVERY_MODE DEST_ID
----------------------- ----------
MANAGED REAL TIME APPLY 2
4. 要查看保护模式可以在主库中使用下面的查询:
SQL> select type,protection_mode from v$archive_dest_status where dest_id=2;
TYPE PROTECTION_MODE
-------------- --------------------
PHYSICAL MAXIMUM PERFORMANCE
5. 要查看数据库保护模式及角色(主备)可以执行以下查询:
SQL> select protection_mode, protection_level, database_role from v$database;
PROTECTION_MODE PROTECTION_LEVEL DATABASE_ROLE
-------------------- -------------------- ----------------
MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE PRIMARY
这里NONE表示有问题
6. 归档状态及问题查询
SQL> select status,error,synchronized,gap_status
2 from v$archive_dest_status where dest_id=2;
STATUS ERROR SYN GAP_STATUS
--------- ---------------------------------------- --- ------------------------
ERROR ORA-12541: TNS:no listener NO RESOLVABLE GAP
7. 监控物理备用恢复的视图
V$MANAGED_STANDBY:该视图给定主库或物理备用数据库后台进程的当前状态信息。
SQL> select process,client_process,thread#,sequence#,status from v$managed_standby;
PROCESS CLIENT_P THREAD# SEQUENCE# STATUS
--------- -------- ---------- ---------- ------------
ARCH ARCH 1 112 CLOSING
ARCH ARCH 0 0 CONNECTED
ARCH ARCH 1 111 CLOSING
ARCH ARCH 2 78 CLOSING
RFS ARCH 0 0 IDLE
RFS UNKNOWN 0 0 IDLE
RFS ARCH 0 0 IDLE
RFS UNKNOWN 0 0 IDLE
MRP0 N/A 2 79 APPLYING_LOG
RFS LGWR 1 113 IDLE
RFS LGWR 2 79 IDLE
11 rows selected.
注意MRP0的状态为APPLYING_LOG,表示主备同步。
V$DATAGUARD_STATS:该视图显示有关重做数据的不同信息。
在备库上执行查询:
SQL> select name,value from v$dataguard_stats;
NAME VALUE
------------------------- ----------------------------------------
transport lag +00 00:00:00
apply lag +00 00:00:00
apply finish time +00 00:00:00.000
estimated startup time 16
V$RECOVERY_PROGRESS:使用该视图,可监控恢复操作所需的时间。
8. 查询日志在备库应用情况
SQL> select SEQUENCE#,registrar,applied from v$archived_log;
9. 查询可切换状态
在主库或备库执行:
SQL> select switchover_status from v$database;
10. 问题检测
为了在告警日志中看到报警信息,我们可能需要修改如下参数:
LOG_ARCHIVE_TRACE = 8192
该参数合法的值如下:
0: Disable archivelog tracing (this is the default)
1: Track archival of redo log file
2: Track archival status of each archivelog destination
4: Track archival operational phase
8: Track archivelog destination activity
16: Track detailed archivelog destination activity
32: Track archivelog destination parameter modifications
64: Track ARCn process state activity
128: Track FAL (fetch archived log) server related activities
256: Track RFS Logical Client
512: Track LGWR redo shipping network activity
1024: Track RFS Physical Client
2048: Track RFS/ARCn Ping Heartbeat
4096: Track Real Time Apply
8192: Track Redo Apply (Media Recovery or Physical Standby)
该参数默认为0。
另外,建议的日志切换频率为30分钟,且不应小于15分钟。
可以在视图V$LOG_HISTORY中查询相关信息。
检测归档日志间隔检查:
多数情况下间隔不需要手动处理,但是有时候可能需要手动干预。
SQL> SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;
11. 调整Redo Apply速率和重做传输速度
a. 建议增加主数据库ORL以及备用数据库SRL的大小,使日志切换至少有15分钟的间隔时间。
b. 在托管恢复期间使用并行选项。
c. 实现实时应用。
d. 确保DISK_ASYNCH_IO=TRUE(默认情况),如果异步I/O不可用,则使用DB_WR_IO_SLAVES来提高同步I/O下的数据块写效率。
e. 数据库恢复最重要的是I/O带宽,确保I/O带宽,可以通过11g以后版本提供的Calibrate_IO实用程序(MetaLink Note 727062.11)测量服务器的总I/O吞吐量。
f. 介质恢复极大地依赖于Oracle缓冲区高速缓存,可以减少备用数据库SGA组件将这部分内服你移动并重新分配给DB_CACHE_SIZE。