在数据库打开的情况下备份(归档模式),把表空间或者数据库置于backup 模式下,

如:

SQL> alter database  begin  backup;

Database altered.

那么当把表空间或者数据库置于backup模式下,会发生什么?

1.表空间会发生checkpoint,j将内存中的dirty data全部写进数据文件中;

2.在数据文件头的SCN号会被冻结住;

3.在backup模式下,一个数据块发生了改变,那么整个数据块都会被写进重做数据流中。

所以在backup模式下,是允许用户向数据库中写数据的。

做个试验证明一下,表空间置于backup模式下,用户任然可以修改数据。

没有表空间置于backup 模式下:

打开第一个会话,用sys用户登录,创建一个用户p1,

SQL> create  user p1 identified by  p1_12345 default tablespace users;

User created.

SQL> grant connect,resource to p1;

Grant succeeded.

打开第二个会话,用p1用户登录,创建表fruit,

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

1 row created.

SQL> commit;

Commit complete.

在第一个会话中,

SQL> alter system checkpoint;

System altered.

使数据写到磁盘上;

回到第二个会话中,

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

BLK         NAME

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

814          apple

这是oracle提供的包,由rowid可以看到这个数据文件在哪个数据块上。

通过show parameter db_block_size可以看到它的大小是8192k,

在操作系统中找到users01.dbf(我默认的表空间是users),

[oracle@oracle11g wilson]$ ll /u01/oradata/wilson/users01.dbf

-rw-r----- 1 oracle oinstall 30154752 Aug 23 00:47 /u01/oradata/wilson/users01.dbf

[oracle@oracle11g wilson]$ dd if=users01.dbf ibs=8192 skip=814  count=1 | strings

1+0 records in

16+0 records out

8192 bytes (8.2 kB) copied, 0.000406787 seconds, 20.1 MB/s

U7^M

SUBMIT_COLL_CREDENTIAL_DATA

apple

可以看到apple 被成功的写进了数据文件中。

将users表空间置于backup模式下

SQL> alter tablespace users begin  backup;

Tablespace altered.

看是否可以修改其数据,

在第二个会话中(p1用户),

SQL> update fruit set name='two apple' ;

1 row updated.

SQL> commit;

Commit complete

在第一个会话中(sys用户)中:

SQL> alter system checkpoint;

System altered.

使数据写到磁盘上;

回到第二个会话中,

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

BLK     NAME

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

814     two apple

与上面同样的,在在操作系统中找到users01.dbf,然后

[oracle@oracle11g wilson]$ dd if=users01.dbf ibs=8192 skip=814  count=1 | strings

1+0 records in

16+0 records out

8192 bytes (8.2 kB) copied, 0.000335085 seconds, 24.4 MB/s

U7^M

a}]R

SUBMIT_COLL_CREDENTIAL_DATA

two apple,

apple

可以看到在users表空间在backup模式下,用户任然可以向其中修改数据。(有一点不明白,为什么apple这个数据还在文件中,望高手解答一个)

最后介绍个动态性能视图v$backup,

SQL> select  * from v$backup;

FILE#      STATUS              CHANGE#   TIME

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

1        NOT ACTIVE            2794785   23-AUG-13

2        NOT ACTIVE            2794785   23-AUG-13

3        NOT ACTIVE            2794785   23-AUG-13

4        ACTIVE                2798071    23-AUG-13

5        NOT ACTIVE            2794785   23-AUG-13

6        NOT ACTIVE            2794785   23-AUG-13

7        NOT ACTIVE            2794785   23-AUG-13

8        NOT ACTIVE            2794785   23-AUG-13

9        NOT ACTIVE            2794785   23-AUG-13

10        NOT ACTIVE            2794785   23-AUG-13

11        NOT ACTIVE            2794785   23-AUG-13

11 rows selected.

可以看到文件4是active,说明它是处于backup模式下的,但是还是不知道是哪个文件和表空间处于backup模式下。

SQL> select file_id,file_name,tablespace_name from dba_data_files order by file_id;

FILE_ID      FILE_NAME             TABLESPACE_NAME

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

1 /u01/oradata/wilson/system01.dbf    SYSTEM

2 /u01/oradata/wilson/sysaux01.dbf    SYSAUX

3 /u01/oradata/wilson/undotbs01.dbf   UNDOTBS1

4 /u01/oradata/wilson/users01.dbf     USERS

5 /u01/oradata/wilson/example01.dbf   EXAMPLE

6 /u01/oradata/wilson/paul01.dbf      PAUL

7 /u01/oradata/wilson/sun01.dbf       SUN

8 /u01/oradata/wilson/smallundo1.dbf  SMALLUNDO

9 /u01/oradata/wilson/assm_1.dbf      ASSM

10 /u01/oradata/wilson/mssm_1dbf       MSSM

11 /u01/oradata/wilson/paul02.dbf      PAUL

11 rows selected.

可以看到是users 表空间( /u01/oradata/wilson/users01.dbf)置于backup模式下,这和我们上面做实验时把users表空间置于backup模式下是一致的。

关闭users表空间的backup模式,

SQL> alter tablespace  users end backup;

Tablespace altered.

