Oracle 11g是Data Guard的重要里程碑版本。在11g中,Active DataGuard、Advanced Compression等特性大大丰富了Data Guard的功能和在实践领域应用的广度。其中,除了传统的Physical Standby和Logical Standby,11g推出了新的Standby类型——Snapshot Standby。

Standby的实质是“同步更新”,无论是Physical Standby还是Logical Standby,都是依照主库Primary的形式进行同步或者异步更新。Standby自身是不能有主动地更新动作的。所以,即使进入11g的Active Data guard,备库也只是可以进行只读操作动作,不能自我进行更新动作。

而Snapshot Standby的出现改变了这一点。在Oracle官方文档中,对这个特性的解释如下:

“A snapshot standby database is a fully updatable standby database. A snapshot

standby database receives and archives, but does not apply, redo data from a primary database. Redo data received from the primary database is applied when a snapshot standby database is converted back into a physical standby database, after discarding all local updates to the snapshot standby database.”

简单的说,Snapshot Standby是一种特殊的Standby类型。它以某一个时点的Physical Standby作为基础,通过convert操作变成snapshot备库。该备库可以进行修改操作(增加、修改和删除)操作。当执行结束之后,可以重新回到Physical Standby角色。“失联”期间发生的所有update操作,都全部被取消掉。“失联”期间主库发生的修改动作,也会在应用apply日志的时候追赶上。

技术是面对应用场景的。Snapshot是针对什么样的需求特征呢?在实际环境,特别是应用开发、测试环境中,我们偶尔会需要一个临时性的测试环境。这个环境上进行一些临时性、可抛弃的测试。这个时候,就可以使用这个snapshot standby。

本篇通过一系列的实验,来演示Snapshot Standby的常用操作、工作特性和日志行为分析。

1、环境说明

笔者使用Oracle 11gR2进行测试,版本编号为11.2.0.4。当前Primary和Standby都已经搭建完成。

版本信息如下:

SQL> select * from v$version;

BANNER

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

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

PL/SQL Release 11.2.0.4.0 - Production

CORE     11.2.0.4.0     Production

TNS for Linux: Version 11.2.0.4.0 - Production

NLSRTL Version 11.2.0.4.0 – Production

主库Primary信息:

SQL> select name, open_mode, database_role, protection_mode from v$database;

NAME      OPEN_MODE            DATABASE_ROLE    PROTECTION_MODE

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

VLIFE     READ WRITE           PRIMARY          MAXIMUM PERFORMANCE

SQL> select instance_name from v$instance;

INSTANCE_NAME

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

vlife

SQL> select group#, sequence#, archived, status from v$log;

GROUP#  SEQUENCE# ARCHIVED STATUS

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

1         95 YES      INACTIVE

2         96 YES      INACTIVE

3         97 NO       CURRENT

SQL> select recid,sequence#, archived, applied from v$archived_log where name='vlifesb' and sequence#>90;

RECID  SEQUENCE# ARCHIVED APPLIED

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

123         91 YES      YES

126         92 YES      YES

128         93 YES      YES

130         94 YES      YES

132         95 YES      YES

134         96 YES      NO

6 rows selected

当前保护模式是Maximum Protection模式,正在apply状态的日志编号是96。当前online redo log编号为97。

Standby端信息:

SQL> select name, open_mode, database_role, protection_mode from v$database;

NAME      OPEN_MODE            DATABASE_ROLE    PROTECTION_MODE

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

VLIFE     READ ONLY WITH APPLY PHYSICAL STANDBY MAXIMUM PERFORMANCE

SQL> select instance_name from v$instance;

INSTANCE_NAME

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

vlifesb

SQL> select group#, sequence#, archived, status from v$log;

GROUP#  SEQUENCE# ARCHIVED STATUS

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

1         95 YES      CLEARING

2         96 YES      CLEARING

3         97 YES      CURRENT

SQL>  select recid,sequence#, archived, applied from v$archived_log where sequence#>90;

RECID  SEQUENCE# ARCHIVED APPLIED

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

87         91 YES      YES

88         92 YES      YES

89         93 YES      YES

90         94 YES      YES

91         95 YES      YES

92         96 YES      IN-MEMORY

6 rows selected

当前Standby端的Flashback Database开启。

SQL> select oldest_flashback_scn, oldest_flashback_time from v$flashback_database_log;

OLDEST_FLASHBACK_SCN OLDEST_FLASHBACK_TIME

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

1646229 2015/10/21 3:41:25

2、切换到Snapshot Standby

当前我们的vlifesb是physical standby类型,保护模式是默认的最大性能模式。这也就意味着两者之前是允许存在Gap的。切换Snapshot Standby,有两个限制前提条件:

