DG gap sequence修复一例
环境:Oracle 11.2.0.4 DG
故障现象:
客户在备库告警日志中发现GAP sequence提示信息:
Mon Nov 21 09:53:29 2016
Media Recovery Waiting for thread 1 sequence 12034
Fetching gap sequence in thread 1, gap sequence 12034-12078
Mon Nov 21 09:55:20 2016
FAL[client]: Failed to request gap sequence
GAP - thread 1 sequence 12034-12078
DBID 3493955325 branch 881855745
FAL[client]: All defined FAL servers have been attempted.
------------------------------------------------------------
Check that the CONTROL_FILE_RECORD_KEEP_TIME initialization
parameter is defined to a value that's sufficiently large
enough to maintain adequate log switch information to resolve
archivelog gaps.
------------------------------------------------------------
修复过程:
- 1.查询备库SCN
- 2.确定主库是否添加数据文件
- 3.备库停止日志应用
- 4.主库增量备份并传输到备库上
- 5.备库上进行恢复
- 6.主库上创建standby controlfile文件并传输到备库
- 7.备库恢复控制文件
- 8.清空备库日志组
- 9.备库重设flashback
- 10.备库重新接收并应用日志
- 11.备库重新开启read only模式
- 12.验证修复是否成功
- Reference
1.查询备库SCN
查询备库当前SCN,如果人为造成控制文件、数据文件、数据文件头的SCN不一致,那么需要根据日志中gap的起始sequence#找出对应的SCN。可以查看文末reference中惜分飞的博客评论部分。
SQL> col CURRENT_SCN for 999999999999999999
SQL> SELECT CURRENT_SCN FROM V$DATABASE;
CURRENT_SCN
-------------------
11906842766974
2.确定主库是否添加数据文件(这里没有)
select FILE#,name from v$datafile where CREATION_CHANGE#> =11906842766974;
确定主库在这个scn之后是否有添加数据文件,如果添加文件,需要手工在备库添加。本次没有遇到。
3.备库停止日志应用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
4.主库增量备份并传输到备库上
主库进行增量备份然后传输到备库上
RMAN> backup as compressed backupset INCREMENTAL from scn 11906842766974 database format '/backup/dumpfile/%u.bak';
$ scp *.bak 192.168.56.158:/oradata/rman/
5.备库上进行恢复
RMAN> CATALOG START WITH '/oradata/rman/';
--注意如果此时库是read only则需要置换为mount后再进行recover操作;
RMAN> RECOVER DATABASE NOREDO;
6.主库上创建standby controlfile文件并传输到备库
主库上创建standby controlfile文件并传输到备库
RMAN> BACKUP CURRENT CONTROLFILE FOR STANDBY FORMAT '/home/oracle/std_ctl.bak';
[oracle@localhost ~]$ scp std_ctl.bak 192.168.56.158:/home/oracle/
7.备库恢复控制文件
备库关库,启动到nomount状态后恢复控制文件,最后启动到mount状态
RMAN> shutdown;
RMAN> STARTUP NOMOUNT;
RMAN> RESTORE STANDBY CONTROLFILE FROM '/home/oracle/std_ctl.bak';
RMAN> alter database mount;
8.清空备库日志组(这里不用)
本次DG中使用了standby log模式,不需要此步骤。
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 1;
如果配置了physical standby redo log则不需该步骤;
如果没有采用standby log模式,有几组需要清空几组。
9.备库重设flashback(根据实际情况选做,这里本身就没开启)
备库重设flashback(根据实际情况选做,这里DG环境备库本身就没开启,所以不用操作)
SQL> ALTER DATABASE FLASHBACK OFF;
SQL> ALTER DATABASE FLASHBACK ON;
10.备库重新接收并应用日志
备库重新接收并应用日志:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE using current logfile DISCONNECT FROM SESSION;
恢复过程备库最后的日志(最后需要出现Media Recovery Waiting for 字样):
Mon Nov 21 17:17:05 2016
Managed Standby Recovery starting Real Time Apply
Parallel Media Recovery started with 32 slaves
Waiting for all non-current ORLs to be archived...
All non-current ORLs have been archived.
Completed: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE using current logfile DISCONNECT FROM SESSION
Media Recovery Log /oradata/arch/1_12131_881855745.dbf
Mon Nov 21 17:18:59 2016
Media Recovery Log /oradata/arch/1_12132_881855745.dbf
Mon Nov 21 17:20:44 2016
Media Recovery Log /oradata/arch/1_12133_881855745.dbf
Mon Nov 21 17:21:02 2016
Media Recovery Log /oradata/arch/1_12134_881855745.dbf
Mon Nov 21 17:22:22 2016
Media Recovery Waiting for thread 1 sequence 12135 (in transit)
11.备库重新开启read only模式
根据实际情况,备库重新开启read only模式,本次需求是需要备库read only状态应用日志(11g ADG特性)
SQL> alter database RECOVER MANAGED STANDBY DATABASE CANCEL;
SQL> alter database open;
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE using current logfile DISCONNECT FROM SESSION;
12.验证修复是否成功
12.1 对比最大sequence#
不一定准确(比如中间产生过gap,但是后期的归档日志正常传输,那么实际上虽然结果相同,但是还是有gap)
在主库中执行alter system switch logfile;
分别主备库中执行:select max(sequence#) from v$archived_log;
12.2 通过跟踪alert文件
主库告警:
tail -200f /oracle/diag/rdbms/shoucall/shoucall/trace/alert_shoucall.log
备库告警:
tail -200f /u01/app/oracle/diag/rdbms/shoucall_dg/shoucall/trace/alert_shoucall.log
Reference
DG gap sequence修复一例的更多相关文章
- oracle 10g 搭建备库以及一次DG GAP的处理情况
1.主庫全庫備份rman target/rman> backup database format '/backup/fullbak/fullbak_%U';2.用scp傳到備庫,最好是rman目 ...
- Oracle 数据库修复一例
Oracle 数据库修复一例:(系统装有两个实例,分别是:bhorcl,orcl)今天一台生产服务器的Oracle不能正常登录,用plSql登录,提示:TNS:listernet does noet ...
- 利用增量备份恢复因归档丢失造成的DG gap
故障现象:data guard归档出现gap,悲剧的是丢失的归档在主库上被rman备份时删除了,丢失的归档大约有20几个,数据库大小约2T,如果重建DG将非常耗时间,因此决定利用增量备份的方式恢复DG ...
- FAL[client]: Failed to request gap sequence GAP - thread 1 sequence 29-29
一:问题描述 主备库所在机器都重启后,rac(主库)开机自动启动,但备库(单实例)不是开机启动,现已手工启动到mount,并已在备库上alter database recover standby d ...
- 子序列 sub sequence问题,例:最长公共子序列,[LeetCode] Distinct Subsequences(求子序列个数)
引言 子序列和子字符串或者连续子集的不同之处在于,子序列不需要是原序列上连续的值. 对于子序列的题目,大多数需要用到DP的思想,因此,状态转移是关键. 这里摘录两个常见子序列问题及其解法. 例题1, ...
- SQL2008R2下数据库修复一例
某天访问某个数据库的时候,系统报错.连上去看了一下,服务器是SQL2008R2.由于有上次修复的经验,先使用DBCC查看数据库情况. DBCC的返回: XXXXXXXXXXX发生异常数据库 ID 7, ...
- Ubuntu 18.04.3 LTS Virtualbox提示“Kernel driver not installed (rc=-1908)”问题修复一例
前两天Ubuntu升级了,重启后启动virtualbox保存 从错误报告上反映出来的问题原因是因为某些内核驱动程序没有经过编译,所以Virtualbox无法正常运行.事实上,在Ubuntu上处理这个问 ...
- recover database noredo时报错ORA-19573
环境: RHEL6.4 + Oracle 11.2.0.4 Primary RAC + Standby RAC 今天发现DG备库归档空间满,清理后发现备库出现GAP,需要从主库做基于SCN的增量备份进 ...
- service_names配置不正确,导致dg创建失败
service_names配置不正确,导致dg创建失败 伙伴发来消息,创建dg后,主备一直无法进行日志同步. 以下是查看过程 备库的alert日志: 2018-11-13T17:47:36.23129 ...
随机推荐
- JavaScript 中的数据类型
Javascript中的数据类型有以下几种情况: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Function,Date,Ar ...
- HTML5 progress和meter控件
在HTML5中,新增了progress和meter控件.progress控件为进度条控件,可表示任务的进度,如Windows系统中软件的安装.文件的复制等场景的进度.meter控件为计量条控件,表示某 ...
- 【Python五篇慢慢弹】快速上手学python
快速上手学python 作者:白宁超 2016年10月4日19:59:39 摘要:python语言俨然不算新技术,七八年前甚至更早已有很多人研习,只是没有现在流行罢了.之所以当下如此盛行,我想肯定是多 ...
- Javascript 代理模式模拟一个文件同步功能
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 【置顶】CoreCLR系列随笔
CoreCLR配置系列 在Windows上编译和调试CoreCLR GC探索系列 C++随笔:.NET CoreCLR之GC探索(1) C++随笔:.NET CoreCLR之GC探索(2) C++随笔 ...
- C++随笔:.NET CoreCLR之GC探索(2)
首先谢谢 @dudu 和 @张善友 这2位大神能订阅我,本来在写这个系列以前,我一直对写一些核心而且底层的知识持怀疑态度,我为什么持怀疑态度呢?因为一般写高层语言的人99%都不会碰底层,其实说句实话, ...
- [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法
一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...
- .NET面试题集锦①(Part一)
一.前言部分 文中的问题及答案多收集整理自网络,不保证100%准确,还望斟酌采纳. 1.面向对象的思想主要包括什么? 答:任何事物都可以理解为对象,其主要特征: 继承.封装.多态.特点:代码好维护,安 ...
- from表单提交数据之后,后台对象接受不到值
如果SSH框架下,前段页面通过from表单提交数据之后,在后台对象显示空值,也就是接收不到值得情况下.首先保证前段输入框有值,这个可以在提交的时候用jQuery的id或者name选择器alert弹出测 ...
- 升级npm
查看npm的所有版本 运行命令: npm view npm versions 命令运行后,会输出到目前为止npm的所有版本. [ '1.1.25', '1.1.70', '1.1.71', '1.2. ...