备注:在backup模式下,可能导致redo log file中的信息量大增(有用户写数据等),影响性能,所以备份完后,快速的end backup,也不推荐使用alter database begin backup命令。

oracle中backup模式的更多相关文章

  1. Oracle中用户(User)和模式(Schema)的概念

    数据库理论中数据库用户和数据库模式并没有必定的联系.具体的数据库模式解释能够在这里找到: http://stackoverflow.com/questions/2674222/what-is-purp ...

  2. 【RMAN】Oracle中如何备份控制文件?备份控制文件的方式有哪几种?

    真题1. 如何备份控制文件?备份控制文件的方式有哪几种? 答案:备份控制文件的方式有多种. ① 备份控制文件可以在线进行: SQL> ALTER DATABASE BACKUP CONTROLF ...

  3. Oracle中的AWR,全称为Automatic Workload Repository

    Oracle中的AWR,全称为Automatic Workload Repository,自动负载信息库.它收集关于特定数据库的操作统计信息和其他统计信息,Oracle以固定的时间间隔(默认为1个小时 ...

  4. 【知识点整理】Oracle中NOLOGGING、APPEND、ARCHIVE和PARALLEL下,REDO、UNDO和执行速度的比较

    [知识点整理]Oracle中NOLOGGING.APPEND.ARCHIVE和PARALLEL下,REDO.UNDO和执行速度的比较 1  BLOG文档结构图 2  前言部分 2.1  导读和注意事项 ...

  5. Oracle中使用REGEXP_SUBSTR,regexp_replace函数

    REGEXP_SUBSTR函数格式如下: function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)__srcstr ...

  6. 在Oracle中使用Entity Framework 6 CodeFirst

    项目中需要将系统从SQLServer数据库迁移到Oracle上.由于原大部分数据访问操作都是通过包装了Entity Framework的统一访问入口实现的,所以需要研究Entity Framework ...

  7. oracle中imp命令详解 .

    转自http://www.cnblogs.com/songdavid/articles/2435439.html oracle中imp命令详解 Oracle的导入实用程序(Import utility ...

  8. 快速向表中插入大量数据Oracle中append与Nologging

    来源于:http://blog.sina.com.cn/s/blog_61cd89f60102e7gi.html 当需要对一个非常大的表INSERT的时候,会消耗非常多的资源,因为update表的时候 ...

  9. Oracle中如何使用REGEXP_SUBSTR函数

    REGEXP_SUBSTR函数格式如下: function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier) __srcst ...

随机推荐

  1. sql server drop talbe 自动删除关联的外键 ,权限体系(一)

    if object_id('Proc_DropTableWithFK') is not null begin drop proc dbo.Proc_DropTableWithFK end GO ) a ...

  2. MongoDb的副本集搭建教程(个人操作笔记)

    很多公司都在用MongoDb ,一直没有时间研究,最近好好的整了一下,做下笔记,直接上操作步骤,关于Mongodb的理论知识可以搜索其他资料,也可以联系我索取 mongoDB官方已经不建议使用主从模式 ...

  3. 解决Win7下一个VC++6.0您不能直接打开多个project问题

    于Win7操作系统,只需双击打开多个VC ++6.0的project当文件,前方和后方的工作区将关闭工作区,这项.VC++6.0仅仅通过文件-->开放式工作区-->找到磁盘project档 ...

  4. Java_POI之MS-Excel2003(扩展名.xls)升级至MS-Excel2007及以上版本(扩展名.xlsx)技术过程概要

    Java_POI之MS-Excel2003(扩展名.xls)升级至MS-Excel2007及以上版本(扩展名.xlsx)技术过程概要 作者:Eric.Zhang(花名:穿越者7号) 日期:2015年1 ...

  5. Mongodb操作之查询(循序渐进对比SQL语句)

    工具推荐:Robomongo,可自行百度寻找下载源,个人比较推荐这个工具,相比较mongoVUE则更加灵活. 集合简单查询方法 mongodb语法:db.collection.find()  //co ...

  6. jQuery验证插件

    原文:jQuery验证插件 学习要点: 1.使用 validate.js 插件 2.默认验证规则 3.validate()方法和选项 4.validate.js 其他功能 验证插件(validate. ...

  7. Installshield在安装结束时刷新系统

    原文:Installshield在安装结束时刷新系统 在OnEnd里添加代码,两种解决方案 群友kevin的解决方案 #include "ifx.h"  //Call to Win ...

  8. JS中apply与call的含义与区别

    JavaScript中,apply()与call()的含义一样,均为改变调用函数中的this指向.其中apply()与call()的第一个参数表示所要指向的对象,若调用函数无参数可不写,则默认为win ...

  9. 通过 C# 代码操作 Google 日历

    原文:通过 C# 代码操作 Google 日历 本文主题 借助 Google .NET APIs Client Library,通过 C# 代码在 Google 日历中创建会议邀请. 本文背景 最近, ...

  10. Java集合之HashMap源码实现分析

    1.简介 通过上面的一篇随笔我们知道了HashSet的底层是采用Map实现的,那么Map是什么?它的底层又是如何实现的呢?这下我们来分析下源码,看看具体的结构与实现.Map 集合类用于存储元素对(称作 ...