理论知识:
Switchover 切换允许primary 和一个备库进行切换,并且这种切换没有数据丢失。

前提条件:

1) 主备库相关参数 fal_client、fal_server 、standby_file_management 、 db_file_name_convert 、
log_file_name_convert 都已经配置。 standby logfile 日志组已创建。
(验证主备库的配置信息,包括初始化参数,归档模式,standby redo logs 和online redo log。 )

2)在主库查询V$ARCHIVE_DEST_STATUS 视图,验证备库没有redo 传输错误 或者redo gap。
SQL> SELECT STATUS, GAP_STATUS FROM V$ARCHIVE_DEST_STATUS WHERE DEST_ID = 2;
STATUS GAP_STATUS
--------- ------------------------
VALID NO GAP
只有这里状态是VALID 和NOGAP的情况下,才可以进行角色切换操作。

3) 确保主备库Temp 表空间一致。

4) 移除standby 上任何delay apply redo 的设置。

5) 如果是将RAC 主库切换到物理备库,RAC 主库只能保留一个节点,其他节点要关闭,在switchover 完成以后在启动关闭的节点即可。

6) 如果备库是real-time apply 的物理standby,并且是read only 模式,在切换之前,建议先将备库启动到mount状态,而不是open状态,这样可以实现最快速的角色切换,而不需要在切换之前清除用户的session连接。

7)如果有多个standby,在Role Transition 时如何选择 。 考虑位置,性能,数据库类型

主库参数检查:
SQL> show parameter fal_client
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
fal_client string devdb1
SQL> show parameter fal_server
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
fal_server string phydb
SQL> show parameter standby_file_management
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
standby_file_management string MANUAL
SQL> show parameter db_file_name_convert
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string +DATA/phydb/, +DATA/devdb/
SQL> show parameter log_file_name_convert
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_file_name_convert string +DATA/phydb/, +DATA/devdb/
SQL> select group# from v$standby_log;
GROUP#
----------
4
5
6
7

备库参数检查:
SQL> show parameter fal_client
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
fal_client string phydb
SQL> show parameter fal_server
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
fal_server string devdb1
SQL> show parameter standby_file_management
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
standby_file_management string AUTO
SQL> show parameter db_file_name_convert
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string +DATA/devdb/, +DATA/phydb/
SQL> show parameter log_file_name_convert
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_file_name_convert string +DATA/devdb/, +DATA/phydb/
SQL> select group# from v$standby_log;
GROUP#
----------
4
5
6
7

特别提醒: 作者环境为一个节点的rac+单节点dg 。 不同于两个节点的rac+dg,操作上有细微区别。如两个节点的rac,一个节点需shutdown,一个节点操作。

切换模式 :一个节点的rac主库切换备库,单节点备库切换成主库 。

1. 将主库切换成standby role:
SQL> alter database commit to switchover to physical standby with session shutdown;
Database altered.

2. 将原备库切换成主库 , 并 open 。
SQL> alter database commit to switchover to primary with session shutdown;
Database altered.

SQL> ALTER DATABASE OPEN;
Database altered.

3. 原主库并启动到open状态,启动 mgr 进程。
SQL> startup;
ORACLE instance started.
Total System Global Area 839282688 bytes
Fixed Size 2257880 bytes
Variable Size 603982888 bytes
Database Buffers 230686720 bytes
Redo Buffers 2355200 bytes
Database mounted.
Database opened.

SQL> alter database recover managed standby database using current logfile disconnect from session;
Database altered.

4. 验证
SQL> SELECT DEST_ID, STATUS,APPLIED_SCN FROM V$ARCHIVE_DEST WHERE TARGET='STANDBY';
DEST_ID STATUS APPLIED_SCN
---------- --------- -----------
2 VALID 0

切换模式: 单节点主库切换成备库,一个节点rac备库切换成主库。

1. 确认主库,新主库切换成备库
SQL> select name,database_role,switchover_status from v$database;
NAME DATABASE_ROLE SWITCHOVER_STATUS
--------- ---------------- --------------------
DEVDB PRIMARY TO STANDBY
SQL> alter database commit to switchover to physical standby with session shutdown;
Database altered.
2. 新备库切换成主库 , 并 open 。
SQL> alter database commit to switchover to primary with session shutdown;
Database altered.

SQL> alter database open;
Database altered.

3. 现备库open ,并启动 mgr 进程。
SQL> startup;
ORACLE instance started.
Total System Global Area 839282688 bytes
Fixed Size 2257880 bytes
Variable Size 603982888 bytes
Database Buffers 230686720 bytes
Redo Buffers 2355200 bytes
Database mounted.
Database opened.
SQL> alter database recover managed standby database using current logfile disconnect from session;
Database altered.

4. 主库执行检查
SQL> SELECT DEST_ID, STATUS,APPLIED_SCN FROM V$ARCHIVE_DEST WHERE TARGET='STANDBY';
DEST_ID STATUS APPLIED_SCN
---------- --------- -----------
2 VALID 1879072

