热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

Dataguard出现gapsequence修复

一、出现gapsequence现象SQLgt;alterdatabaseopen;alterdatabaseopen*第1行出现错误:今天的dataguard,备库恢复open时

一、出现gap sequence现象 SQLgt; alter database open;alter database open*第 1 行出现错误:今天的dataguard ,备库恢复open时

一、出现gap sequence现象

SQL> alter database open;
alter database open
*
第 1 行出现错误:
今天的dataguard ,备库恢复open时报错:

ORA-16004: 备份数据库需要恢复
ORA-01152: 文件 1 没有从过旧的备份中恢复
ORA-01110: 数据文件 1: 'C:\Oracle\PRODUCT\10.2.0\ORADATA\SHENG\SYSTEM01.DBF'

虽然archivelog是可以同步的:

SQL> select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)
--------------
15

在主库上看到的log:
Tue Jan 03 19:11:20 2012
FAL[server]: Fail to queue the whole FAL gap
GAP - thread 1 sequence 8-8
DBID 1778268600 branch 770765436备库的alert 日志:
FAL[client]: Failed to request gap sequence
GAP - thread 1 sequence 8-8
DBID 1778268600 branch 770765436
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 is sufficiently large
enough to maintain adequate log switch information to resolve
archivelog gaps.

二、修复操作
1、查询备库的scn

SQL> select current_scn from v$database;

CURRENT_SCN
-----------
614090

目的:1)确定主库在这个scn之后是否有添加数据文件,如果添加文件,需要手工在备库添加
2)确定主库增量备份起点

2、确定主库是否添加数据文件

SQL> select FILE#,name from v$datafile where CREATION_CHANGE# > =614090;

未选定行

3、备库停止日志应用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

4、主库增量备份并传输到备库上
主库进行增量备份
RMAN> backup incremental from scn 614090 database format 'C:\soft\sheng_U%' tag 'shp';

说明:主库之前必须要做过rman的全备(没有全备的库,基于scn的增量备份也能够成功)

5、备库上进行恢复
RMAN> catalog start with 'C:\soft';
RMAN> RECOVER DATABASE NOREDO;
说明:CATALOG START WITH是10g及其以后版本中才存在功能,没有该功能可以采用catalog或者复制主库的控制文件,rman备份放置和主库备份时相同目录实现。

6、主库上创建standby controlfile文件并传输到备库
RMAN> backup current controlfile for standby format 'C:\soft\sheng_ctl.bck';

7、备库恢复控制文件
RMAN> shutdown;
RMAN> STARTUP NOMOUNT;
RMAN> restore standby controlfile from 'C:\soft\SHENG_CTL.BCK';
RMAN> alter database mount;

8、清空备库日志组
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 1;
注:如果采用了standby log模式,不需要清空,如果清空会出现
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 1;
ALTER DATABASE CLEAR LOGFILE GROUP 1
*
ERROR at line 1:
ORA-19527: physical standby redo log must be renamed
ORA-00312: online log 1 thread 1: ‘c:\....\redo01.log’
说明:如果没有采用standby log模式,有几组需要清空几组

9、备库重设flashback
SQL> ALTER DATABASE FLASHBACK OFF;
SQL> ALTER DATABASE FLASHBACK ON;

10、备库重新接收并应用日志
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

----------------------
我试做上面的操作,发现由于redo位置不同,而引发错误:

发现备库的alert:
RFS[1]: Unable to open standby log 6: 313
Tue Jan 03 20:23:16 2012
Errors in file c:\oracle\product\10.2.0\admin\sheng\udump\sheng_rfs_2000.trc:
ORA-00313: open failed for members of log group 7 of thread 1
ORA-00312: online log 7 thread 1: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\SHENG\REDO07.LOG'
ORA-27041: unable to open file
OSD-04002: 无法打开文件
O/S-Error: (OS 21) 设备未就绪。

检查一下log 位置,,发现有问题:

SQL> select * from v$logfile;
行将被截断


GROUP# STATUS TYPE MEMBER
---------- ------- ------- -----------------------------------------------------
3 ONLINE D:\ORACLE\PRODUCT\10.2.0\ORADATA\SHENG\REDO03.LOG
2 ONLINE D:\ORACLE\PRODUCT\10.2.0\ORADATA\SHENG\REDO02.LOG
1 ONLINE D:\ORACLE\PRODUCT\10.2.0\ORADATA\SHENG\REDO01.LOG

SQL> select * from v$log;
在列 FIRST_CHANGE# 前截断 (按要求)


GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRS
---------- ---------- ---------- ---------- ---------- --- ---------------- ----
1 1 17 52428800 1 YES CLEARING 03-1
3 1 16 52428800 1 YES INACTIVE 03-1
2 1 18 52428800 1 YES CLEARING_CURRENT 03-1

下面进行修复:
其实在备库的 pfile 中加入:
log_file_name_cOnvert= D:\oracle\product\10.2.0\oradata\sheng\, C:\oracle\product\10.2.0\oradata\sheng\

