ORACLE 11G Data Guard 角色转换

1,ORACLE Dataguard角色切换
DataGuard已经是现今标准的主流容灾方案,由于日志传递对于网络适应程度强,且可以采用同步实时的传递方式和异步延迟的传递方式,甚至可以成为远程的异地容灾方案。不管用于何种用途,DG都免不了要进行角色转换,即将standby 数据库切换为primary数据库,角色转换分为:switchover和failover两种

2,两种方式的异同
1),switchover是primary库转换成standby库、standby库转换成primary库
2),failover后standby转换成primary库启用
3)、使用场合不同:Switchover 用于有准备的、计划之中的切换,通常是系统升级、数据迁移等常态任务;Failover用于意料之外的突发情况,比如异常掉电、自然灾难等等。
4)、数据丢失程度不同:Switchover不会丢失数据,Failover通常意味着有部分数据丢失。
5)、善后处理的不同:Switchover之后Dataguard环境不会被破坏,任然有Primary、Standby两种角色的系统存在。但是Failover之后,Dataguard环境就会被破坏,必须需要重建。

3.在primary上做switchover操作
switchover 准备工作,注意,如果要转换角色的standby 处于maximum protection 模式,需要你首先将其切换为maximum performance 模式,
先检查是否支持switch操作,登录primary库,去查询v$database表的switchover_status列
SQL> select switchover_status from v$database;

SWITCHOVER_STATUS
--------------------
TO STANDBY

SQL> 
如果该列值为"TO STANDBY"则表示primary 数据库支持转换为standby 角色,否则的话你就需要重新检查一下Data Guard 配置,比如看看LOG_ARCHIVE_DEST_n 之类参数值是否正确有效等等。

3.1,启动switchover --primary上操作
首先将primary 转换为standby 的角色,通过下列语句:
alter database commit to switchover to physical standby;
SQL> alter database commit to switchover to physical standby;

Database altered.

SQL>

3.2 重启到mount
SQL> shutdown immediate
ORA-01507: database not mounted

ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area 3373858816 bytes
Fixed Size    2218032 bytes
Variable Size 1845495760 bytes
Database Buffers 1509949440 bytes
Redo Buffers   16195584 bytes
Database mounted.
SQL>

3.3,去查看当前的状态
SQL> select switchover_status from v$database;

SWITCHOVER_STATUS
--------------------
TO PRIMARY

SQL> 
switchover_status为TO PRIMARY。
SQL> select open_mode,database_role from v$database;

OPEN_MODE     DATABASE_ROLE
-------------------- ----------------
MOUNTED     PHYSICAL STANDBY

SQL> 
database_role为物理standby(PHYSICAL STANDBY)。
转换成功。

4 在待转换的standby库上做switchover操作 

4.1 查看下,是否支持switchover切换操作
SQL> select switchover_status from v$database;

SWITCHOVER_STATUS
--------------------
TO PRIMARY

SQL> 
此时待转换standby 数据库switchover_status 列值应该是"TO_PRIMARY",如否则检查其初始化参数文件中的设置,提示一下,比着原primary 数据库的初始化参数改改。

4.2,转换成primary,通过下列语句转换standby 到primary 角色:
alter database commit to switchover to primary;
SQL> alter database commit to switchover to primary;

Database altered.

SQL> 
注意:待转换的物理standby 可以处于mount 模式或open read only 模式,但不能处于open read write模式。

4.3,完成转换,打开新的primary 数据库
alter database open;
注:如果数据库处于open read-only 模式的话,需要先shutdown 然后直接startup 即可。
查看数据库模式:
SELECT open_mode,database_role FROM v$database;
SQL> SELECT open_mode,database_role FROM v$database;

OPEN_MODE     DATABASE_ROLE
-------------------- ----------------
READ WRITE     PRIMARY

SQL>

5,验证一下新的primary以及新的standby操作
去新的primary上
SQL> show parameter db_unique

NAME     TYPE VALUE
------------------------------------ ----------- ------------------------------
db_unique_name     string pdunq_dg
SQL> 
SQL> 
SQL> select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)
--------------
  369

SQL>

SQL> alter system switch logfile;
System altered.

SQL>

select max(sequence#) from v$archived_log;
SQL> select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)
--------------
  370

SQL>

去新的standby库查看下 
SQL> select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)
--------------
  368

SQL>

redo日志没有传送到新的standby上面去,检查下新primary的alert日志,如下报错:
Mon Feb 09 16:55:35 2015
Error 12154 received logging on to the standby
Errors in file /oracle/app/oracle/diag/rdbms/pdunq_dg/powerdes/trace/powerdes_arc2_23808.trc:
ORA-12154: TNS:could not resolve the connect identifier specified
PING[ARC2]: Heartbeat failed to connect to standby ‘pdunq_dg‘. Error is 12154.
Mon Feb 09 16:56:35 2015
Error 12154 received logging on to the standby
Errors in file /oracle/app/oracle/diag/rdbms/pdunq_dg/powerdes/trace/powerdes_arc2_23808.trc:
ORA-12154: TNS:could not resolve the connect identifier specified
PING[ARC2]: Heartbeat failed to connect to standby ‘pdunq_dg‘. Error is 12154.

