备用数据的问题集锦

本文详细列举了Oracle Data Guard在切换过程中遇到的问题,包括密码文件不匹配、日志应用错误、重做日志大小不一致等。并提供了解决这些问题的方法,如刷新重做日志、检查和处理日志间隙、停止并完成日志应用,以及如何进行强制切换。确保主备库顺利切换,避免数据丢失。
1密码文件不一样导致备用数据库不可用
2log_archive_dest_state_2= enable 以前是reset,导致没有rfs不能应用日志[物理备库RFS进程消失]http://www.java123.net/v/956505.html
3备用重做日志大小和主库联机重做日志大小不一样导致可以进行日志切换应用,不能实时应用[Rfs[2]: no standby redo logfiles of size 153600 blocks available]
http://blog.itpub.net/23135684/viewspace-703620/
4.关闭防火墙




WARNING ORA-16714: the value of property LogArchiveMaxProcesses is inconsistent with the database setting
show database orcl11g inconsistentproperties
edit database orcl11g set property logarchivemaxprocesses=10;

---------------------------------------
1.NOT ALLOWED - ---Either this is a standby database and the primary database has not been switched first, or this is a primary database and there are no standby databases.这是一个备用数据库与主数据库还没有切换第一,或这是一个主数据库,没有备用数据库。
2.SESSIONS ACTIVE - ---Indicates that there are active SQL sessions attached to the primary or standby database that need to be disconnected before the switchover operation is permitted.表明有活动SQL会话连接到主和备用数据库需要断开之前切换操作是允许的。
3.TO STANDBY
4.RESOLVABLE GAP
5.TO PRIMARY

简单来说,就是有从库有日志尚未应用,存在着RESOLVABLE GAP ,解决方法如下:
alter system flush redo to 'orcl_std';注意还有单引号,这里还有一个问题,主备库的db_unique_name必须不同,否则这里还会抱错.解决这个之后主备顺利切换
--主库,将所有未传送的redo传送给从库,target_db_name使用DB_UNIQUE_NAME 。
ALTER SYSTEM FLUSH REDO TO target_db_name;
--验证从库
SELECT UNIQUE THREAD# AS THREAD, MAX(SEQUENCE#) OVER (PARTITION BY thread#) AS LAST from V$ARCHIVED_LOG;
--如果必要,拷贝归档日志到从库,并进行注册
ALTER DATABASE REGISTER PHYSICAL LOGFILE 'filespec1';
--重复上一步,知道确认所有归档完毕。
SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;
--在目标从库上,停止日志应用
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
--在目标从库上
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;
--如果日志确定丢失,可以采用激活方式,单这样会有数据丢失。
--ALTER DATABASE ACTIVATE PHYSICAL STANDBY DATABASE;
--验证目标从库
SELECT SWITCHOVER_STATUS FROM V$DATABASE;
--开始切换,如果状态为“f TO PRIMARY.”则WITH SESSION SHUTDOWN从句可以去掉。
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;
--打开新主库
ALTER DATABASE OPEN;


1、flush redo
ALTER SYSTEM FLUSH REDO TO target_db_name;
Note:1)11g新加功能,如果不是11g的data gurad 则直接跳至步骤2
2)只要主库能启动到mount状态,那么Flush 就可以把没有发送的归档和current online redo 发送到备库,如果Flush成功,数据不会丢失,执行步骤2

2、检查Gap
select thread#, low_sequence#, high_sequence# from v$archive_gap;
如果有,将对应的归档文件copy到备库,在注册它
alter database register physical logfile ‘filespec1′;
检查是否存在gap,如果无记录,继续执行步骤3,否则再尝试,确实不行,则执行步骤6

3、Stop Redo Apply
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

4、Finish Apply
1)在oracle 10gR2 或之后的版本:如果在备用库上有备用库日志文件
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH [force|wait|nowait];
Note:在执行这个命令的时候,如果主库和备库之间的网络中断了。 那么备库的RFS进程就会等待网络的连接,直到TCP超时。 因此在这种情况下,就需要加上Foce 关键字
2)在oracle 10gR2之前的版本:没有备库日志文件
alter database recover managed standby database finish skip standby logfile;
Note:如果执行了这条命令,就不能在进行recover standby database;

5、将备库切换成主库
SELECT SWITCHOVER_STATUS FROM V$DATABASE;
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY [WITH SESSION SHUTDOWN];
Note:当我们正常切换的时候,如果提示我们需要介质恢复的时候执行,则执行步骤6,否则执行步骤7

6、强行切换(激活)
1)查找主库最后归档日志
SELECT UNIQUE THREAD# AS THREAD, MAX(SEQUENCE#)OVER (PARTITION BY thread#) AS LAST from V$ARCHIVED_LOG;
2)注册最近归档日志
ALTER DATABASE REGISTER PHYSICAL LOGFILE ‘filespec1′;
3)将主库的所有online redo copy到备库
4)Stop Redo Apply
alter database recover managed standby database cancel;
5)恢复备库
recover standby database until cancel;
Note:手工输入online redo尝试
6)激活备库
alter database activate standby database;

7、重启数据库
shutdown immediate;
startup
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值