DataGuard主备归档存在gap的处理办法
DataGuard主备之间可能由于网络等原因,造成备库和主库之间的归档日志不一致,这样就产生了gap。
解决gap的步骤:
1.在备库获得gap的详细信息
2.将需要的归档日志从主库拷贝到备库
3.备库将归档日志注册,然后应用。
--备库alert日志提示gap详情
Media Recovery Waiting for thread 1 sequence 7057
Fetching gap sequence in thread 1, gap sequence 7057-7080
FAL[client]: Error fetching gap sequence, no FAL server specified
Mon Mar 24 11:39:40 CST 2014
FAL[client]: Failed to request gap sequence
GAP - thread 1 sequence 7057-7080
DBID 768411208 branch 784810891
FAL[client]: All defined FAL servers have been attempted.
--也可以在备库查询gap
select * from v$archive_gap;
--为了方便,组装拷贝语句
--如果归档日志在ASM中,先通过rman将归档日志拷贝到OS,然后scp到备库standby归档目录;
--如果归档日志在OS上,直接scp到备库standby归档目录即可。
@Pirmary
select length('+DG1/primary/archivelog/2014_03_21/') from dual;
LENGTH('+DG1/PRIMARY/ARCHIVELOG/2014_03_21/')
---------------------------------------------
35
--get copy command
select 'copy archivelog '''||NAME||''' to ''/tmp/'||substr(name,35)||''' ;'
from v$archived_log
where SEQUENCE#>7060
and SEQUENCE#<=7080
and thread#=1
and NAME<>'standby service name';
--copy archive logs from asm to OS
rman target /
copy archivelog '+DG1/primary/archivelog/2014_03_21/thread_1_seq_7061.393.842805877' to '/tmp/thread_1_seq_7061.393.842805877' ;
copy archivelog '+DG1/primary/archivelog/2014_03_21/thread_1_seq_7062.472.842816319' to '/tmp/thread_1_seq_7062.472.842816319' ;
copy archivelog '+DG1/primary/archivelog/2014_03_21/thread_1_seq_7063.414.842825435' to '/tmp/thread_1_seq_7063.414.842825435' ;
copy archivelog '+DG1/primary/archivelog/2014_03_22/thread_1_seq_7064.308.842843087' to '/tmp/thread_1_seq_7064.308.842843087' ;
copy archivelog '+DG1/primary/archivelog/2014_03_22/thread_1_seq_7065.278.842847011' to '/tmp/thread_1_seq_7065.278.842847011' ;
copy archivelog '+DG1/primary/archivelog/2014_03_22/thread_1_seq_7066.415.842847023' to '/tmp/thread_1_seq_7066.415.842847023' ;
copy archivelog '+DG1/primary/archivelog/2014_03_22/thread_1_seq_7067.469.842850077' to '/tmp/thread_1_seq_7067.469.842850077' ;
copy archivelog '+DG1/primary/archivelog/2014_03_22/thread_1_seq_7068.402.842864915' to '/tmp/thread_1_seq_7068.402.842864915' ;
copy archivelog '+DG1/primary/archivelog/2014_03_22/thread_1_seq_7069.475.842868603' to '/tmp/thread_1_seq_7069.475.842868603' ;
copy archivelog '+DG1/primary/archivelog/2014_03_22/thread_1_seq_7070.413.842869761' to '/tmp/thread_1_seq_7070.413.842869761' ;
copy archivelog '+DG1/primary/archivelog/2014_03_22/thread_1_seq_7071.312.842871319' to '/tmp/thread_1_seq_7071.312.842871319' ;
copy archivelog '+DG1/primary/archivelog/2014_03_22/thread_1_seq_7072.407.842874331' to '/tmp/thread_1_seq_7072.407.842874331' ;
copy archivelog '+DG1/primary/archivelog/2014_03_22/thread_1_seq_7073.405.842874917' to '/tmp/thread_1_seq_7073.405.842874917' ;
copy archivelog '+DG1/primary/archivelog/2014_03_22/thread_1_seq_7074.328.842875663' to '/tmp/thread_1_seq_7074.328.842875663' ;
copy archivelog '+DG1/primary/archivelog/2014_03_22/thread_1_seq_7075.296.842876043' to '/tmp/thread_1_seq_7075.296.842876043' ;
copy archivelog '+DG1/primary/archivelog/2014_03_22/thread_1_seq_7076.452.842886921' to '/tmp/thread_1_seq_7076.452.842886921' ;
copy archivelog '+DG1/primary/archivelog/2014_03_22/thread_1_seq_7077.446.842906131' to '/tmp/thread_1_seq_7077.446.842906131' ;
copy archivelog '+DG1/primary/archivelog/2014_03_23/thread_1_seq_7078.348.842928271' to '/tmp/thread_1_seq_7078.348.842928271' ;
copy archivelog '+DG1/primary/archivelog/2014_03_23/thread_1_seq_7079.347.842928277' to '/tmp/thread_1_seq_7079.347.842928277' ;
copy archivelog '+DG1/primary/archivelog/2014_03_23/thread_1_seq_7080.367.842929387' to '/tmp/thread_1_seq_7080.367.842929387' ;
--send archive logs to standby
scp thread_1_seq_70* 10.1.1.10:/tmp
--get standby register archivelog command
--同样在主库执行,获得注册语句
select 'ALTER
DATABASE REGISTER PHYSICAL LOGFILE ''/tmp/'||substr(name,35)||''';' from
v$archived_log where SEQUENCE#>7060 and SEQUENCE#<=7080 and
thread#=1 and NAME<>'standby service name';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7061.393.842805877';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7062.472.842816319';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7063.414.842825435';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7064.308.842843087';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7065.278.842847011';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7066.415.842847023';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7067.469.842850077';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7068.402.842864915';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7069.475.842868603';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7070.413.842869761';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7071.312.842871319';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7072.407.842874331';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7073.405.842874917';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7074.328.842875663';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7075.296.842876043';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7076.452.842886921';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7077.446.842906131';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7078.348.842928271';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7079.347.842928277';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7080.367.842929387';
@Standby
--register gap archivelog to standby
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7061.393.842805877';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7062.472.842816319';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7063.414.842825435';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7064.308.842843087';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7065.278.842847011';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7066.415.842847023';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7067.469.842850077';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7068.402.842864915';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7069.475.842868603';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7070.413.842869761';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7071.312.842871319';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7072.407.842874331';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7073.405.842874917';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7074.328.842875663';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7075.296.842876043';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7076.452.842886921';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7077.446.842906131';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7078.348.842928271';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7079.347.842928277';
ALTER DATABASE REGISTER PHYSICAL LOGFILE '/tmp/thread_1_seq_7080.367.842929387';
--if standby is real apply,then standby will AUTO Apply archivelog
--if not,please open real apply
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
--get real apply info
set linesize 200
col name for a70
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
select NAME,THREAD#,FIRST_TIME,sequence#,applied from v$archived_log order by FIRST_TIME,THREAD#,sequence#,DEST_ID;
--you can see alert log ,it also show archivelog apply info
tail -f alert.log
--make sure no gap between Primary and Standby
SQL> select * from v$archive_gap;
--Clean
@Priamry
cd /tmp
rm thread_*
RMAN> crosscheck archivelog all;
RMAN> list archivelog all;
RMAN> delete expired archivelog all;
http://blog.chinaunix.net/uid-23284114-id-4190413.html
DataGuard主备归档存在gap的处理办法的更多相关文章
- GoldenGate 传统抽取进程随 DataGuard 主备快速切换的方案(ADG 模式)
环境描述: 1.节点描述 节点 IP 节点描述 11.6.76.221 GG 抽取端 / DG 节点,数据库版本号为 Oracle-11.2.0.3,与 11.6.76.222 组成 DataGuar ...
- Oracle DataGuard主备切换(switchover)
Oracle DataGuard主备切换可以使用传统的手动命令切换,也可以使用dgmgr切换,本文记录手动切换. (一)将主库切换为物理备库 STEP1:查看主库状态 SQL> SELECT O ...
- 主备归档不一致导致的RMAN-08137无法清理归档解决方案
值班夜里接到归档目录满的告警,执行删除脚本发现报错 RMAN-08137: WARNING: archived log not deleted, needed for standby or upstr ...
- dataGuard主备库角色切换
切换顺序: 先主库后备库 --查看主库可切换状态: SQL> select switchover_status from v$database; SWITCHOVER_STATUS ------ ...
- dataguard主备延迟多长时间的查询方法
select value from v$dataguard_stats where name='apply lag';
- Oracle Dataguard HA (主备,灾备)方案部署调试
包括: centos6.5 oracle11gR2 DataGuard安装 dataGuard 主备switchover角色切换 数据同步测试 <一,>DG数据库数据同步测试1,正常启动主 ...
- DG主备切换遇到not allwod或者RESOLVABLE GAP解决办法
今天做switchover,环境是11.2.0.3+OEL5.7,开始时主备库状态都是正常的,符合直接切换条件: 主库: SQL> select open_mode,database_role, ...
- Oracle 11.2.0.4.0 Dataguard部署和日常维护(5)-Datauard 主备切换和故障转移篇
1. dataguard主备切换 1.1. 查看当前主备库是否具备切换条件 on slave select sequence#,first_time,next_time,archived,appl ...
- DG_Oracle DataGuard Primary/Standby物理主备节点安装实践(案例)
2014-09-09 Created By BaoXinjian
随机推荐
- Android:学习AIDL,这一篇文章就够了(下)
前言 上一篇博文介绍了关于AIDL是什么,为什么我们需要AIDL,AIDL的语法以及如何使用AIDL等方面的知识,这一篇博文将顺着上一篇的思路往下走,接着介绍关于AIDL的一些更加深入的知识.强烈建议 ...
- PHP文件缓存与memcached缓存 相比 优缺点是什么呢【总结】
如果不考虑其他任何问题,只比较速度的话,那肯定是mem快,但他们各有优缺点.文件缓存优点:1.由于现在的硬盘都非常大,所有如果是大数据的时候,放硬盘里就比较合适,比如做一个cms网站,网站里有10万篇 ...
- windows系统下利用MySql命令行进入MySql数据库
Enter password: ****
- Failed to load JavaHL Library解决方法
进来的看官使用的是win7吧?!是64位的吧!?安装了eclipse的subclipse插件了吧!每次用到SVN插件时都会弹出如下的对话框,虽然不影响使用但是很不爽是不是啊?LZ也是一个有丁点儿强迫症 ...
- Android之创建自定义属性
一. 在res/values 文件下定义一个attrs.xml 文件.代码如下: <?xml version="1.0" encoding="utf-8" ...
- Android --固定底部
相对布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns: ...
- 01.Box2dWeb入门教程
1.下载box2dweb.直接在页面中引用即可. -Box2D.js是未压缩版 -Box2d.min.js是压缩版 2.编写HelloWorld代码. <!DOCTYPE HTML> &l ...
- debug 使用lldb
http://www.zddhub.com/memo/2015/12/20/lldb-golang-debug/ go build -gcflags "-N -l" -o test ...
- git提交
1.git pull 本地已经commit 2.git checkout master 3.git pull 4.git checkout - 5.git merge master 6.git pus ...
- HTML调用servlet(一)
1.页面的数据表单 在使用Servlet处理用户请求之前,先准备一个页面,该页面用来提供数据表单.数据表单就是HTML中的<form>...</form>部分,当用户单击Sub ...