Oracle DataGuard 出现 GAP 修复
下面我们通过实验来进行演示如何修复:
一、主库切几个最新的归档,然后手工删掉,重新开启DG同步。
1、备库关闭应用日志和数据库
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
Database altered.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
2、主库切换多次归档:
QL> alter system switch logfile;
System altered.
SQL> /
System altered.
SQL> /
System altered.
SQL> /
System altered.
3、主库删除最近几个归档日志:
[oracle@sjz311:/home/oracle]$ su - grid
ASMCMD> ls
2022_01_24/
ASMCMD> rm -rf *
二、模拟gap产生
1、备库开启同步进程:
startup;
2、主库创建测试表
create table dbmt.ljc6 as SELECT * FROM DBA_DATA_FILES;
2、查看gap
sqlplus / as sysdba
SQL> @gap
THREAD# ARCHED APPLIED DELETED GAP ETIME
---------- ---------- ---------- ---------- ---------- -----------------
1 78 73 1 5 20220124 11:31:29
三、gap修复
1、以备库的当前SCN号为起点,在主库上做一个增量备份
备库查询当前 scn 号:
sqlplus / as sysdba
SQL> select to_char(current_scn) from v$database;
TO_CHAR(CURRENT_SCN)
--------------------------------------------------------------------------------
4860280
2、确认主GAP期间是否新增数据文件:
sqlplus / as sysdba
select file# from v$datafile where creation_change# > =4860280;
3、主库根据备库scn号进行增量备份:
rman target /
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
backup INCREMENTAL from scn 4860280 database format '/home/oracle/ll/incre_%U';
release channel c1;
release channel c2;
}
4、备份个控制文件
backup device type disk format '/home/oracle/ll/standby_%U.ctl' current controlfile for standby;
5、将增量备份和控制文件拷贝到备库上,主库拷贝增量备份和控制文件你至备库:
scp incre_* oracle@192.168.3.112:/home/oracle/ll/
scp standby*.ctl oracle@192.168.3.112:/home/oracle/ll/
6.使用新的控制文件将备库启动到mount状态,备库关闭数据库实例,开启至nomount状态:
sqlplus / as sysdba
shutdown immediate
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
SQL>SQL> startup nomount
ORACLE instance started.
Total System Global Area 2516581456 bytes
Fixed Size 8899664 bytes
Variable Size 536870912 bytes
Database Buffers 1962934272 bytes
Redo Buffers 7876608 bytes
SQL> SQL> SQL> SQL> SQL> SQL>
SQL>
7、备库恢复新的控制文件:
rman target /
RMAN> restore controlfile from '/home/oracle/ll/standby_170k3cef_39_1_1.ctl';
Starting restore at 2022-01-24 13:59:01
using channel ORA_DISK_1
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:03
output file name=/u01/app/oracle/oradata/control01.ctl
output file name=/u01/app/oracle/oradata/control02.ctl
Finished restore at 2022-01-24 13:59:04
8、备库开启到mount状态:
RMAN> sql 'alter database mount';
sql statement: alter database mount
released channel: ORA_DISK_1
9、备库rman注册增量备份文件:
rman target /
RMAN> catalog start with '/home/oracle/ll/';
using target database control file instead of recovery catalog
searching for all files that match the pattern /home/oracle/ll/
List of Files Unknown to the Database
=====================================
File Name: /home/oracle/ll/standby_170k3cef_39_1_1.ctl
Do you really want to catalog the above files (enter YES or NO)? yes
cataloging files...
cataloging done
List of Cataloged Files
=======================
File Name: /home/oracle/ll/standby_170k3cef_39_1_1.ctl
10、备库开启恢复增量备份
RMAN> recover database noredo;
Starting recover at 2022-01-24 14:00:44
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=72 device type=DISK
channel ORA_DISK_1: starting incremental datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
destination for restore of datafile 00003: /u01/app/oracle/oradata/datafile/sysaux.258.1084219663
destination for restore of datafile 00007: /u01/app/oracle/oradata/datafile/users.260.1084219691
channel ORA_DISK_1: reading from backup piece /home/oracle/ll/incre_150k3cb1_37_1_1
channel ORA_DISK_1: piece handle=/home/oracle/ll/incre_150k3cb1_37_1_1 tag=TAG20220124T135129
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:03
channel ORA_DISK_1: starting incremental datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
destination for restore of datafile 00001: /u01/app/oracle/oradata/datafile/system.257.1084219591
destination for restore of datafile 00004: /u01/app/oracle/oradata/datafile/undotbs1.259.1084219689
channel ORA_DISK_1: reading from backup piece /home/oracle/ll/incre_140k3cb1_36_1_1
channel ORA_DISK_1: piece handle=/home/oracle/ll/incre_140k3cb1_36_1_1 tag=TAG20220124T135129
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:07
Finished recover at 2022-01-24 14:00:54
11、开启备库的恢复进程
sqlplus / as sysdba
RMAN> alter database open read only;
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of sql statement command at 01/24/2022 14:02:20
ORA-10458: standby database requires recovery
ORA-01152: file 1 was not restored from a sufficiently old backup
ORA-01110: data file 1: '/u01/app/oracle/oradata/datafile/system.257.1084219591'
12、备库开启日志同步进程
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
Database altered.
13、备库的alert
Standby redo logs should be configured for real time apply. Real time apply will be ignored.
2022-01-24T14:06:53.317790+08:00
ORA-1153 signalled during: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION...
2022-01-24T14:07:12.686677+08:00
.... (PID:27930): Standby crash recovery needs the archive log for T-1.S-79 to continue
.... (PID:27930): Please verify that primary database is transporting redo logs to the standby database
.... (PID:27930): Wait timeout: T-1.S-79
2022-01-24T14:07:12.686911+08:00
Standby Crash Recovery aborted due to error 16016.
2022-01-24T14:07:12.687014+08:00
Errors in file /u01/app/oracle/diag/rdbms/stdsjz/stdsjz/trace/stdsjz_ora_27930.trc:
ORA-16016: archived log for thread 1 sequence# 79 unavailable <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Recovery interrupted!
Stopping change tracking
2022-01-24T14:07:12.726174+08:00
Completed Standby Crash Recovery.
Signalling error 1152 for datafile 1!
2022-01-24T14:07:12.739578+08:00
Errors in file /u01/app/oracle/diag/rdbms/stdsjz/stdsjz/trace/stdsjz_ora_27930.trc:
ORA-10458: standby database requires recovery
ORA-01152: file 1 was not restored from a sufficiently old backup
ORA-01110: data file 1: '/u01/app/oracle/oradata/datafile/system.257.1084219591'
ORA-10458 signalled during: ALTER DATABASE OPEN...
2022-01-24T14:07:12.898840+08:00
Errors in file /u01/app/oracle/diag/rdbms/stdsjz/stdsjz/trace/stdsjz_mz00_28011.trc:
ORA-01110: data file 1: '/u01/app/oracle/oradata/datafile/system.257.1084219591'
2022-01-24T14:07:13.129881+08:00
Errors in file /u01/app/oracle/diag/rdbms/stdsjz/stdsjz/trace/stdsjz_mz00_28011.trc:
ORA-01110: data file 3: '/u01/app/oracle/oradata/datafile/sysaux.258.1084219663'
2022-01-24T14:07:13.221381+08:00
Errors in file /u01/app/oracle/diag/rdbms/stdsjz/stdsjz/trace/stdsjz_mz00_28011.trc:
ORA-01110: data file 4: '/u01/app/oracle/oradata/datafile/undotbs1.259.1084219689'
2022-01-24T14:07:13.309981+08:00
Errors in file /u01/app/oracle/diag/rdbms/stdsjz/stdsjz/trace/stdsjz_mz00_28011.trc:
ORA-01110: data file 7: '/u01/app/oracle/oradata/datafile/users.260.1084219691'
2022-01-24T14:08:46.866877+08:00
14、查看主库的归档
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination +ARCH
Oldest online log sequence 77
Next log sequence to archive 79 《《《《《《《《
Current log sequence 79
15、主库切个归档日志并断开备库应用
主:
SQL> alter system switch logfile;
备:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
Database altered.
16、备库read only并查询测试表
SQL> ALTER DATABASE OPEN; Database altered. SQL> SELECT * FROM dbmt.ljc6 ; FILE_NAME
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS RELATIVE_FNO AUTOEX MAXBYTES MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS ONLINE_STATUS LOST_WRITE_PRO
---------- ------------------------------------------------------------ ---------- ---------- ------------------ ------------ ------ ---------- ---------- ------------ ---------- ----------- -------------- --------------
+DATA/SJZ/DATAFILE/system.257.1084219591
1 SYSTEM 1069547520 130560 AVAILABLE 1 YES 3.4360E+10 4194302 1280 1068498944 130432 SYSTEM OFF +DATA/SJZ/DATAFILE/sysaux.258.1084219663
3 SYSAUX 975175680 119040 AVAILABLE 3 YES 3.4360E+10 4194302 1280 974127104 118912 ONLINE OFF +DATA/SJZ/DATAFILE/users.260.1084219691
7 USERS 17039360 2080 AVAILABLE 7 YES 3.4360E+10 4194302 160 15990784 1952 ONLINE OFF +DATA/SJZ/DATAFILE/undotbs1.259.1084219689
4 UNDOTBS1 361758720 44160 AVAILABLE 4 YES 3.4360E+10 4194302 640 360710144 44032 ONLINE OFF
最后:
SQL> alter database recover managed standby database parallel 3 disconnect;
Database altered.
Oracle DataGuard 出现 GAP 修复的更多相关文章
- Oracle Dataguard之failover
Oracle Dataguard中,角色转换包含两类:Switchover和Failover.上文<Oracle Dataguard之switchover>中,我们已经谈过了switcho ...
- Oracle Dataguard之switchover
Oracle Dataguard的角色转换包含两类:Switchover和Failover.Switchover指主备之间角色转换,主库降为备库,备库升级为主库.而failover则是指主库出现问题时 ...
- [Oracle] DataGuard switchover
Oracle DataGuard switchover 2013/07/11 Tag.Data Guard,primary,standby,switchover 切换前primary site和sta ...
- ORACLE DATAGUARD 日志传输状态监控
ORACLE DATAGUARD的主备库同步,主要是依靠日志传输到备库,备库应用日志或归档来实现.当主.备库间日志传输出现GAP,备库将不再与主库同步.因此需对日志传输状态进行监控,确保主.备库间日志 ...
- Oracle DataGuard主库丢失归档日志后备库的RMAN增量恢复一例
第一部分 问题描述和环境状态确认 ----1. 问题场景 Oracle DataGuard主库丢失archivelog,如何不重建备库完成同步? 在Oracle DataGuard主从同步过程中可能 ...
- Oracle Dataguard故障转移(failover)操作
注意:故障转移会破坏DG的主从关系,使其变为互不相关的2个数据库,谨慎使用. (一)故障转移操作流程图 (二)故障转移操作流程 备注:以下操作步骤与上面流程图步骤一一对应 STEP1:刷新所有未发送到 ...
- Oracle DataGuard故障转移(failover)后使用RMAN还原失败的主库
(一)DG故障转移后切换为备库的方法 在DG执行故障转移之后,主库与从库的关系就被破坏了.这个时候如果要恢复主从关系,可以使用下面的3种方法: 将失败的主库重新搭建为备库,该方法比较耗时: 使用数据库 ...
- DG修复:异常关库导致的数据库启动失败ORA-01110及GAP修复
问题描述:正在应用的备库是一套11.2.0.4的rac环境,但是被直接crsctl stop cluster集群强制关库,重新启动之后导致数据库启动失败,报错 Errors in file /u01/ ...
- Oracle Dataguard之Real-Time Apply
Oracle Dataguard一共支持三种模式:最大可用模式(Maximum Availability),最大性能模式(Maximum Performance),最大保护模式(Maximum Pro ...
- Oracle Dataguard之物理standby的基本配置
尽管网上有很多Oracle Dataguard的配置教程,但不难发现,很多采用的是rman duplicate这种方法,尽管此种方法较为简便.但在某种程度上,却也误导了初学者,虽说也能配置成功,但只知 ...
随机推荐
- MongoDB 强制使用索引 hint
转载请注明出处: 虽然MongoDB 查询优化器一般工作的很不错,但是也可以使用 hint() 来强迫 MongoDB 使用一个特定的索引.在这种方法下某些情形下会提升性能. 一个有索引的 colle ...
- Go语言使用场景 | go语言与其它开源语言比较 | Go WEB框架选型
一.Go语言使用场景 1. 关于go语言 2007年,受够了C++煎熬的Google首席软件工程师Rob Pike纠集Robert Griesemer和Ken Thompson两位牛人,决定创造一种新 ...
- Django之ORM表高级操作、增删改查、外键字段连表查、单表查、跨表查、F/Q查询
目录 一.如何开启自己的测试脚本? 二.对表数据的添加.更新.删除 1.create() 变态操作之批量插入数据 2.update() 3.delete() 4.如何查看QuerySet对象执行的sq ...
- elementui中 分页在vue中的使用
template中: <el-pagination background layout="prev, pager, next" :total="total&quo ...
- JavaScript:函数:如何声明和调用函数?
首先,理解什么是函数? 通俗的说,函数就是用大括号括起来的一组JS语句的集合体,是一个代码块,表达一种行为逻辑. 当我们调用函数的时候,我们就是在执行这一组JS语句. 然后,确定一点,在JS中,函数也 ...
- APICloud AVM框架列表组件list-view的使用、flex布局教程
avm.js 是APICloud 推出的多端开发框架.使用 avm.js 一个技术栈可同时开发 Android & iOS 原生 App.小程序和 iOS 轻 App,且多端渲染效果统一:全新 ...
- [生命科学] 生物基础实验之PCR验证
生物基础实验之PCR验证 文章目录 生物基础实验之PCR验证 实验步骤一 实验步骤二 实验步骤三 配胶 实验步骤四 电泳 实验步骤五 跑胶 实验步骤一 在离心管加入7.5μL Master Mix 溶 ...
- AspNetCore管道
title: Asp.Net Core底层源码剖析(一)中间件/管道 categories: 后端 tags: - .NET 当我们像下面这样添加一个管道时发生了什么? app.Use(async ( ...
- [WPF]颜色主题功能
效果 点击选择皮肤颜色 代码 public enum Themes { Blue, Gray, Orange } /// <summary> /// 主题颜色管理类 /// </su ...
- XCTF-web新手区
前言 刷题平台:攻防世界 web简介 WEB是CTF竞赛的主要题型,题目涉及到许多常见的WEB漏洞,诸如XSS.文件包含.代码执行.上传漏洞.SQL注入.还有一些简单的关于网络基础知识的考察,例如返回 ...