主备库切换

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. BrowserSync,调试利器--自动刷新(转

    ---恢复内容开始--- 请想象这样一个场面:你开着两个显示器,一边是IDE里的代码,另一边是浏览器里的你正在开发的应用.此时桌上还放着你的手机,手机里也是这个开发中的应用.然后,你新写了一小段代码, ...

  2. (转)Linux: su sudo sudoer

    http://zebralinux.blog.51cto.com/8627088/1369301 日常操作中为了避免一些误操作,更加安全的管理系统,通常使用的用户身份都为普通用户,而非root.当需要 ...

  3. ORACLE 全局索引和本地索引

    Oracle数据库中,有两种类型的分区索引,全局索引和本地索引,其中本地索引又可以分为本地前缀索引和本地非前缀索引.下面就分别看看每种类型的索引各自的特点. 全局索引以整个表的数据为对象建立索引,索引 ...

  4. Asp.Net MVC4 系列-- 进阶篇之路由(1)【转】

    http://blog.csdn.net/lan_liang/article/details/22993839?utm_source=tuicool

  5. Java与WCF交互(一):Java客户端调用WCF服务

    最近开始了解WCF,写了个最简单的Helloworld,想通过java客户端实现通信.没想到以我的基础,居然花了整整两天(当然是工作以外的时间,呵呵),整个过程大费周折,特写下此文,以供有需要的朋友参 ...

  6. store / cache 系列

    ### golang go-cache An in-memory key:value store/cache (similar to Memcached) library for Go, suitab ...

  7. metadata lock

    1 锁等待的例子 session 1: 执行查询但不提交 mysql> begin; mysql> select * from test where c2 = '1'; session 2 ...

  8. C++ primer里的template用法

    来源:http://c.chinaitlab.com/cc/ccjq/200806/752604_2.html --  template 的用法    在程序设计当中经常会出现使用同种数据结构的不同实 ...

  9. Redis源码分析系列

    0.前言 Redis目前热门NoSQL内存数据库,代码量不是很大,本系列是本人阅读Redis源码时记录的笔记,由于时间仓促和水平有限,文中难免会有错误之处,欢迎读者指出,共同学习进步,本文使用的Red ...

  10. POJ 3744 Scout YYF I (概率dp+矩阵快速幂)

    题意: 一条路上,给出n地雷的位置,人起始位置在1,向前走一步的概率p,走两步的概率1-p,踩到地雷就死了,求安全通过这条路的概率. 分析: 如果不考虑地雷的情况,dp[i],表示到达i位置的概率,d ...