[Oracle] Data Guard 系列(6) - 角色转换
来源:互联网 发布:curl不能获取网页源码 编辑:程序博客网 时间:2024/05/17 22:59
DG最核心的功能是提供高可用性的容灾,因此本节要介绍的角色转换内容是DG最重要的部分。DG主从库间的角色切换分为以下两种:
1)Switchover
Swithchover是指主从库进行角色互换(主库变备库,备库变主库),通常都是人为的、有计划的,比如利用Switchover可以减少数据库升级的停机时间,因此不会造成数据丢失。
2)Failover
Failover是指主库因为故障无法短时间内恢复,为了保证数据的可用性,备库不得不临时充当主库的角色,如果DG的数据保护模式是最大性能模式,这种切换就很有可能导致数据丢失。
下面分别演示物理备库和逻辑备库的Switchover和Failover
物理备库的Switchover和Failover
1. 物理备库的Switchover
SQL>select switchover_status from v$database;SWITCHOVER_STATUS--------------------TO STANDBY
2) 把主库切换为物理备库
SQL>alter database commit to switchover to physical standby;
3)关闭主库并重启至mount状态
SQL>shutdown abortSQL>startup mount此时主库的身份已经改变,成为物理备库了。
4) 确认物理备库是否可以切换为主库
SQL>select switchover_status from v$database;SWITCHOVER_STATUS--------------------TO PRIMARY
5) 切换原物理备库为新的主库
SQL>alter database commit to switchover to primary;Database altered.SQL>alter database open;Database altered.
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
7) 验证
SQL>select database_role from v$database;DATABASE_ROLE----------------PHYSICAL STANDBYSQL>select database_role from v$database;DATABASE_ROLE----------------PRIMARY
从上面可以看到原来的主库现在已经变成物理,原来的物理备库变成了主库。
检查新的主库的log_archive_dest_n参数的设置是否正确:
SQL>show parameter log_archive_dest_2NAME TYPE VALUE------------------------------------ ----------- ------------------------------log_archive_dest_2 string service=O01DMS0 ARCH VALID_FOR =(ONLINE_LOGFILES,PRIMARY_ROLE ) DB_UNIQUE_NAME=O01DMS0SQL>show parameter log_archive_dest_state_2NAME TYPE VALUE------------------------------------ ----------- ---------------------log_archive_dest_state_2 string ENABLE
在新主库做日志切换,看日志是否可以成功传输至新的备库:
SQL>alter system switch logfile;System altered.SQL>select max(sequence#) from v$archived_log;MAX(SEQUENCE#)-------------- 479
在新备库查看:
SQL>select max(sequence#) from v$archived_log;MAX(SEQUENCE#)-------------- 479
两边的归档日志的最大序号吻合,说明switchover成功啦~
物理备库的Failover
1)从主库刷新未发送的日志至备库
如果主库还可以mount,我们就有可能把未发送的日志刷新至备库,这样就不会导致数据丢失。
当主库mount之后,执行如下语句:
SQL> ALTER SYSTEM FLUSH REDO TO standby_db_unique_name;如果上述语句成功执行,说明已把所有的日志发送至备库,可以直接跳到第5步,否则从第2步开始。
2)确认备库拥有最新的归档日志
查询备库归档日志的最高序号:
SQL> SELECT UNIQUE THREAD# AS THREAD, MAX(SEQUENCE#) OVER (PARTITION BY thread#) AS LAST from V$ARCHIVED_LOG; THREAD LAST---------- ---------- 1 100手动把缺失的归档日志拷贝至备库,并在备库中注册:
SQL> ALTER DATABASE REGISTER PHYSICAL LOGFILE 'filespec1';
3)解决归档日志GAP
查询v$archive_gap视图就能知道是否有GAP
SQL> SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;THREAD# LOW_SEQUENCE# HIGH_SEQUENCE#---------- ------------- -------------- 1 90 92上例表示备库缺失90,91,92归档日志,手动把它们从主库拷贝过来并在备库注册:
SQL> ALTER DATABASE REGISTER PHYSICAL LOGFILE 'filespec1';
5)备库停止日志应用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
执行下列语句应用所有日志:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;如果上述语句执行没有错误,则到下一步;如果有错误,则根据具体错误信息具体分析,错误解决之后,再重新执行上诉语句;如果错误无法解决,执行下述语句继续Failover,但部分数据丢失了。
SQL> ALTER DATABASE ACTIVATE PHYSICAL STANDBY DATABASE;
7)确认备库已准备切换成主库
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;SWITCHOVER_STATUS-----------------TO PRIMARY
8)切换物理备库为新的主库
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;切换成功后,打开新的主库并验证:
SQL>alter database open;SQL>select database_role from v$database;DATABASE_ROLE----------------PRIMARY
《[Oracle] Data Guard 系列(1) - 三种保护模式》
《[Oracle] Data Guard 系列(2) - 日志传输》
《[Oracle] Data Guard 系列(3) - 日志应用》
《[Oracle] Data Guard 系列(4) - 在不停主库的情况下创建物理备库》
《[Oracle] Data Guard 系列(5) - 创建逻辑备库》
《[Oracle] Data Guard 系列(6) - 角色转换》
- [Oracle] Data Guard 系列(6) - 角色转换
- Oracle Data Guard 角色转换
- Oracle Data Guard 的角色转换
- ORACLE 11G Data Guard 角色转换
- Oracle 11g Data Guard 之角色转换
- 物理Data Guard角色转换步骤(switch over)
- 关于Oracle Data Guard的角色切换
- Oracle 11g Data Guard 之物理备库角色转换
- Oracle 11g Data Guard 之逻辑备库角色转换
- [Oracle] Data Guard 系列(1) - 三种保护模式
- [Oracle] Data Guard 系列(2) - 日志传输
- [Oracle] Data Guard 系列(3) - 日志应用
- [Oracle] Data Guard 系列(5) - 创建逻辑备库
- Oracle 11g Data Guard主备库角色切换
- Oracle Data Guard 简介
- ORACLE DATA GUARD概述
- 介绍ORACLE DATA GUARD
- ORACLE DATA GUARD
- Resource
- oracle编写分页存储过程
- 熬之滴水穿石:Servlet--Web万物之源(7)
- 观察者模式
- C笔记1—指针和数组
- [Oracle] Data Guard 系列(6) - 角色转换
- CString中TrimLeft()与TrimRight()的用法
- javamail发送邮件的简单实例
- 单例设计模式在JDBC中的应用
- 经典C/C++面试题
- 享元设计模式与Integer类
- 读取文件内容并保存到string中
- 黑马程序员-JAVA基础加强-反射1
- 當在vmware player上安裝ubuntu 12.04時,出現Vmware Easy Install,無法登入到視窗畫面處理方法