主备库切换

Switchover

一般SWITCHOVER切换都是计划中的切换,特点是在切换后,不会丢失任何的数据,而且这个过程是可逆的,整个DATA GUARD环境不会被破坏,原来DATA GUARD环境中的所有物理和逻辑STANDBY都可以继续工作。

在进行DATA GUARD的物理STANDBY切换前需要注意:

1)确认主库和从库间网络连接通畅;

2)确认没有活动的会话连接在数据库中;

3)PRIMARY数据库处于打开的状态,STANDBY数据库处于MOUNT状态;

4)确保STANDBY数据库处于ARCHIVELOG模式;

5)如果设置了REDO应用的延迟,那么将这个设置去掉;

6)确保配置了主库和从库的初始化参数,使得切换完成后,DATA GUARD机制可以顺利的运行。 -

主库:

1. 查看switchover 状态

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS

--------------------

TO STANDBY

附: A:switchover_status出现session active/not allowed

当出现session active的时候表示还有活动的session,则运行

Alter database commit to switchover to physical standby with session shutdown;

当出现not allowed时,在官方文档说转换会不成功,但是我测试的时候成功了。

B.ora- 01153: an incompatible media recovery is active

运行下面代码

Alter database recover managed standby database finish;

或者Alter database recover managed standby database finish force;

Alter database recover managed standby database disconnect from session;

2 切换成备库

SQL>Alter database commit to switchover to physical standby with session shutdown;

或者

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;

Database altered.

3 启动到mount和应用日志状态

SQL> SHUTDOWN IMMEDIATE

SQL> startup nomount;

SQL> alter database mount standby database;

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

4. 查看数据库模式

SQL>select dest_name,status,database_mode,recovery_mode,protection_mode from v$archive_dest_status;

SQL>select status,database_mode from v$archive_dest_status;

备库:

1.查看switchover状态

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

TO PRIMARY

附:若不是用此语句切换:ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY with session shutdown

补充:若出现:ORA-16139: media recovery required

是因为没有执行:alter database recover managed standby database disconnect from session;

2. 切换成主库

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

Database altered.

SQL> shutdown immediate;

SQL> startup;

SQL> alter system switch logfile;

3. 查看数据库模式

SQL>select dest_name,status,database_mode,recovery_mode,protection_mode from v$archive_dest_status;

SQL>select status,database_mode from v$archive_dest_status;

验证同步:

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

MAX(SEQUENCE#)

--------------

13

Failovers:

FAILOVER切换一般是PRIMARY数据库发生故障后的切换,这种情况是STANDBY数据库发挥其作用的情况。这种切换发生后,可能会造成数据的丢失。而且这个过程不是可逆的,DATA GUARD环境会被破坏。

由于PRIMARY数据库已经无法启动,所以FAILOVER切换所需的条件并不多,只要检查STANDBY是否运行在最大保护模式下,如果是的话,需要将其置为最大性能模式,否则切换到PRIMARY角色也无法启动。

1. 查看是否有日志GAP,没有应用的日志:

SQL> SELECT UNIQUE THREAD#, MAX(SEQUENCE#) OVER(PARTITION BY THREAD#) LAST FROM V$ARCHIVED_LOG;

SQL> SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;

如果有,则拷贝过来并且注册

SQL> ALTER DATABASE REGISTER PHYSICAL LOGFILE '路径';

重复查看直到没有应用的日志:

2. 然后停止应用归档:

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

Database altered.

3. 下面将STANDBY数据库切换为PRIMARY数据库: -

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH FORCE;

  Database altered.

SQL> SELECT DATABASE_ROLE FROM V$DATABASE;

DATABASE_ROLE

----------------

PHYSICAL STANDBY

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

Database altered.

SQL> ALTER DATABASE OPEN; 或者 shutdown immediate+startup

Database altered.

检查数据库是否已经切换成功:

SQL> SELECT DATABASE_ROLE FROM V$DATABASE;

DATABASE_ROLE

----------------

PRIMARY

至此,FAILOVER切换完成。这个时候应该马上对新的PRIMARY数据库进行备份。

List

--监控日志应用服务                     v$database

--查看进程的活动状态                   v$managed_standby

--查看redo应用进度                    v$archhive_dest

--检查应用模式(是否启用了实时应用)   v$archive_dest_status

--检查归档文件路径和创建信息           v$archive_log

--查询归档历史                         v$log_histroy

--修改语句查找最后应用的归档           v$log_history

--Data Guard 事件                       v$dataguard_status

--调整物理Standby端REDO数据应用频率

--监控日志应用服务

SQL>select database_role,db_unique_name,open_mode,protection_mode,protection_level,switchover_status from v$database;

--查看进程的活动状态

V$managed_standby

SQL> SELECT PROCESS,CLIENT_PROCESS,SEQUENCE#, STATUS FROM

V$MANAGED_STANDBY;

PROCESS   CLIENT_P  SEQUENCE# STATUS

--------- -------- ---------- ------------

ARCH      ARCH              0 CONNECTED

ARCH      ARCH              0 CONNECTED

MRP0      N/A               9 WAIT_FOR_LOG

RFS       UNKNOWN           0 IDLE相关说明:

PROCESS:进程名称,如ARCH、RFS、MRP0等。

CLIENT_P:对应的Primary数据库中的进程,如ARCH、LGWR等。

SEQUENCE#:归档序号。

STATUS:进程的当前状态,值较多,常见的有:

)ALLOCATED:正准备连接Primary数据库。

)ATTACHED:正在连接Primary数据库。

)CONNECTED:已连接至Primary数据库。

)IDLE:空闲中。

)RECEIVING:归档文件接收中。

)OPENING:归档文件处理中。

)CLOSING:归档文件处理完,收尾中。

)WRITING:REDO数据库写向归档文件中。

)WAIT_FOR_LOG:等待新的REDO数据中。

)WAIT_FOR_GAP:归档有中断,正等待中断的那部分REDO数据。

)APPLYING_LOG:应用REDO数据中。