shutdown immediate
create spfile from pfile;

startup nomount;
alter database mount;

经过上面在备库的操作后,
select * from v$logfile;

GROUP# STATUS TYPE MEMBER
---------- ------- ------- -----------------------------------------------------
3 ONLINE C:\ORACLE\PRODUCT\10.2.0\ORADATA\SHENG\REDO03.LOG
2 ONLINE C:\ORACLE\PRODUCT\10.2.0\ORADATA\SHENG\REDO02.LOG
1 ONLINE C:\ORACLE\PRODUCT\10.2.0\ORADATA\SHENG\REDO01.LOG
4 STANDBY C:\ORACLE\PRODUCT\10.2.0\ORADATA\SHENG\REDO04.LOG
5 STANDBY C:\ORACLE\PRODUCT\10.2.0\ORADATA\SHENG\REDO05.LOG
6 STANDBY C:\ORACLE\PRODUCT\10.2.0\ORADATA\SHENG\REDO06.LOG
7 STANDBY C:\ORACLE\PRODUCT\10.2.0\ORADATA\SHENG\REDO07.LOG

已选择7行。

发现已经正确。

下面是细节:

主库:

SQL> alter system switch logfile;

系统已更改。
SQL> select current_scn from v$database;

CURRENT_SCN
-----------
654580
alert:

Tue Jan 03 21:22:56 2012
Thread 1 advanced to log sequence 19
Current log# 3 seq# 19 mem# 0: D:\ORACLE\PRODUCT\10.2.0\ORADATA\SHENG\REDO03.LOG
Tue Jan 03 21:22:57 2012
ARC1: Standby redo logfile selected for thread 1 sequence 18 for destination LOG_ARCHIVE_DEST_2


看一下备库的信息:

SQL> select current_scn from v$database;

CURRENT_SCN
-----------
654555

RFS[1]: Successfully opened standby log 4: 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\SHENG\REDO04.LOG'
Tue Jan 03 21:22:54 2012
Media Recovery Log C:\ORACLE\PRODUCT\10.2.0\ORADATA\ARCH\00100018770765436.ARC
Media Recovery Waiting for thread 1 sequence 19

-----

到这里为止:

如果 open 出现数据库忙的情况,用一下命令停掉:

alter database recover managed standby database cancel

alter database open read only, 就可以打开数据库了。

linux

推荐阅读
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 构建基于BERT的中文NL2SQL模型:一个简明的基准
    本文探讨了将自然语言转换为SQL语句(NL2SQL)的任务,这是人工智能领域中一项非常实用的研究方向。文章介绍了笔者在公司举办的首届中文NL2SQL挑战赛中的实践,该比赛提供了金融和通用领域的表格数据,并标注了对应的自然语言与SQL语句对,旨在训练准确的NL2SQL模型。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 在即将迎来26岁生日之际,作者的人生陷入了低谷。经过近三年的硕士学习后,最终决定退学,并且面临没有工作经验的困境。尽管如此,作者依然坚定地选择为自己的人生负责。 ... [详细]
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
  • 本文详细介绍了美国最具影响力的十大财团,包括洛克菲勒、摩根、花旗银行等。这些财团在历史发展过程中逐渐形成,并对美国的经济、政治和社会产生深远影响。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 解决JAX-WS动态客户端工厂弃用问题并迁移到XFire
    在处理Java项目中的JAR包冲突时,我们遇到了JaxWsDynamicClientFactory被弃用的问题,并成功将其迁移到org.codehaus.xfire.client。本文详细介绍了这一过程及解决方案。 ... [详细]
  • 本题通过将每个矩形视为一个节点,根据其相对位置构建拓扑图,并利用深度优先搜索(DFS)或状态压缩动态规划(DP)求解最小涂色次数。本文详细解析了该问题的建模思路与算法实现。 ... [详细]
  • 本题探讨如何通过最大流算法解决农场排水系统的设计问题。题目要求计算从水源点到汇合点的最大水流速率,使用经典的EK(Edmonds-Karp)和Dinic算法进行求解。 ... [详细]
  • 在网页开发中,页面加载速度是一个关键的用户体验因素。为了提升加载效率,避免在PageLoad事件中进行大量数据绑定操作,可以采用异步加载和特定控件来优化页面加载过程。 ... [详细]
  • 本文介绍了一种根据用户选择动态切换屏幕界面的方法,通过定义不同的选择块(Selection Block),实现灵活的用户交互体验。 ... [详细]
  • 本题探讨了在一个有向图中,如何根据特定规则将城市划分为若干个区域,使得每个区域内的城市之间能够相互到达,并且划分的区域数量最少。题目提供了时间限制和内存限制,要求在给定的城市和道路信息下,计算出最少需要划分的区域数量。 ... [详细]
author-avatar
mobiledu2502912277
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有