Oracle DataGuard 物理Standby 搭建(下)

转载 2012年03月24日 10:17:26

主备库切换 

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

--调整物理StandbyREDO数据应用频率 

--监控日志应用服务

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:进程名称,如ARCHRFSMRP0等。

CLIENT_P对应的Primary数据库中的进程,如ARCHLGWR等。

SEQUENCE#归档序号。

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

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

2ATTACHED正在连接Primary数据库。

3CONNECTED已连接至Primary数据库。

4IDLE空闲中。

5RECEIVING归档文件接收中。

6OPENING:归档文件处理中。

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

8WRITINGREDO数据库写向归档文件中。

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

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

11APPLYING_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参数值 

如果打开了并行恢复,适当提高初始化参数PARALLEL_EXECUTION_MESSAGE_ SIZE的参数值,比如4096也能提高大概20%左右的性能,不过需要注意,增大这个参数的参数值可能会占用更多内存。 

4>优化磁盘I/0

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


最简单的11g Active DataGuard(ADG)搭建配置过程(项目步

最简单的11g Active DataGuard(ADG)搭建配置过程(项目步骤)一、环境介绍:    我在db01和db02两台Linux虚拟机上首先分别安装了一套数据库软件,在db01主机上创建了...
  • wuweilong
  • wuweilong
  • 2015年06月18日 16:42
  • 13696

Oracle dataguard一主两备环境搭建

测试环境说明: 主 库:Reahat 6.5 x64 + Oracle 11.2.0.3 x64 单机(IP:192.168.6.10  db)  DB_UNIQUE_NAME=orcl 备库1:Re...
  • lk_db
  • lk_db
  • 2016年05月25日 14:09
  • 3451

数据迁移:DataGuard配置

本次快速搭建单实例物理DataGuard,为解决某些同事担心“那如果我在primary里面使用提交的事务操作时按照rowid去检索数据,到备库执行的和主库操作不一致” 数据库软件安装过程不再赘述。 ...
  • oracle_baidu
  • oracle_baidu
  • 2013年03月13日 09:57
  • 2000

空间不足导致dataguard同步apply停止

今天接到通知说,主库的数据没有同步到备库 查看日志,发现异常如下: Errors in file/u01/app/oracle/diag/rdbms/shdb/shdb/trace/shdb_db...
  • lyyong2007
  • lyyong2007
  • 2015年12月21日 20:36
  • 208

ORACLE 11G dataguard安装配置手册--单实例物理standby 三种保护模式互相切换

DG的安装与配置 一、环境 安装前规划: 环境: VBOX虚拟机,操作系统:OracleLinux Server release 5.7 数据库版本: OracleDatabase 11g Enter...
  • q947817003
  • q947817003
  • 2013年09月10日 10:52
  • 3262

修改standby库的sys用户的密码导致DG无法传输日志及切换

由于备库只允许读,所以先进行主
  • zhenjiang412518
  • zhenjiang412518
  • 2014年08月25日 17:10
  • 1388

Oracle Dataguard之物理standby的基本配置

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

Oracle DG之--构建Physical Standby(一主库对应多备库)

Oracle DG之--构建Physical Standby(一主库对应多备库)系统环境:操作系统: RedHat EL6Oracle:    Oracle 10.2.0.1.0650) this.w...
  • lqx0405
  • lqx0405
  • 2015年03月31日 12:10
  • 4438

oracle11g dataguard failover重建后归档日志没有被应用被NO的问题

1,主库从库归档记录不一致,如下所示:做完failover后,坏的旧主库变成了新的从库,但是新从库的归档日志记录不一致,就是archive log list;出来的和v$archived_log出来对...
  • mchdba
  • mchdba
  • 2015年12月29日 21:07
  • 3389

ORACLE 11G DATAGUARD保护模式设置详解

先说说DG的三种保护模式 Maximum Protection: 最大保护模式,不允许数据丢失,所有事务必须完成主备库的日志写后才能提交,如果主备库之间网络异常,将会严重影响主库性能。 Maximum...
  • xhailing
  • xhailing
  • 2013年10月29日 16:45
  • 2474
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Oracle DataGuard 物理Standby 搭建(下)
举报原因:
原因补充:

(最多只允许输入30个字)