在之前的两篇文章里都对Oracle Data Guard的Failover 进行了说明,但是没有个系统的说明,所以在这篇把DG的Failover 做个系统的说明。 物理Data Guard 下Failover 时Redo 的处理问题 http://www.linuxidc.com/Linux/2011-03/33522.htm Oracle Data Guard Linux 平台 Physical Standby 搭建实例 http://www.linuxidc.com/Linux/2011-03/33523.htm Failover 是失败切换。 这种情况下切换对redo 的处理,就显的很重要。如果处理好,就不会有数据丢失。 否则就会有数据丢失。 在Oracle 11g里,Data Guard 切换多了一个新的功能:flush redo。 Flush 能把没有发送的redo 从主库传送到standby库。 只要主库能启动到mount 状态,那么Flush 就可以把没有发送的归档和current online redo 发送到备库。 Flush语法: SQL> ALTER SYSTEM FLUSH REDO TO target_db_name; 这里的target_db_name 是我们在主库的db_unique_name 名称。 也就是在tnsnames.ora 文件配置的。 Flush 会将未发送的redo 从主库传到备库,并且等待redo 在standby 库上apply 之后返回成功。 所以只要Flush成功,那么Failover 就没有主句丢失。 如果说???们的Primary 已经不能启动到mount 状态,那么就只能按照之前的方法来。 Oracle 10g 下就是这么操作的。 一. 正常的Failover1.1 检查Gap
sql> select thread#, low_sequence#, high_sequence# from v$archive_gap; 如果有,将对应的归档文件copy到备库,在注册它 sql>alter database register physical logfile "filespec1"; 注意: 如果有Gap存在,并且没有解决。 那么是不能正常的进行一个Failover。 只能进行一个强制的Failover。 这种情况下会有数据丢失。 sql> alter database activate physical standby database; 1.2 解决gap问题后,进行切换
1.2.1 取消ApplySQL> recover managed standby database cancel; 1.2.2 结束Apply(1)在oracle 10gR2 或之后的版本:如果在备用库上有备用库日志文件SQL> alter database recover managed standby database finish; -- [force|wait|nowait] 在执行这个命令的时候,如果主库和备库之间的网络中断了。 那么备库的RFS进程就会等待网络的连接,直到TCP超时。 因此在这种情况下,我们就需要加上Foce 关键字。 (2)在oracle 10gR2之前的版本:没有备库日志文件SQL> alter database recover managed standby database finish skip standby logfile; 注意:如果执行了这条命令,就不能在进行recover standby database; 1.2.3 将备库切换成主库
SQL> alter database commit to switchover to primary;SQL> shutdown immediate;SQL> startupOracle Listener 动态注册 与 静态注册ORA-09817: Write to audit file failed 解决方法相关资讯 Oracle教程
- Oracle中纯数字的varchar2类型和 (07/29/2015 07:20:43)
- Oracle教程:Oracle中查看DBLink密 (07/29/2015 07:16:55)
- [Oracle] SQL*Loader 详细使用教程 (08/11/2013 21:30:36)
| - Oracle教程:Oracle中kill死锁进程 (07/29/2015 07:18:28)
- Oracle教程:ORA-25153 临时表空间 (07/29/2015 07:13:37)
- Oracle教程之管理安全和资源 (04/08/2013 11:39:32)
|
本文评论 查看全部评论 (0)