首先,如果切换为Snapshot Standby,就不能在期间进行Switchover和Failover操作。如果需要使用操作,就需要先切换回Physical Standby才能实现。

其次,如果使用的保护模式是Maximum Protection模式,必须有其他的Standby与之相匹配。要不然就会出现由于日志传输引起的宕机情况。

当前Standby状态是只读Apply状态,这个时候需要终止Apply过程,并且切换回mount状态。否则是不允许进行convert动作的。

SQL> alter database convert to snapshot standby;

alter database convert to snapshot standby

ORA-38784: 无法创建还原点 'SNAPSHOT_STANDBY_REQUIRED_10/22/2015 10:59:37'??

ORA-01153: 激活了不兼容的介质恢复

重启数据库进入mount状态。

SQL> conn / as sysdba

Connected.

SQL> alter database recover managed standby database cancel;

Database altered.

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup mount;

ORACLE instance started.

Total System Global Area 2471931904 bytes

Fixed Size                  2255752 bytes

Variable Size             738198648 bytes

Database Buffers         1711276032 bytes

Redo Buffers               20201472 bytes

Database mounted.

进行convert切换动作。

SQL> alter database convert to snapshot standby;

Database altered.

此时standby端的alert log展示了动作。

Thu Oct 22 11:09:21 2015

alter database convert to snapshot standby

Created guaranteed restore point SNAPSHOT_STANDBY_REQUIRED_10/22/2015 11:09:21 –创建出一个可用的flashback database restore point

Killing 3 processes with pids 7314,7318,7316 (all RFS) in order to disallow current and future RFS connections. Requested by OS process 7312

Begin: Standby Redo Logfile archival

End: Standby Redo Logfile archival

RESETLOGS after incomplete recovery UNTIL CHANGE 1794139

Resetting resetlogs activation ID 4208260171 (0xfad4f44b)

Online log /u01/app/oracle/oradata/VLIFESB/onlinelog/o1_mf_1_c261g1mo_.log: Thread 1 Group 1 was previously cleared

Online log /u01/app/oracle/fast_recovery_area/VLIFESB/onlinelog/o1_mf_1_c261g1pt_.log: Thread 1 Group 1 was previously cleared

Online log /u01/app/oracle/oradata/VLIFESB/onlinelog/o1_mf_2_c261g2d0_.log: Thread 1 Group 2 was previously cleared

Online log /u01/app/oracle/fast_recovery_area/VLIFESB/onlinelog/o1_mf_2_c261g2gl_.log: Thread 1 Group 2 was previously cleared

Online log /u01/app/oracle/oradata/VLIFESB/onlinelog/o1_mf_3_c261g34d_.log: Thread 1 Group 3 was previously cleared

Online log /u01/app/oracle/fast_recovery_area/VLIFESB/onlinelog/o1_mf_3_c261g36q_.log: Thread 1 Group 3 was previously cleared

Standby became primary SCN: 1794137

Thu Oct 22 11:09:23 2015

Setting recovery target incarnation to 3 –创建出一个新的朝代

CONVERT TO SNAPSHOT STANDBY: Complete - Database mounted as snapshot standby

Completed: alter database convert to snapshot standby

Thu Oct 22 11:09:30 2015

RFS[3]: Assigned to RFS process 7324

RFS[3]: Selected log 5 for thread 1 sequence 98 dbid -87496857 branch 892734889

Thu Oct 22 11:09:30 2015

ARC0: Becoming the 'no SRL' ARCH

Thu Oct 22 11:09:30 2015

RFS[4]: Assigned to RFS process 7326

RFS[4]: Selected log 4 for thread 1 sequence 99 dbid -87496857 branch 892734889

Archived Log entry 94 added for thread 1 sequence 98 ID 0xfad4f44b dest 1:

Thu Oct 22 11:09:54 2015

ARC2: Becoming the 'no SRL' ARCH

从日志上看,我们看到Oracle将普通Physical Standby切换到Snapshot Standby的过程,经过了如下步骤:

ü  创建出一个Flashback的恢复点;

ü  传输剩余的Standby Redo Log日志信息;

ü  清理Standby端的online redo log日志组;

ü  使用reset log方法,创建出新的朝代数据;

结束之后,可以看到Standby端的状态变化为Snapshot Standby。

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

OPEN_MODE            DATABASE_ROLE    PROTECTION_MODE

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

MOUNTED              SNAPSHOT STANDBY MAXIMUM PERFORMANCE

转:http://blog.itpub.net/17203031/viewspace-1815636/

转载于:https://www.cnblogs.com/andy6/p/5886500.html