--查看redo应用进度

V$archive_dest_status

SQL>

SELECT DEST_NAME,ARCHIVED_THREAD#,ARCHIVED_SEQ#,APPLIED_THREAD#,APPLIED_SEQ#,DB_UNIQUE_NAME FROM V$ARCHIVE_DEST_STATUS WHERE

STATUS='VALID';

DEST_NAME ARCHIVED_THREAD# ARCHIVED_SEQ# APPLIED_THREAD# APPLIED_SEQ# DB_UNIQUE_NAME

-------------------- ---------------- - -- ------------ ------------------------------

LOG_ARCHIVE_DEST_1  1       8    0    0 dg_pd

LOG_ARCHIVE_DEST_2  1       8    1    7 dg_st

--检查应用模式(是否启用了实时应用)

SQL>SELECT RECOVERY_MODE FROM V$ARCHIVE_DEST_STATUS WHERE DEST_ID=2;

--检查归档文件路径和创建信息

V$archived_log

SQL>SELECT NAME,CREATOR,SEQUENCE#,APPLIED,COMPLETION_TIME FROM

V$ARCHIVED_LOG

NAME                           CREATOR  SEQUENCE# APP COMPLETIO

------------------------------ ------- ---------- --- ---------

/u01/archive/1_3_743828540.dbf ARCH             3 YES 23-FEB-11

/u01/archive/1_4_743828540.dbf ARCH             4 YES 23-FEB-11

/u01/archive/1_5_743828540.dbf ARCH             5 YES 23-FEB-11

/u01/archive/1_6_743828540.dbf ARCH             6 YES 23-FEB-11

/u01/archive/1_7_743828540.dbf ARCH             7 YES 23-FEB-11

--查询归档历史

V$log_history

SQL> SELECT FIRST_TIME,FIRST_CHANGE#,NEXT_CHANGE#, SEQUENCE# FROM V$LOG_HISTORY;

FIRST_TIM FIRST_CHANGE# NEXT_CHANGE#  SEQUENCE#

--------- ------------- ------------ ----------

23-FEB-11        446075       475647          1

23-FEB-11        475647       499245          2

23-FEB-11        499245       502860          3

23-FEB-11        502860       502901          4

23-FEB-11        502901       509381          5

23-FEB-11        509381       510608          6

23-FEB-11        510608       510610          7

7 rows selected.

--修改语句查找最后应用的归档

SQL> SELECT THREAD#, MAX(SEQUENCE#) AS "LAST_APPLIED_LOG" FROM V$LOG_HISTORY GROUP BY THREAD#;

THREAD# LAST_APPLIED_LOG

---------- ----------------

1                8

--Data Guard 事件

V$dataguard_status

--调整物理Standby端的redo数据应用频率

1>设置recover并行度

Redo apply|sql apply 都需要读取重做日志,默认串行。

Parallel子句指定并行度

SQL>recover standby database parallel 2

建议#CPUs*2

2>加快应用频繁

Db_block_checking=false

3>设置PARALLEL_EXECUTION_MESSAGE_SIZE参数值

也能提高大概20%左右的性能,不过需要注意,增大这个参数的参数值可能会占用更多内存。

4>优化磁盘I/0

恢复期间最大的瓶颈就是I/O读写,要缓解这个瓶颈,使用本地异步I/O并设置初始化参数DISK_ASYNCH_IO=TRUE会有所帮助。DISK_ASYNCH_IO参数控制到数据文件的磁盘I/O是否异步。某些情况下异步I/O 能降低数据库文件并行读取,提高整个恢复时间。

