用户可以使用角色管理服务,进行主、备库的计划中的角色切换,这个叫switchover,或者是非计划中的角色切换,叫failover。

目的:实现主库(orcl)和从库(standby)的切换

主库参数设置检查

  --检测fal_client、fal_server、standby_file_management、db_file_name_convert 、log_filename_convert是否合理

  1. SQL> col name format a25
  2. SQL> col VALUE format a20
  3. select a.name,a.value from v$parameter a
  4. where a.name like '%file_name_convert'
  5. or a.NAME LIKE 'fal%'
  6. or a.NAME LIKE 'standby_file%';
  7.  
  8. NAME       VALUE
  9. ------------------------- --------------------
  10. db_file_name_convert standby, orcl
  11. log_file_name_convert standby, orcl
  12. fal_client      orcl
  13. fal_server      standby
  14. standby_file_management AUTO

  --standbylog file 是否已经创建

  1. select GROUP#, DBID db_id, THREAD#, SEQUENCE#, BYTES, USED, ARCHIVED, STATUS, FIRST_CHANGE#, NEXT_CHANGE#,LAST_CHANGE# from v$standby_log ;
  2.  
  3. SQL> select * from v$logfile;

主库切换为备库

  1. SQL> select name, LOG_MODE, OPEN_MODE, database_role, SWITCHOVER_STATUS, db_unique_name from v$database;
  2.  
  3. NAME LOG_MODE OPEN_MODE DATABASE_ROLE SWITCHOVER_STATUS DB_UNIQUE_NAME
  4. ------------------------- ------------ -------------------- ---------------- -------------------- ------------------------------
  5. ORCL ARCHIVELOG READ WRITE PRIMARY TO STANDBY orcl
  6.  
  7. SQL> alter database commit to switchover to physical standby with session shutdown;
  8.  
  9. 数据库已更改。
  10.  
  11. SQL> shutdown immediate
  12. ORA-01507: 未装载数据库
  13.  
  14. ORACLE 例程已经关闭。
  15. SQL> startup mount
  16. ORACLE 例程已经启动。
  17.  
  18. Total System Global Area 805875712 bytes
  19. Fixed Size 2217672 bytes
  20. Variable Size 595593528 bytes
  21. Database Buffers 201326592 bytes
  22. Redo Buffers 6737920 bytes
  23. 数据库装载完毕。
  24. SQL> select name, LOG_MODE, OPEN_MODE, database_role, SWITCHOVER_STATUS, db_unique_name from v$database;
  25.  
  26. NAME LOG_MODE OPEN_MODE DATABASE_ROLE SWITCHOVER_STATUS DB_UNIQUE_NAME
  27. ------------------------- ------------ -------------------- ---------------- -------------------- ------------------------------
  28. ORCL ARCHIVELOG MOUNTED PHYSICAL STANDBY TO PRIMARY orcl

--新备库开启实时应用

  1. SQL> alter database recover managed standby database disconnect from session;
  2.  
  3. 数据库已更改。
  4.  
  5. SQL> select name, LOG_MODE, OPEN_MODE, database_role, SWITCHOVER_STATUS, db_unique_name from v$database;
  6.  
  7. NAME LOG_MODE OPEN_MODE DATABASE_ROLE SWITCHOVER_STATUS DB_UNIQUE_NAME
  8. ------------------------- ------------ -------------------- ---------------- -------------------- ------------------------------
  9. ORCL ARCHIVELOG MOUNTED PHYSICAL STANDBY SESSIONS ACTIVE orcl

备库切换成主库

  1. SQL> host echo $ORACLE_SID
  2. standby
  3.  
  4. SQL> alter database commit to switchover to primary with session shutdown;
  5.  
  6. 数据库已更改。
  7.  
  8. SQL> set line 9999 pagesize 9999

SQL> alter database open;

数据库已更改。

SQL> select name, LOG_MODE, OPEN_MODE, database_role, SWITCHOVER_STATUS, db_unique_name from v$database;

NAME       LOG_MODE   OPEN_MODE      DATABASE_ROLE    SWITCHOVER_STATUS     DB_UNIQUE_NAME
 --------- ------------ -------------------- ---------------- -------------------- ------------------------------
 ORCL       ARCHIVELOG  READ WRITE      PRIMARY           TO STANDBY             standby

至此切换完成


切换回原来的最初的状态

standby(新主库)上的操作

  1. SQL> alter database commit to switchover to physical standby with session shutdown;
  2.  
  3. 数据库已更改。
  4.  
  5. SQL> shutdown immediate
  6. ORA-01507: 未装载数据库
  7.  
  8. ORACLE 例程已经关闭。
  9. SQL> startup mount;

