合 Oracle DG环境的日常巡检
- 1.1、主库环境检查
- 1.1.1、主库实例启动状态检查
- 1.1.2、主库启动模式检查
- 1.1.3、主库DG环境的保护模式检查
- 1.1.4、主库用于控制日志同步的参数检查
- 1.1.5、主库查看是否开启强制日志功能
- 1.1.6、主库上查看设置的归档日志路径是否可用
- 1.1.7、主库上查询归档日志的应用情况
- 1.1.8、主库上查看DG环境进程的状态
- 1.1.9、主库上查看DG的状态信息
- 1.1.10、主库SWITCH OVER角色和状态的检查
- 1.2、备库环境检查
- 1.2.1、备库实例的启动状态检查
- 1.2.2、备库启动模式检查
- 1.2.3、备库DG环境的保护模式检查
- 1.2.4、备库用于控制日志同步的参数检查
- 1.2.5、备库上查看同步过来的归档日志的应用情况
- 1.2.6、备库上查看归档日志有没有裂缝(同操作2.5部分类似)
- 1.2.7、备库上查看DG环境特有进程的状态
- 1.2.8、备库上查看DG环境的状态信息
- 1.2.9、备库SWITCH OVER角色和状态的检查
- 2.1、DG环境的关闭
- 2.1.1、检查DG环境主备库的日志使用情况
- 2.1.2、停主库的监听程序
- 2.1.3、停备库的监听程序
- 2.1.4、关闭主数据库
- 2.1.5、查看备库的开启模式
- 2.1.6、关闭备数据库的归档应用程序
- 2.1.7、关闭备数据库
- 2.2、DG环境的启动
- 2.2.1、启动DG环境的主库
- 2.2.2、启动主库的监听程序
- 2.2.3、启动DG环境的备库到mount或open状态
- 2.2.4、启动备库的监听程序
- 2.2.5、主库切换归档日志
- 2.2.6、查看备库是否有新应用过来的日志
- 2.2.7、备库上开启归档日志应用进程
- 2.2.8、主库与备库验证当前redo log
- 3.1、SWITCHOVER切换的特点
- 3.2、SWITCHOVER切换的注意事项
- 3.3、SWITCHOVER的切换操作流程
- 3.3.1、主库与备库运行状态确认
- 3.3.2、查看switchover之前主库的角色和状态
- 3.3.3、查看switchover之前备库的角色和状态
- 3.3.4、将主库切换成备库
- 3.3.5、将备库启动到mount状态
- 3.3.6、主库启动到mount状态
- 3.3.7、备库切换成主库
- 3.3.8、检查切换后主库与备库的日志编号
1、DG环境的日常巡检
1.1、主库环境检查
1.1.1、主库实例启动状态检查
操作命令:
SQL> select instance_name,status from v$instance;
操作结果:
INSTANCE_NAMESTATUS
---------------------------------------------------
cs02OPEN
操作说明:如果主库在对外提供服务,那其实例状态应一定是OPEN的。
1.1.2、主库启动模式检查
操作命令:
SQL> select name,open_mode from v$database;
操作结果:
NAMEOPEN_MODE
CS02READ WRITE
操作说明:如果主库在对外提供服务,那其数据库状态应一定是READ WRITE的。
1.1.3、主库DG环境的保护模式检查
操作位置:主库
操作命令:
SQL> select database_role, protection_mode, protection_level from v$database;
操作结果:
DATABASE_ROLE PROTECTION_MODE PROTECTION_LEVEL
PRIMARY MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE
1.1.4、主库用于控制日志同步的参数检查
操作命令:
SQL> show parameter log_archive_dest_2
操作结果:
NAMETYPEVALUE
log_archive_dest_2stringservice=cs01 valid_for=(online_logfiles,primary_role) db_unique_name=cs01
操作说明:
通过该参数设置的网络服务名,主库能够找到该DG环境当中的备库,通过将主库的归档日志同步到备库;
查询结果并没有看到lgwr/arch、sync/async、affirm/noaffirm的参数设置,说明当前主库没有对这三个参数进行设置,当前使用的是默认设置,即:arch、async、noaffirm的设置。
1.1.5、主库查看是否开启强制日志功能
操作命令:
SQL> select name,force_logging from v$database;
操作结果:
NAMEFOR
CS02YES
操作说明:
DG环境下主库要求必须开启强制日志功能,如果发现状态是NO,需要手动执行下面的命令开启该功能。
SQL> alter database force logging;
1.1.6、主库上查看设置的归档日志路径是否可用
操作命令:
SQL> col dest_name for a30
SQL> col error for a30
SQL> select dest_name,status,error from v$archive_dest;
操作结果:
DEST_NAMESTATUS ERROR
LOG_ARCHIVE_DEST_1VALID
LOG_ARCHIVE_DEST_2VALID
LOG_ARCHIVE_DEST_3INACTIVE
操作说明:
该视图用户查看本地和远程的归档日志路径是否可用,如果远程的归档日志路径不可用,在ERROR列会有相应报错。
1.1.7、主库上查询归档日志的应用情况
操作命令:
SQL> set pagesize 50;
SQL> col name for a50
SQL> select name,SEQUENCE#,APPLIED from v$archived_log order by sequence#;
操作结果:
NAMESEQUENCE# APPLIED
/u01/app/oracle/arch/1_5_886855721.dbf5 NO
cs015 YES
/u01/app/oracle/arch/1_6_886855721.dbf6 NO
cs016 YES
/u01/app/oracle/arch/1_7_886855721.dbf7 NO
cs017 YES
操作说明:
该视图记录了归档日志的应用情况,由查询结果可以看出,主库上的该视图会同时记录主库和同步到备库的归档日志的应用情况。视图中显示归档到本地路径的归档日志的名字使用的是绝对路径,并且应用状态为NO,而同步到远端备库上的归档日志名字统一都为cs01,并且应用状态显示为YES。这说明同步到备库上的归档日志都已经被应用了。
1.1.8、主库上查看DG环境进程的状态
操作命令:
SQL> select process,status from v$managed_standby;
操作结果:
PROCESS STATUS
ARCH CLOSING
ARCH CLOSING
ARCH CLOSING
ARCH CLOSING
LNS WRITING
操作说明:
ARCH进程:用于主库上复制redo log,从而生成归档日志,当前状态为CLOSING表示该进程目前正在复制
redo log,我们在参数文件中设置了该进程的数量上限是4个。
LNS进程:用于在主库上将主库的归档日志同步到备库上,将归档日志投递给备库上的RFS进程。
1.1.9、主库上查看DG的状态信息
操作命令:
SQL> col message for a100
SQL> select message_num,message from v$dataguard_status;
1.1.10、主库SWITCH OVER角色和状态的检查
操作命令:
SQL> select name,database_role,switchover_status from v$database;
操作结果:
NAMEDATABASE_ROLE SWITCHOVER_STATUS
CS02PRIMARY TO STANDBY
操作说明:
如果主库的切换状态显示为SESSION ACTIVED状态也是正常的。
1.2、备库环境检查
1.2.1、备库实例的启动状态检查
操作命令:
SQL> select instance_name,status from v$instance;
操作结果:
INSTANCE_NAMESTATUS
---------------------------------------------------
cs01MOUNTED
操作说明:
一般备库会被启动到MOUNT状态,不过根据具体需要,在确认备库没的应用归档日志进程没有启动的前提下也可以将其启动到OPEN状态,执行命令:alter database open;
1.2.2、备库启动模式检查
操作命令:
SQL> select name,open_mode from v$database;
操作结果:
NAMEOPEN_MODE
CS01READ ONLY
操作说明:
发现是read only模式,说明备库当前并没有开启归档日志应用进程,这个时候我们可以手动开启该进程,执行下面的命令:
SQL> alter database recover managed standby database disconnect from session;
如果发现当前数据库的打开模式是read only with apply我们也可以手工关闭归档应用程序,执行下面的命令:
SQL> alter database recover managed standby database cancel;
重新查看备库的启动模式,执行下面的命令:
SQL> select name,open_mode from v$database;
操作结果:
NAMEOPEN_MODE
CS01READ ONLY WITH APPLY
1.2.3、备库DG环境的保护模式检查
执行命令:
SQL> select database_role, protection_mode, protection_level from v$database;
SQL> set linesize 160
查询结果:
DATABASE_ROLEPROTECTION_MODEPROTECTION_LEVEL
PHYSICAL STANDBY MAXIMUM PERFORMANCEMAXIMUM PERFORMANCE
1.2.4、备库用于控制日志同步的参数检查
操作命令:
SQL> show parameter log_archive_dest_2
操作结果:
NAMETYPEVALUE
log_archive_dest_2stringservice=cs02 valid_for=(online_logfiles,primary_role) db_unique_name=cs02
1.2.5、备库上查看同步过来的归档日志的应用情况
操作命令:
SQL> set pagesize 50
SQL> col name for a50
SQL> select name,SEQUENCE#,APPLIED from v$archived_log order by sequence#;
操作结果:
NAMESEQUENCE# APPLIED
/u01/app/oracle/arch/1_5_886855721.dbf5 YES
/u01/app/oracle/arch/1_6_886855721.dbf6 YES
/u01/app/oracle/arch/1_7_886855721.dbf7 YES
操作说明:
如果发现备库归档日志的编号不连续,则需要到主库去对照主库的归档日志编号,找到主库上已经归档但却没有同步到备库上的那些归档日志手动拷贝过来,并将其注册到备库内,注册归档日志的命令如下所示:
SQL> alter database register physical logfile '/opt/arch/归档文件名’
然后再重新开启备库的应用归档日志进程,执行下面的命令即可:
SQL> alter database recover automatic standby database;
1.2.6、备库上查看归档日志有没有裂缝(同操作2.5部分类似)
操作命令:
SQL> select * from v$archive_gap;
操作说明:
如果DG环境日志同步正常,则不会查到任何记录,如果查出结果,则说明目前的DG环境归档日志有裂缝,需要执行2.5部分的操作去解决。
1.2.7、备库上查看DG环境特有进程的状态
操作命令: