主库磁盘问题,导致主库宕机,因为归档还没有应用,导致备库无法转为主库
先查看一下备库当前的信息:
SQL> select * from v$version; BANNER ---------------------------------------------------------------------Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production PL/SQL Release 11.2.0.3.0 - Production CORE 11.2.0.3.0 Production TNS for Linux: Version 11.2.0.3.0 - Production NLSRTL Version 11.2.0.3.0 - Production
查看当前数据库的状态:
SQL> select open_mode from v$database; OPEN_MODE -------------------- READ ONLY
该启动状态分为NOMOUNT,MOUNT,READ ONLY,READ WRITE四种状态
查看DG主备库的切换状态:
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE; SWITCHOVER_STATUS -------------------- TO STANDBY
DG失效切换状态包括NOT ALLOWED,SESSIONS ACTIVE,TO STANDBY,TO PRIMARY。当主库为TO STANDBY时,表示主库可以进行主备角色的切换。
ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;
如遇到以下错误提示,说明主备间还有活动的会话链接
ORA-01093: ALTER DATABASE CLOSE only permitted with no sessions connected
可以通过以下语句强制关闭活动会话:
ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;
ORA-16139: media recovery required
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH SKIP STANDBY LOGFILE;
主库角色切换为备库后,还有部分参数需要修改。
1、修改获取归档的C/S端,这里的FAL(Fetch Archive Log)
SQL> show parameters fal NAME TYPE VALUE ---------- ----------- -------- fal_client string SID_PRI fal_server string SID_DG
2、修改主库log_archive_dest_state_n及log_archive_dest_n。
SQL> show parameters log_archive_dest_state_2 NAME TYPE VALUE ------------------------- ----------- -------log_archive_dest_state_2 string DEFER
SQL> show parameters log_archive_dest_2 NAME TYPE VALUE ------------------ ----------- ------------------log_archive_dest_2 string service=SID_DG
3、修改备库log_archive_dest_state_n及log_archive_dest_n。
SQL> show parameters log_archive_dest_state_2 NAME TYPE VALUE ------------------------- ----------- -------log_archive_dest_state_2 string ENABLE
SQL> show parameters log_archive_dest_2 NAME TYPE VALUE ------------------ ----------- ------------------log_archive_dest_2 string service=SID_PRI
4、查看备库状态 SESSIONS ACTIVE 切换角色为主库
alter database commit to switchover to primary; shutdown immediate startup mount alter database open read write
5、查看备库的文件管理状态
SQL> show parameters standby_file_management NAME TYPE VALUE ----------------------- ----------- ---------standby_file_management string AUTO
6、切换备库进入恢复模式:
alter database recover managed standby database disconnect from session;
7、查看主备归档同步情况:
SQL> select process, status,sequence#,block#,blocks, delay_mins from v$managed_standby; PROCESS STATUS SEQUENCE# BLOCK# BLOCKS DELAY_MINS --------- ------------ ---------- ---------- ---------- ---------- ARCH CONNECTED 0 0 0 0 ARCH CONNECTED 0 0 0 0 ARCH CONNECTED 0 0 0 0 ARCH CONNECTED 0 0 0 0 MRP0 WAIT_FOR_LOG 8048 0 0 0 RFS IDLE 0 0 0 0 RFS IDLE 8048 170025 824 0 RFS IDLE 0 0 0 0
只要备库的MRP(Managed Recovery Process)进程启动,就表示归档正常进行
SQL> select dest_name,status,target,archiver,schedule, valid_type,valid_role,db_unique_name from v$archive_dest where dest_name='LOG_ARCHIVE_DEST_2'; DEST_NAME STATUS TARGET ARCHIVER SCHEDULE VALID_TYPE VALID_ROLE DB_UNIQUE_NAME ------------------------- --------- ------- ---------- -------- --------------- ------------ ------------------------------ LOG_ARCHIVE_DEST_2 VALID STANDBY LGWR ACTIVE ALL_LOGFILES ALL_ROLES NONE