Welcome 微信登录

首页 / 数据库 / MySQL / Oracle中backup模式

在数据库打开的情况下备份(归档模式),把表空间或者数据库置于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 | strings1+0 records in16+0 records out8192 bytes (8.2 kB) copied, 0.000406787 seconds, 20.1 MB/sU7^MSUBMIT_COLL_CREDENTIAL_DATAapple可以看到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 | strings1+0 records in16+0 records out8192 bytes (8.2 kB) copied, 0.000335085 seconds, 24.4 MB/sU7^Ma}]RSUBMIT_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基础教程之通过RMAN复制数据库 http://www.linuxidc.com/Linux/2013-07/87072.htmRMAN备份策略制定参考内容 http://www.linuxidc.com/Linux/2013-03/81695.htmRMAN备份学习笔记 http://www.linuxidc.com/Linux/2013-03/81892.htmOracle数据库备份加密 RMAN加密 http://www.linuxidc.com/Linux/2013-03/80729.htm更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12Oracle—RMAN备份Oracle—用户管理的备份相关资讯      Oracle模式  backup模式  本文评论 查看全部评论 (0)
表情: 姓名: 字数