ITPub博客

首页 > 数据库 > 国内数据库 > 如何主库进行闪回,而备库不需要重新搭建?

如何主库进行闪回,而备库不需要重新搭建?

原创 国内数据库 作者:ly1688 时间:2025-08-17 03:34:45 0 删除 编辑

一、容灾状态检查

1、检查空间是否充足

1
2
3
4
5
#查看本地空闲磁盘空间
df -h
#查看ASM磁盘空间
su - grid
asmcmd lsdg

若磁盘组冗余度为Normal剩余空间需除以2,High 则除以3.

2、容灾同步状态检查

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
--主库执行切换日志命令,观察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、断开容灾

1
2
3
4
5
确认日志容灾已应用且无延迟后,关闭日志传输。
--主库执行,找到容灾对应的dest_id
show parameter  log_archive_dest
--根据上一步的dest_id 关闭日志传输
alter  system  set  log_archive_dest_state_xx=defer; ## xx根据实际dest_id修改

二、闪回点创建

2.1 检查闪回状态(主库)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
若需要开启闪回,目录与大小根据情况配置。注意!开启闪回需要重启数据库
--查看是否开启闪回
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 备库创建闪回区大小

1
2
alter  system  set  db_recovery_file_size = 4096m;   --根据实际空间情况调整
alter  system  set  db_recovery_file_dest= '/u01/flash_standby' ;

2.2.2 停止mrp进程

1
alter  database  recover managed standby  database  cancel;

2.2.3 切换备库状态

1
2
3
4
5
shutdown immediate
startup mount
alter  database  convert  to  snapshot standby;
确认状态
select  open_mode,datbase_role  from  v$ database ;

2.2 创建闪回点(主库)

1
2
3
4
5
6
--创建闪回点
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 闪回至闪回点(主库)

1
2
3
4
5
--启动数据库至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 备库重新关闭打开即可恢复应用

 

1
2
3
4
5
6
7
8
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;


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70041510/viewspace-3093627/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2024-10-05

  • 博文量
    12
  • 访问量
    1846