一、容灾状态检查
1、检查空间是否充足
#查看本地空闲磁盘空间 df -h #查看ASM磁盘空间 su - grid asmcmd lsdg
若磁盘组冗余度为Normal剩余空间需除以2,High 则除以3.
2、容灾同步状态检查
--主库执行切换日志命令,观察seq是否变化且无应用延迟 alter system archive log current; --主备库均可执行,SEQ需一致 SELECT AL.THRD "Thread", ALMAX "Last Seq Received", LHMAX "Last Seq Applied" FROM (SELECT THREAD# THRD, MAX(SEQUENCE#) ALMAX FROM V$ARCHIVED_LOG WHERE RESETLOGS_CHANGE# = (SELECT RESETLOGS_CHANGE# FROM V$DATABASE) GROUP BY THREAD#) AL, (SELECT THREAD# THRD, MAX(SEQUENCE#) LHMAX FROM V$LOG_HISTORY WHERE RESETLOGS_CHANGE# = (SELECT RESETLOGS_CHANGE# FROM V$DATABASE) GROUP BY THREAD#) LH WHERE AL.THRD = LH.THRD; --备库执行,查看是否有同步延迟 select value from v$dataguard_stats where name='apply lag';
3、断开容灾
确认日志容灾已应用且无延迟后,关闭日志传输。 --主库执行,找到容灾对应的dest_id show parameter log_archive_dest --根据上一步的dest_id 关闭日志传输 alter system set log_archive_dest_state_xx=defer; ## xx根据实际dest_id修改
二、闪回点创建
2.1 检查闪回状态(主库)
若需要开启闪回,目录与大小根据情况配置。注意!开启闪回需要重启数据库 --查看是否开启闪回 select flashback_on from v$database; --未开启,则开启闪回 alter system set db_recovery_file_dest='/archlog/fast_recovery_area'; 闪回路径放在ASM盘的时候,路径只能写第一层,比如+DATA,不然会报错无法启动实例。 alter system set db_recovery_file_dest_size=200G scope=both; ###开启闪回步骤,需要关闭数据库。 --双节点关闭 shutdown immediate; --单节点mount startup mount; --开启闪回 alter database flashback on; select flashback_on from v$database;
2.2 备库操作
2.2.1 备库创建闪回区大小
alter system set db_recovery_file_size = 4096m; --根据实际空间情况调整 alter system set db_recovery_file_dest='/u01/flash_standby';
2.2.2 停止mrp进程
alter database recover managed standby database cancel;
2.2.3 切换备库状态
shutdown immediate startup mount alter database convert to snapshot standby; 确认状态 select open_mode,datbase_role from v$database;
2.2 创建闪回点(主库)
--创建闪回点 create restore point upgrade_point guarantee flashback database; --查看创建的闪回点 SELECT NAME,SCN,TIME,DATABASE_INCARNATION#,GUARANTEE_FLASHBACK_DATABASE,STORAGE_SIZE FROM V$RESTORE_POINT WHERE GUARANTEE_FLASHBACK_DATABASE='YES';
2.3 闪回至闪回点(主库)
--启动数据库至mount状态下执行 flashback database to restore point upgrade_point; alter database open resetlogs; alter system set log_archive_dest_state_2 = enable; select dest_name,status,error from v$archive_dest where dest_id=2;
2.4 备库重新关闭打开即可恢复应用
SQL > shutdown immediate SQL> startup mount SQL> alter database convert to physical standby; SQL> shutdown immediate; SQL> startup nomount SQl> alter database mount standby database; SQL> alter database open; SQL> alter database recover managed standby database disconnect from session;
