重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 850|回复: 0
打印 上一主题 下一主题

[备份恢复] 手工解决DG备库日志GAP

[复制链接]
跳转到指定楼层
楼主
发表于 2025-5-31 11:03:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
背景:
     手工通过DUPLICATE 方式从主库复制了数据库到新的一个测试库,在复制完后,直接激活新的数据库,发现SYSTEM不一致,于是通过手工从主库拷贝日志文件过来的办法进行补齐差的日志,
但拷贝了其中一个日志,备库不认识,怎么处理,下面是具体步骤:
1.激活备库
SQL> alter database activate  physical  standby database;
alter database activate  physical  standby database
*
ERROR at line 1:
ORA-01152: file 1 was not restored from a sufficiently old backup
ORA-01110: data file 1: '/u01/hisdb/data/system.305.951233557'

备库日志:
Standby crash recovery need archive log for thread 1 sequence 70528 to continue.
Please verify that primary database is transporting redo logs to the standby database.
Wait timeout: thread 1 sequence 70528
Standby Crash Recovery aborted due to error 16016.
Errors in file /u01/app/oracle/diag/rdbms/orclcs/orcl/trace/orcl_ora_19327.trc:
ORA-16016: archived log for thread 1 sequence# 70528 unavailable
Recovery interrupted!
Completed Standby Crash Recovery.
Signalling error 1152 for datafile 1!
ORA-1152 signalled during: alter database activate  physical  standby database...
2025-05-30 07:51:51.129000 +08:00

可以看出 70528 日志找不到,看了一下归档目录,一个归档都没有。

2.从主库拷贝

  [grid@hisdb02 ~]$ asmcmd cp "+ARCHIVE/orcl/archivelog/2025_05_30/thread_1_seq_70528.4189.1202431025" /tmp/1_seq_70528
copying +ARCHIVE/orcl/archivelog/2025_05_30/thread_1_seq_70528.4189.1202431025 -> /tmp/1_seq_70528
  [grid@hisdb02 ~]$ asmcmd cp "+ARCHIVE/orcl/archivelog/2025_05_30/thread_1_seq_70529.7725.1202434259" /tmp/1_seq_70529
copying +ARCHIVE/orcl/archivelog/2025_05_30/thread_1_seq_70529.7725.1202434259 -> /tmp/1_seq_70529
  。。。

3.把日志加到catalog中去  
  RMAN> catalog start with '/u01/hisdb/data/archive';

using target database control file instead of recovery catalog
searching for all files that match the pattern /u01/hisdb/data/archive

List of Files Unknown to the Database
=====================================
File Name: /u01/hisdb/data/archive/1_seq_70528
File Name: /u01/hisdb/data/archive/1_seq_70529

Do you really want to catalog the above files (enter YES or NO)? yes
cataloging files...
cataloging done

List of Cataloged Files
=======================
File Name: /u01/hisdb/data/archive/1_seq_70528
File Name: /u01/hisdb/data/archive/1_seq_70529

4.备库应用日志
  SQL> recover managed standby database disconnect from session;
Media recovery complete.
  发现日志:
   Media Recovery Log /u01/hisdb/data/archive/1_seq_70529
Media Recovery Waiting for thread 2 sequence 65217
FAL[client]: Error fetching gap sequence, no FAL server specified
Completed: ALTER DATABASE RECOVER  managed standby database disconnect from session  
2025-05-30 07:58:29.115000 +08:00
。。。
Media Recovery Log /u01/hisdb/data/archive/2_seq_65218
Media Recovery Waiting for thread 1 sequence 70529
2025-05-30 08:02:34.120000 +08:00

2025-05-30 08:08:24.330000 +08:00
Fetching gap sequence in thread 1, gap sequence 70529-70529
FAL[client]: Error fetching gap sequence, no FAL server specified
2025-05-30 08:08:34.332000 +08:00
FAL[client]: Error fetching gap sequence, no FAL server specified

一直等 70529,其实这个日志文件已经了。

5.手工在备库上注册一下这个日志
  SQL> ALTER DATABASE REGISTER LOGFILE '/u01/hisdb/data/archive/1_seq_70529';

Database altered.

后端日志:

------------------------------------------------------------
2025-05-30 08:12:36.824000 +08:00
ALTER DATABASE REGISTER LOGFILE '/u01/hisdb/data/archive/1_seq_70529'
There are 1 logfiles specified.
ALTER DATABASE REGISTER [PHYSICAL] LOGFILE
Resynchronizing thread 1 from sequence 70528 to 70529
Completed: ALTER DATABASE REGISTER LOGFILE '/u01/hisdb/data/archive/1_seq_70529'
2025-05-30 08:12:46.753000 +08:00
Media Recovery Log /u01/hisdb/data/archive/1_seq_70529
Media Recovery Log /u01/hisdb/data/archive/2_seq_65218


看来日志已经认到了。并开始日志应用

6.再次激活数据库
  SQL> alter database activate  physical  standby database;
alter database activate  physical  standby database
*
ERROR at line 1:
ORA-01154: database busy. Open, close, mount, and dismount not allowed now


SQL> recover managed standby database cancel;
Media recovery complete.
SQL> alter database activate  physical  standby database;

Database altered.

SQL> alter database open;

Database altered.


SQL>  select open_mode from v$database;

OPEN_MODE
--------------------
READ WRITE



后端日志,不再报错。

最后:
    看来数据库激活失败后,也能继续接受主库的日志。



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2026-5-1 12:10 , Processed in 0.239964 second(s), 20 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表