我们知道Oracle数据库热备有3步:

1. alter tablespace  tbname  begin backup;

2. cp  /×××      to   /××

3. alter tablespace  tbname end  backup;

这个过程要尽可能短,否则会造成大量的redolog。

那么,数据库在你执行begin backup时,系统做了什么呢?

1. tablespace 发生了一次checkpoint------会把buffer脏数据全部写入到数据文件

2. tablespace下的数据文件的文件头的scn会保持不变-------这里的scn即第一步发生checkpoint的scn

3. 如果此时,有改变数据的操作,数据库会对被修改的block块进行整个备份,以保证数据的完整性。

(后期在恢复时,数据库会发现该块被修改,然后通过archive log 来进行恢复)

---------也就是说,你在热备时,是可以修改数据的;---------------这就是热备的优点。

下面通过实验来验证一下第3点:

1.用一个新用户登录

SQL> conn yn/yn
Connected.
SQL> create table fruit(name varchar2(30));

Table created.

SQL> insert into fruit values('orange');

1 row created.

SQL> commit;

Commit complete.

SQL> select dbms_rowid.rowid_block_number(rowid) blk ,name from fruit;

BLK NAME
---------- ------------------------------
64 orange

----查看数据被保存的数据块

(注意:commit 并不代表该数据会被写入到数据文件中;我是在另外一个session中执行了checkpoint来达到写入数据文件的)

SQL> select username,default_tablespace from dba_users;

USERNAME DEFAULT_TABLESPACE
------------------------------ ------------------------------
HACKER SYSTEM
BBK SYSTEM
OPS$YN SYSTEM
YN  USERS

-------该yn用户对应的表空间是 users

2.通过dd命令来查看block内容

[oracle@app orcl]$ dd if=users01.dbf ibs=8192 skip=63 count=3 |strings
3+0 records in
48+0 records out
24576 bytes (25 kB) copied, 0.000252 seconds, 97.5 MB/s
orange

---这说明我们数据已经写入数据文件

3. 执行热备

SQL> alter tablespace users begin backup;

Tablespace altered.

4.修改系统数据

SQL> update fruit set name='apple';

1 row updated.

SQL> commit;

Commit complete.

SQL> select * from fruit;

NAME
------------------------------
apple

5.再次查看block

[oracle@app orcl]$ dd if=users01.dbf ibs=8192 skip=63 count=3 |strings
3+0 records in
48+0 records out
24576 bytes (25 kB) copied, 0.000187 seconds, 131 MB/s
apple,
orange
[oracle@app orcl]$

----说明数据文件已经修改

6.最后取消表空间备份

alter tablespace users  end bakcup;

Oracle:热备测试的更多相关文章

  1. ORACLE 热备begin backup / end backup

    执行begin backup之后,oracle会把将要备份的数据文件都标记为hot-backup-in-progress,锁定所要备份的datafile header的scn,例如此时scn=100, ...

  2. Redis - Keepalived + redis 主备热备切换

    1. 热备方案 硬件:server两台,分别用于master-redis及slave-redis 软件:redis.keepalived 实现目标: 由keepalived对外提供虚拟IP(VIP)进 ...

  3. Pacemaker实现双机热备

    在互联网高速发展的今天,尤其在电子商务的发展,要求服务器能够提供不间断服务.在电子商务中,如果服务器宕机,造成的损失是不可估量的.要保证服务器不间断服务,就需要对服务器实现冗余.在众多的实现服务器冗余 ...

  4. oracle双机热备概念

    1. 双机热备概述      双机热备有两种实现模式,一种是基于共享的存储设备的方式,另一种是没有共享的存储设备的方式,一般称为纯软件方式.      基于存储共享的双机热备是双机热备的最标准方案. ...

  5. oracle 双机热备,oracle dataguard 和oracle rac的区别和联系(转)

    Data Guard 是Oracle的远程复制技术,它有物理和逻辑之分,但是总的来说,它需要在异地有一套独立的系统,这是两套硬件配置可以不同的系统,但是这两套系统的软件结构保持一致,包括软件的版本,目 ...

  6. oracle数据库热备中的备份和恢复及例子

    手工热备(开库状态) 备份控制文件: alter database backup controlfile to '/u01/oradata/prod/con.bak1'; 备份数据文件(这里用到pl/ ...

  7. Oracle:热备时,突然断电情况处理

    我们在热备时,如果此时突然停电,再次启动时会发生什么情况呢? SQL> alter tablespace users begin backup; Tablespace altered. SQL& ...

  8. Oracle冷备和热备脚本

    Oracle冷备和热备脚本 冷备脚本: set feedback off set heading off set verify  off set trimspool off set echo off ...

  9. (技能篇)双机热备之Oracle切换故障处理

    背景: 以前做的的一个项目中使用了某国产双机热备产品,但是在数据库做双机热备时出现了一些问题,没办法.不得不研究一番了!经过两天的研究终于问题得以解决.将问题处理步骤记录下来以备后用,也希望能帮助到需 ...

随机推荐

  1. 安卓解析XML文件

    安卓解析XML文件 主要有三种方式:DOM解析.SAX解析.PULL解析 其中: DOM解析为等XMl文件全部加载后,然后根据需要解析的内容解析出所需的内容数据. SAX解析为从XML文件中执行一行, ...

  2. hdu2448 / 费用流 / harbin赛区c题

    题(自)目(己)错(英)综(语)复(太)杂(差),关系理了半小时+翻译才看明白,看明白之后,直接建图,费用流击杀./简单题. 2A:有的地方,可用互通的要建双向边! #include<cstdi ...

  3. ubuntu远程桌面设置

    一.服务器端电脑设置: 1.在搜索端搜索desktop sharing,然后设置后退出 二.客户端电脑设置: 1.在搜索端搜索remmina remote desktop client 2.如图设置: ...

  4. go语言学习之路 一:开发环境配置

    1. 安装go 1)下载地址:http://www.golangtc.com/download,下载后直接双击msi文件安装,默认安装在c:\go 2)安装完成后默认会在环境变量 Path 后添加 G ...

  5. golang几种post请求方式

    get请求 get请求可以直接http.Get方法,非常简单. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 func httpGet() {     resp, err := h ...

  6. C标准提前定义宏,调试时加打印非常实用

    #include<stdio.h> int main(int argc, char *argv[]) { printf("File:[%s]\r\n", __FILE_ ...

  7. Autolayout和VFL

    Autolayout,開始于iOS6.0   一.什么时候用autolayout比較适合   1.不负责任的骑墙派说法:apple的设备越来越多了,你的应用应该都使用al. (而且用sb)   2.要 ...

  8. Linux在本地使用yum安装软件(转)

    经常遇到有的linux服务器由于特殊原因,不能连接外网,但是经常需要安装一些软件,尤其是在编译一些包的时候经常由于没有安装一些依存包而报的各种各样的错误,当你找到依存的rpm包去安装的时候,又提示你有 ...

  9. php 封装memcache类

    <?php /*  * memcache类   */ class Memcacheds{     //声明静态成员变量     private static $m = null;     pri ...

  10. bootstrap-Table服务端分页,获取到的数据怎么再页面的表格里显示

    <table class="table table-hover" id="userTable" > <thead> <tr> ...