orcl(新备库)上的操作

  1. SQL> !echo $ORACLE_SID
  2. orcl
  3.  
  4. SQL> alter database commit to switchover to primary with session shutdown;
  5.  
  6. 数据库已更改。
  7.  
  8. SQL> alter database open;
  9.  
  10. 数据库已更改。
  11.  
  12. SQL> select name, LOG_MODE, OPEN_MODE, database_role, SWITCHOVER_STATUS, db_unique_name from v$database;
  13.  
  14. NAME LOG_MODE OPEN_MODE DATABASE_ROLE SWITCHOVER_STATUS DB_UNIQUE_NAME
  15. ------------------------- ------------ -------------------- ---------------- -------------------- ------------------------------
  16. ORCL ARCHIVELOG READ WRITE PRIMARY TO STANDBY orcl

standby(新主库)上的操作

  1. SQL> alter database recover managed standby database disconnect from session;
  2.  
  3. 数据库已更改。

DG的Switchover切换的更多相关文章

  1. Oracle 11g DG手工switchover切换标准化流程

    Oracle 11g DG手工switchover切换标准化流程 环境:RHEL 6.5 + Oracle GI 11.2.0.4 + Oracle DB 11.2.0.4 Primary RAC(2 ...

  2. 【DATAGUARD】物理dg的switchover切换(五)

    [DATAGUARD]物理dg的switchover切换(五) 一.1  BLOG文档结构图 一.2  前言部分 一.2.1  导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其 ...

  3. DG中switchover切换操作

    问题描述:我们配置DG的目的就是为了在主库出现故障时,备库能够提供服务,保证业务的正常运行,switchover是用户有计划的进行停机切换,能够保证不丢失数据,我记录一下我进行switchover中的 ...

  4. 【DATAGUARD】物理dg的failover切换(六)

    [DATAGUARD]物理dg的failover切换(六) 一.1  BLOG文档结构图 一.2  前言部分 一.2.1  导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你 ...

  5. 【Oracle】DG中 Switchover 主、备切换

    操作系统:OEL 5.6 数据库版本:Oracle11gR2  11.2.0.4.0 Switchover切换要求主库和备库在数据同步情况下进行,是主备之间的正常切换,主要用于日常维护.灾备演练等.切 ...

  6. data guard switchover切换异常

    data guard switchover切换异常 查看DG数据库备份库发现,switchover_status为SWITCHOVER LATENT SQL> select OPEN_MODE, ...

  7. DG主备切换遇到not allwod或者RESOLVABLE GAP解决办法

    今天做switchover,环境是11.2.0.3+OEL5.7,开始时主备库状态都是正常的,符合直接切换条件: 主库: SQL> select open_mode,database_role, ...

  8. oracle dg failover灾难切换

    oracle dg failover灾难切换SQL> alter database recover managed standby database finish force;SQL> a ...

  9. DG - logical standby switchover切换过程

    从11g起,主库和逻辑备库之间切换不再需要关闭任何数据库实例. 1.检查主数据库是否处于考虑切换状态 SQL> select switchover_status from v$database; ...

随机推荐

  1. Responsive设计——不同设备的分辨率设置

    下面我们一起来看看CSS3 Meida Queries在标准设备上的运用,大家可以把这些样式加到你的样式文件中,或者单独创建一个名为“responsive.css”文件,并在相应的条件中写上你的样式, ...

  2. 索尼Sony ATI显卡驱动 Win7 Win8 Win8.1 视频黑屏 解决方法

    索尼ATI显卡驱动 Win7  Win8  Win8.1 视频 黑屏 完美解决方法: 下载这个补丁 安装 即可 解决  ! baidu pan:  http://pan.baidu.com/s/1gd ...

  3. Djunit工作记录Mock时出现为null的情况setReturnValueAt|MockObjectManager.addReturnValue不起作用

    最近工作要对代码进行局部测试并编写测试文档,可是偶的环境还没搞好哦(开始不太乐意直接请教前辈,还是选择自己先搞一下了)经过电脑重装jdk ,eclipse,djunit工具包ver***,等等确定不是 ...

  4. 夺命雷公狗----Git---4---多人协作实现

    基本流程: 1..创建一个git裸服务器(git init --bare) 2..从裸服务器将版本库克隆到本地(git clone) 3..本地常规操作(git remote + git push o ...

  5. 【转】python中的正斜杠、反斜杠

    原文地址:http://www.cnblogs.com/followyourheart1990/p/4270566.html 首先,"/"左倾斜是正斜杠,"\" ...

  6. 几个js函数

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  7. 关于oracle中in和exists的区别

    一般来说,这两个是用来做两张(或更多)表联合查询用的,in是把外表和内表作hash 连接,而exists 是对外表作loop 循环,假设有A.B两个表,使用时是这样的: 1.select * from ...

  8. PHP 生成验证码

    //加载 vendor目录的phpqrcode.类文件 $a = vendor("phpqrcode.qrlib");// 创建目录 echo mkdir(__ROOT__.'/U ...

  9. 非常好的Oracle教程【转】

    http://www.blogjava.net/kiant/articles/234781.html Oracle 笔记(四).SQL 几个要点 附录: 1.SQL 简介 2.SQL 操作符 3.Or ...

  10. 如何用Java代码列出一个目录下所有的文件?

    目录文件夹 File file=new File("H:\\"); for(File temp:file.listFiles()){//Java5的新特性之一就是增强的for循环. ...