聊聊Oracle 11g的Snapshot Standby Database(上)相关推荐

  1. 使用Oracle 11g新特性 Active Database Duplication 搭建Dataguard环境

    Duplication Database 介绍 Duplicate database可以按照用途分为2种:duplicate database(复制出一个数据库)duplicate standby d ...

  2. oracle copy database,oracle 11g duplicate from active database 复制数据库(二)

    下面介绍将数据库复制到远程主机相同目录结构的操作步骤 1.创建辅助实例的密码文件(这里辅助实例名为dup) ,在目的主机上为辅助实例创建密码文件可以有以下选项: .手动创建密码文件,对于duplica ...

  3. oracle streams 11g数据复制,在Oracle 11g Streams单向传输的基础上配置Streams双向传输测试...

    原来在两个数据库服务器直接配置了Streams的单向传输,原来的源数据库为两台集群64位HP-UNIX的Oracle11gR2数据库,原来的目标数据 描述: 原来在两个数据库服务器直接配置了Strea ...

  4. Oracle 11g Dataguard 物理备库配置(四)之broker snapshot standby测试

    Oracle 11g Dataguard 物理备库配置系列文档 Oracle 11g Dataguard 物理备库配置(一)之duplicate创建 Oracle 11g Dataguard 物理备库 ...

  5. oracle dg snapshot,Oracle Broker Snapshot Standby测试

    Oracle 11g Dataguard Snapshot Standby数据库功能,可将备库置于打开读写状态,进行模拟生产环境主库中测试.当备库Snapshot standby任务完成后,可以切换回 ...

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

    用这种方式来搭建DG ,主库的停机时间很少,只需要重启一下,使参数生效.也可以用这种方法进行DB迁移.DG搭建好,然后把备库激活就可以了. 这样整个迁移中宕机时间也比较短. Oracle 11g的py ...

  7. 【DATAGUARD】 将11g物理备库转换为Snapshot Standby

    [DATAGUARD] 将11g物理备库转换为Snapshot Standby BLOG文档结构图 [DATAGUARD] 基于同一个主机建立物理备库和逻辑备库(一): http://blog.itp ...

  8. 临时生成oracle快照,oracle 11g dataguard 使用快照实现临时读写

    racle 11g dataguard已经可以临时打开可读写备库,打开后可以进行更改,做压力测试等工作,完成后不用进行重新恢复备库直接可以将角色更改为standby继续应用管理日志. 理备库的初始状态 ...

  9. Physical Standby Database Failover

    1.物理standby failover 切换 故障转移时在一些糟糕的事情发生时执行的计划外事件,需要将生产库移动到DR站点.有意思的是,这时候人们通常忙来忙去,试图弄明白发生了什么,需要做些什么才能 ...

最新文章

  1. JAVA Cloud微服务项目实战课程 SpringBoot 2.x +SpringCloud 微服务课程
  2. SpringBoot中定义全局异常处理器
  3. CSS 中的各种居中 (水平、垂直)
  4. android studio crashlytics,完美解决Android Studio集成crashlytics后无法编译的问题
  5. 【前端工程师手册】说清楚JavaScript中的相等性判断
  6. 分页及页码导航 用户控件
  7. PostMan入门使用教程
  8. c语言录屏软件wps,WPS制作录屏视频
  9. 相亲交友婚恋活动报名小程序开发制作功能
  10. 基于java的飞机大战雷电游戏的开发与设计#毕业设计
  11. SQL server2008下载安装
  12. 电脑通信端口带感叹号,如何解决网络适配器里黄色感叹号
  13. Python吴恩达深度学习作业15 -- YOLO原理及应用(自动驾驶——汽车检测)
  14. 【拍摄日志五】拍摄手法,画面构图,光影关系
  15. 「萌新上手Mac」安装软件,步骤超简单
  16. A16.从零开始前后端react+flask - 将前端数据保存到数据库
  17. python语言程序设计 陈东_程序设计导论python语言实践学习笔记2
  18. 04.reactive
  19. 低频125K安卓工业三防手持机lora通信
  20. selenium实现QQ空间和b站这些网站的模拟登录

热门文章

  1. android asynctask源码分析,Android通过Handler与AsyncTask两种方式动态更新ListView(附源码)...
  2. python爬虫网络请求超时_6、web爬虫讲解2—urllib库爬虫—基础使用—超时设置—自动模拟http请求...
  3. linux查找项目中的问题,教你如何快速定位项目中慢查询[项目管理]
  4. java ftp pasv_Ftp主动模式和被动模式以及java连接ftp模式设置
  5. Java项目:后台管理系统脚手架项目(java+SpringBoot+FreeMarker+mysql+JSP)
  6. Java项目:潜艇大战项目(java+swing)
  7. JDBC操作数据库实例
  8. 文件流能转换格式吗_amr转换mp3格式文件
  9. python websocket 客户端_aiohttp Websocket客户端和HTTP
  10. JQ+ajax 提交表单不跳转页面