主备角色switch的更多相关文章

  1. Keepalived 无法自动转换主备角色,请关注 iptables 防火墙配置

    最近在研究服务器高可用集群 (HA)…… 搭建了主备两台Keepalived,配置什么的全是网上照抄的,被验证过无数遍的示例…… 然而Master和Backup无法自动切换.两边会同时绑定浮动IP(V ...

  2. GoldenGate 传统抽取进程随 DataGuard 主备快速切换的方案(ADG 模式)

    环境描述: 1.节点描述 节点 IP 节点描述 11.6.76.221 GG 抽取端 / DG 节点,数据库版本号为 Oracle-11.2.0.3,与 11.6.76.222 组成 DataGuar ...

  3. 24 mysql怎么保证主备一致

    Mysql主备的基本原理 在状态1中,客户端直接访问节点A,而节点B只是备库,只是将A的binlog全部同步过来并应用到本地,这样可以保持节点B和节点A的数据是相同的. 当需要切换的时候,就变成状态2 ...

  4. pgsql主备搭建及切换

    二.主从搭建 2.1测试目标 测试postgresql主从搭建安装过程 2.2环境准备 实例级别的复制 流复制主库可读写,但从库只允许查询不允许写人, 而逻辑复制的从库可读写 流复制实验环境 主机 主 ...

  5. OceanBase中主备Rootserver如何管理切换

    主RootServer会不断给备RootServer发送lease.被RootServer收到该lease后会保存到几个变量中: int ObCheckRunnable::renew_lease(co ...

  6. Oracle Dataguard HA (主备,灾备)方案部署调试

    包括: centos6.5 oracle11gR2 DataGuard安装 dataGuard 主备switchover角色切换 数据同步测试 <一,>DG数据库数据同步测试1,正常启动主 ...

  7. 搭建实时同步data guard的最高可用-切换主备

    搭建实时同步data guard的最高可用-切换主备 首先保证主库在归档模式下:错过N次了 准备二台机器(hostname gw hosts ech0)host-only [root@node1 ~] ...

  8. [terry笔记]11gR2_dataguard_主备库切换

    主备库切换  Switchover  一般SWITCHOVER切换都是计划中的切换,特点是在切换后,不会丢失任何的数据,而且这个过程是可逆的,整个DATA GUARD环境不会被破坏,原来DATA GU ...

  9. Oracle 12C 物理Standby 主备切换switchover

    Oracle 12C 物理Standby 主备切换switchover Oracle 12C 物理Standby 主备切换switchover Table of Contents 1. 简述 2. 切 ...

随机推荐

  1. 全命令行手写MapReduce并且打包运行

    主要要讲的有3个 java中的package是干啥的? 工作了好几年的都一定真正理解java里面的package关键字,这里在写MapReduce需要进行打包的时候突然发现命令行下打包运行居然不会了, ...

  2. 给定一颗完全二叉树,给每一层添加上next的指针,从左边指向右边

    给你机会发出声音,但是不给你机会证明高层的决定是错的 RT: 时间复杂度O(n) 空间复杂度O(1)  原理就是有指针指向父节点和当前的节点,左孩子必指向右孩子,右孩子必指向父节点的下一个节点的左孩子 ...

  3. oracle索引INdex

    索引是与表相关的一种可选择数据库对象.索引是为提高数据检索的性能而建立,利用它可快速地确定指定的信息. 索引可建立在一表的一列或多列上,一旦建立,由ORACLE自动维护和使用,对用户是完全透明的.然而 ...

  4. Flyweight Design Pattern 共享元设计模式

    就是利用一个类来完毕多种任务.不用每次都创建一个新类. 个人认为这个设计模式在C++里面,好像能够就使用一个函数取代,利用重复调用这个函数完毕任务和重复利用这个类,好像几乎相同. 只是既然是一个设计模 ...

  5. visual studio 2010 c++ 打印 Hello world

    由于好奇心驱使温习下c高级简化语言语言(个人解释可能不太准确).下面用visual studio 2010 实现 HelloWord 打印 第一步:visual studio 2010 打开.文件-- ...

  6. l两张图片轮播

    在head里面加 <script language="javascript"> function scroll(spanlevel) { if (spanlevel.s ...

  7. linux c编程:进程间通信

    进程间的通信包括管道,共享内存,信号量通信,消息队列,套借口(socket)和全双工管道通信 首先来看下管道的用法:管道顾名思义,就如同下水道管道一样,当从管道一端流水到另一端的时候,水流的方向是单方 ...

  8. mac svn 使用

    上传文件 $ svn import file.xls svn://ip/sursen/05I\&V周报 -m "te"   备注: -m "冒号里面一定填写文件 ...

  9. PHP加Nginx实现动态裁剪图片方案

    许久以前写过一篇也是关于高性能PHP图片动态裁剪方案的文章,那文章使用的是nginx Cache和rewrite实现的,当然再加上CDN,那个方案存在一个问题就是图片并没有实际生成,而是以二进制的形式 ...

  10. docker 常用命令整理

    1.查看镜像 docker images 2.查看所有状态的容器 docker ps -a 3.运行容器 docker exec -it  container /bin/bash docker att ...