6,问题排查
这个报错原因是因为原来的primary和standby的db_unique_name不一样,所以switchover后,原来指向的归档参数的db_unique_name要与新的standby保持一致,也就是要保持成pdunq才行:
去查看下 show parameter log_archive_dest_2参数:
SQL> show parameter log_archive_dest_2;

NAME     TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_2     string SERVICE=pdunq_dg  lgwr sync af
firm VALID_FOR=(ONLINE_LOGFILE
S,PRIMARY_ROLE) DB_UNIQUE_NAME
=pdunq
log_archive_dest_20     string
log_archive_dest_21     string
log_archive_dest_22     string
log_archive_dest_23     string
log_archive_dest_24     string
log_archive_dest_25     string
log_archive_dest_26     string

NAME     TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_27     string
log_archive_dest_28     string
log_archive_dest_29     string
SQL> 
--修改log_archive_dest_2参数
alter system set log_archive_dest_2=‘SERVICE=pdunq_dg  lgwr sync affirm VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=pdunq‘;
alter system set log_archive_dest_state_2=enable;
alter system switch logfile;
SQL> alter system set log_archive_dest_2=‘SERVICE=pdunq_dg  lgwr sync affirm VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=pdunq‘;

System altered.

SQL> alter system set log_archive_dest_state_2=enable;

System altered.

SQL> alter system switch logfile;

System altered.

SQL> 
去新的primary、standby库使用select max(sequence#) from v$archived_log;检查记录
SQL> select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)
--------------
  373

SQL> 
至此,switchover成功结束。

7, failover 物理standby的转换成primary库

7.1、检查归档文件是否连续 在standby上操作
查询待转换standby 数据库的V$ARCHIVE_GAP 视图,确认归档文件是否连接:
SQL> SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;

no rows selected

SQL> 
如果返回的有记录,按照列出的记录号复制对应的归档文件到待转换的standby 服务器。这一步非常重
要,必须确保所有已生成的归档文件均已存在于standby 服务器,不然可能会数据不一致造成转换时报错。
文件复制之后,通过下列命令将其加入数据字典:
ALTER DATABASE REGISTER PHYSICAL LOGFILE ‘filespec1‘;

7.2、检查归档文件是否完整
分别在primary/standby 执行下列语句:
SQL> select distinct thread#,max(sequence#) over(partition by thread#) a from v$archived_log;

THREAD#    A
---------- ----------
1  375

SQL> 
该语句取得当前数据库各线程已归档文件最大序号,如果primary 与standby 最大序号不相同,必须将
多出的序号对应的归档文件复制到待转换的standby 服务器。不过既然是failover,有可能primary 数据库此
时已经无法打开,甚至无法访问,那你只好听天由命喽。

7.3、启动failover 在standby上执行
执行下列语句:alter database recover managed standby database finish force;
SQL> alter database recover managed standby database finish force;

Database altered.

SQL> 
FORCE 关键字将会停止当前活动的RFS 进程,以便立刻执行failover。
剩下的步骤就与一般的switchover 很相似了

7.4、切换物理standby 角色为primary
SQL> SQL> alter database commit to switchover to primary;

Database altered.

SQL>

7.5、启动新的primary 数据库。
如果当前数据库已mount,直接open 即可,如果处于read-only 模式,需要首先shutdown immediate,然后再直接startup。
先查看db的模式,命令为:select open_mode,database_role from v$database;
SQL> select open_mode,database_role from v$database;

OPEN_MODE     DATABASE_ROLE
-------------------- ----------------
MOUNTED     PRIMARY

SQL>

为mount,所以需要open
SQL> alter database open;

Database altered.

SQL> 
再去查看新primary的当前数据模式:
SQL> select open_mode,database_role from v$database;

OPEN_MODE     DATABASE_ROLE
-------------------- ----------------
READ WRITE     PRIMARY

SQL>

角色转换工作完成。剩下的是补救措施(针对原primary 数据库),由于此时primary 数据库已经不再是data guard 配置的一部分,我们需要做的就是尝试看看能否恢复原primary 数据库,将其改造为新的standby服务器。具体操作方式可以分为二类:2.重建2.备份恢复。

----------------------------------------------------------------------------------------------------------------
<版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!>
原博客地址:       http://blog.itpub.net/26230597/viewspace-1432708/?
原作者:黄杉 (mchdba)
----------------------------------------------------------------------------------------------------------------

时间: 2024-10-16 21:07:58

ORACLE 11G Data Guard 角色转换的相关文章

Oracle 11g Data Guard 之逻辑备库角色转换

