聊聊Oracle 11g的Snapshot Standby Database(上)
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/
聊聊Oracle 11g的Snapshot Standby Database(上)的更多相关文章
- 聊聊Oracle 11g的Snapshot Standby Database(下)
3.Snapshot Standby行为研究 下面我们分析一下Snapshot Standby的工作性质和行为性质.我们在主库方向研究当前状态. --主库日志情况 SQL> select gro ...
- Oracle 11g客户端在Linux系统上的配置步骤详解
Oracle 11g客户端在Linux系统上的配置步骤详解 2011-07-26 10:47 newhappy2008 CSDN博客 字号:T | T 本文我们主要介绍了Oracle 11g客户端在L ...
- snapshot standby database
快照备库接收和归档主库发送来的redo,但是不会应用:切换成physical standby之后会自动开启redo apply.快照standby不可以参加主备切换:在最大保护性模式下,如果只有一个备 ...
- 使用Oracle 11g新特性 Active Database Duplication 搭建Dataguard环境
Duplication Database 介绍 Duplicate database可以按照用途分为2种: duplicate database(复制出一个数据库) duplicate standby ...
- Oracle 11G Client 安装就可以用上Oracle11G啦,不用傻傻的安装2G多的Oracle啦,安装特别简单,使用起来更简单
下载地址: http://download.oracle.com/otn/nt/oracle11g/112010/win32_11gR2_client.zip 先将下载下来的ZIP文件解压,并运行se ...
- Oracle 11g中的snapshot standby特性
在Oracle 11g中,data guard最吸引人的,除了active data guard的实时查询特性(即可以以只读方式打开物理standby数据库的同时MRP进程能继续做recover),快 ...
- Oracle Standby Database 实现方案
Oracle Standby Database 实现方案 From: http://wanow.blog.hexun.com/4672755_d.html 字号:大 中 小 版本:V20060328 ...
- ORACLE 11gR2 DG(Physical Standby)日常维护02
环境:RHEL 6.5 + Oracle 11.2.0.4 三.监控DG的状态 3.1监控DG备库的状态 3.2监控主库传输日志链路的状态 四.备库切换为snapshot standby 4.1备库切 ...
- Physical Standby Database Failover
1.物理standby failover 切换 故障转移时在一些糟糕的事情发生时执行的计划外事件,需要将生产库移动到DR站点.有意思的是,这时候人们通常忙来忙去,试图弄明白发生了什么,需要做些什么才能 ...
随机推荐
- BZOJ 1296: [SCOI2009]粉刷匠 分组DP
1296: [SCOI2009]粉刷匠 Description windy有 N 条木板需要被粉刷. 每条木板被分为 M 个格子. 每个格子要被刷成红色或蓝色. windy每次粉刷,只能选择一条木板上 ...
- [网页设计]Ajax、Comet与Websocket--转
从http协议说起 1996年IETF HTTP工作组发布了HTTP协议的1.0版本 ,到现在普遍使用的版本1.1,HTTP协议经历了17 年的发展.这种分布式.无状态.基于TCP的请求/响应式.在 ...
- WordPress主题制作教程5:循环
wordpress循环分两种,一种是自定义循环,一种是默认循环. 自定义循环:根据指定参数进行实例化 调用所有页面,post_type值:page对应页面,post对应文章 <?php $arg ...
- Zen Coding 用法
html:5 或者 ! 生成 HTML5 结构html:xt 生成 HTML4 过渡型html:4s 生成 HTML4 严格型 E 元素名 (div, p);E#id 带id的元素 (div#cont ...
- 转载网易博客:整理各大网站让网站变灰的css代码
2013-07-21 15:06:47 北京时间2013年4月20日8时02分四川省雅安市芦山县(北纬30.3,东经103.0)发生7.0级地震.震源深度13公里.各大网站将其网站变灰,本人整理了下部 ...
- DP-母函数
DP---母函数 先由钱币兑换问题开始 http://acm.hdu.edu.cn/showproblem.php?pid=1284 Problem Description 在一个国家仅有1分,2分, ...
- Android setStartOffset方法:设置启动时间
[功能说明]该方法用于设置一个动画执行的启动时间,单位为毫秒.系统默认当执行start方法后立刻执行动画,当使用该方法设置后,将延迟一定的时间再启动动画. [基本语法]public void setS ...
- SparkContext和RDD
SparkContext.scala实现了一个SparkContext的class和object,SparkContext类似Spark的入口,负责连接Spark集群,创建RDD,累积量和广播量等. ...
- .NET在EF中使用sql,用动态类吧!
.NET在EF中使用sql,用动态类吧! 前言 在.NET中使用Entity Framework能快速.方便地结合LINQ来对数据库进行一系列的增删改查操作.但是由于EF根据表达式最后生成通用的sql ...
- BeautifulSoup 安装使用
Linux环境 1. 安装 方法一: 下载:http://www.crummy.com/software/BeautifulSoup/bs4/download/4.2/ 解压:tar -xzvf be ...