Oracle DataGuard 物理Standby 搭建(下)的更多相关文章

  1. Oracle DataGuard 物理Standby 搭建(上)

    物理standby database 环境搭建 Arch asysnc Oracle Dataguard host IP Oracle_sid DB_unique_name FAL_server FA ...

  2. (摘)DataGuard物理standby管理 - 主备切换

    DataGuard物理standby管理 - 主备切换 Dataguard的切换分为两种,switchover和failover. switchover一般用于数据库或硬件升级,这时只需要较短时间中断 ...

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

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

  4. ORACLE11g Dataguard物理Standby 日常巡检操作手册

    ORACLE11g Dataguard物理Standby日常巡检操作手册 编写:_____________校对:_____________日期:_____________ 目录1.DG环境的日常巡检 ...

  5. DataGuard相同SID物理Standby搭建

    Oracle Data Guard 是针对企业数据库的最有效和最全面的数据可用性.数据保护和灾难恢复解决方案.它提供管理.监视和自动化软件基础架构来创建和维护一个或多个同步备用数据库,从而保护数据不受 ...

  6. [Oracle][DATAGUARD] PHYSICAL STANDBY环境里,11.2.0.4 , 也可以使用Pfile来运行Primary和Standby(虽然很少有人用)

    ####Primary#### [oracle@primary ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on 金 ...

  7. [Oracle][DATAGUARD] PHYSICAL STANDBY环境里,使用CATALOG管理Primary和Standby

    1.先使用控制文件构筑好PHYSICAL STANDBY环境(Primary:Single 11.2.0.4,Standby Single 11.2.0.4) 2.构筑好Catalog用的服务器(Ca ...

  8. [Oracle][DATAGUARD] LOGICAL STANDBY环境里,有些SEQUENCE无法应用,导致Primary和Standby无法同期

    今天遇到了一个客户,问题是这样的,客户构筑了一个RACtoRAC的 LOGICAL STANDBY环境.并用EM在监视同期情况,发现EM页面上55115和55116这两个SEQUENCE一直在应用. ...

  9. Oracle Dataguard之物理standby的基本配置

    尽管网上有很多Oracle Dataguard的配置教程,但不难发现,很多采用的是rman duplicate这种方法,尽管此种方法较为简便.但在某种程度上,却也误导了初学者,虽说也能配置成功,但只知 ...

随机推荐

  1. QPS、PV和需要部署机器数量计算公式(转)

    术语说明: QPS = req/sec = 请求数/秒 [QPS计算PV和机器的方式] QPS统计方式 [一般使用 http_load 进行统计] QPS = 总请求数 / ( 进程总数 *   请求 ...

  2. 使用mp4v2将H264+AAC合成mp4文件

    录制程序要添加新功能:录制CMMB电视节目,我们的板卡发送出来的是RTP流(H264视频和AAC音频),录制程序要做的工作是: (1)接收并解析RTP包,分离出H264和AAC数据流: (2)将H26 ...

  3. 【转】《APUE》第三章笔记(4)及习题3-2

    原文网址:http://www.cnblogs.com/fusae-blog/p/4256794.html APUE第三章的最后面给出的函数,现在还用不着,所以,先留个名字,待到时候用着了再补上好了. ...

  4. HTTP请求中浏览器的缓存机制

    摘要:在Web开发过程中,我们可能会经常遇到浏览器缓存的问题.本文作者详细解释了浏览器缓存的机制,帮助读者更深层次的认识浏览器的缓存. 流程 当资源第一次被访问的时候,HTTP头部如下 (Reques ...

  5. [转] TreeList 当前节点图标和背景色设置

    高原之上原文TreeList 选中节点时图标状态和背景色 // 给TreeList加SelectImage this.treelArea.SelectImageList = imglCustom; / ...

  6. C++中引用的本质是什么?

    一般的教材上讲到引用时,都是说“引用是对象的一个别名”.我认为这种定义是不清晰的,不利于初学者理解引用.至少我自己曾经被这个定义困扰了一段时间.到底什么是“别名”? 实际上,引用的实质是位于xxxxx ...

  7. useful-scripts

    最近在github看到关于一些比较好的java相关脚本.vcs脚本.shell脚本.怕以后忘记了,在此做个备注. 原链接为:https://github.com/oldratlee/useful-sc ...

  8. IOS init initWith 等相关集中

    1.initWithCoder    当一个view从nib初始化的时候,会调用这个函数.  用keyedArchiver序列化一个类的实力,后面用keyedUnArchiver拿回来的时候会调用到 ...

  9. Ubuntu下命令行cd进不了/home/用户目录

    输入命令:cd /home/usr后和刚刚进入终端一样,其实已经进入了usr中,终端默认用usr用户登录,输入ls就可以查看usr目录下的文件

  10. uC/OS-II 移植笔记

    用过51.AVR.Freescale.STM32,但是写程序一直没有用过实时操作系统,一是因为写的项目不大,二是不太想去看手册学东西.现在写的项目也算比较大,因为需要,所以就学一下,这样也不至于每次的 ...