逻辑备库不复制数据库服务,在进行switchover或者failover时,连接主库服务的中间层将不能连接(因为服务的创建没有被复制),或者连接不正确的版本(因为服务属性的修改没有被复制). Oracle集群不复制管理逻辑备库的服务,必须手动对主库与备库进行同步,具体的详参Oracle集群管理和部署的相关内容. 一.逻辑备库的switchover操作 当进行switchover操作来改变主库和逻辑备库的角色时,总是在主库启动switchover,然后在逻辑备库完成操作,其中的步骤必须按顺序,否则

Oracle 11g Data Guard 之角色转换

1.1 简介 Data Guard配置包括1个primary角色的数据库和1个或者多个standby角色的数据库,数据库的角色我们可以通过V$DATABASE中DATABASE_ROLE字段来获得. 另外,Data Guard配置中standby库的数量.位置.备库类型以及redo data从主库传到备库的方式,决定了主库发生停机故障时能采用的角色管理方案. 当数据库运行于Data Guard中primary或者standby这样互斥的角色时,可以通过SQL语句或者Data Guard brok

Oracle 11g Data Guard 之物理备库角色转换

一.物理备库的Switchover操作 本节主要内容是物理备库的switchover操作,该操作起始于主库,结束于目标备库. 1.确认主库可以切换为standby角色 SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE; 如果结果显示TO STANDBY或者SESSIONS ACTIVE,则表明主库可以切换为standby角色,否则,切换操作将不可行,因为redo传输不是配置错误就是不能正常进行. 2.主库启动switchover 执行如下SQL语句将主库

Oracle 11g Data Guard 物理备库快速配置指南(上)

缘起 最近做了10g和11g的物理备库配置实验,发现 Data Guard 其实很容易,但是缺少好文档.我是参考官方文档做的实验,觉得它写的不是很清楚的. Google 出来两个pdf文档,读了觉得比官方文档强很多.翻译下,也许会对某些朋友有用.翻译的同时我也好更熟悉下这两个文档.好久没翻译过英文了,可以顺便练练手. 原文档下载地址(墙外): Configure Dataguard 11gR2 Physical Standby Part 1 Configure Dataguard 11gR2 P

Oracle 11g Data Guard 使用duplicate from active database 创建 standby database

用这种方式来搭建DG ,主库的停机时间很少,只需要重启一下,使参数生效.也可以用这种方法进行DB迁移.DG搭建好,然后把备库激活就可以了. 这样整个迁移中宕机时间也比较短. Oracle 11g的pyhsical standby 支持open read only 下的apply和Real-time query. 因此就有了physical standby 稳定和logical standby 的报表查询功能. Oracle: 11.2.0.1 OS: redhat 5.5 Primary IP:

Oracle 11g Data Guard Broker操作笔记

转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/41548669 一.设置 1.设置broker 在主备库上各设置为trueSQL> alter system set dg_broker_start=true; 2.在主库上操作[[email protected] admin]$ dgmgrl sys/[email protected] DGMGRL> help DGMGRL> help create DGMGRL> CRE

Oracle RAC + Data Guard 环境搭建

国庆之前就准备做这个实验了. 后来时间不够,就没搞了. 6天的长假一放,都散漫的不成样子了.懒散了很多. 今天7号. 上班也没啥精神,但是该做的实验还得继续. Oracle 高可用性的三个主要体现是: RAC, Data Guard 和 Stream.  所以熟练掌握这些技术就是评价DBA的标准一个. RAC + Data Guard 主要用在灾备或者报表服务器上. 比如用RAC+ 逻辑standby 做报表,从而减轻RAC 系统的压力. 关于Data Guard 的一些原理知识可以参考: Or

Oracle 11g 导出数据报 “ORA-01455: 转换列溢出整数数据类型”的问题

最近发现云服务器上的Oracle 11g在导出时报错,如下: ... . 正在导出后期表活动. 正在导出实体化视图. 正在导出快照日志EXP-00008: 遇到 ORACLE 错误 1455ORA-01455: 转换列溢出整数数据类型EXP-00000: 导出终止失败 从网上搜了半天,有很多种说法:1. 版本问题,说10g的导出11g的就有这个问题,但是我的客户端和服务器采用的是相同的版本,所以不存在版本问题.有的还说是32位和64位的问题,我的Oracle是32位,客户端也是32位,同一台设备

Oracle 12c Data Guard 纯小白部署手册

子公司需要搭建数据仓库,并且新建ADG作为主从,硬件设备Dell R730机器:192.168.1.11 dwjrdb --主库 192.168.1.12 dwjrstdyd --备库--数据库软件:linuxx64_12201_database.zip--数据库补丁包:p27105253_122010_Linux-x86-64.zip--Opatch升级包:p6880880_122010_Linux-x86-64.zip--目录规划为/u01存放归档日志,数据文件等,目录6.6TB空间 一.数