oracle中backup模式
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_DATAtwo apple,apple可以看到在users表空间在backup模式下,用户任然可以向其中修改数据。(有一点不明白,为什么apple这个数据还在文件中,望高手解答一个)最后介绍个动态性能视图v$backup,SQL> select * from v$backup;FILE# STATUS CHANGE# TIME---------- ------------------ ---------- ---------1 NOT ACTIVE 2794785 23-AUG-132 NOT ACTIVE 2794785 23-AUG-133 NOT ACTIVE 2794785 23-AUG-134 ACTIVE 2798071 23-AUG-135 NOT ACTIVE 2794785 23-AUG-136 NOT ACTIVE 2794785 23-AUG-137 NOT ACTIVE 2794785 23-AUG-138 NOT ACTIVE 2794785 23-AUG-139 NOT ACTIVE 2794785 23-AUG-1310 NOT ACTIVE 2794785 23-AUG-1311 NOT ACTIVE 2794785 23-AUG-1311 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 SYSTEM2 /u01/oradata/wilson/sysaux01.dbf SYSAUX3 /u01/oradata/wilson/undotbs01.dbf UNDOTBS14 /u01/oradata/wilson/users01.dbf USERS5 /u01/oradata/wilson/example01.dbf EXAMPLE6 /u01/oradata/wilson/paul01.dbf PAUL7 /u01/oradata/wilson/sun01.dbf SUN8 /u01/oradata/wilson/smallundo1.dbf SMALLUNDO9 /u01/oradata/wilson/assm_1.dbf ASSM10 /u01/oradata/wilson/mssm_1dbf MSSM11 /u01/oradata/wilson/paul02.dbf PAUL11 rows selected.可以看到是users 表空间( /u01/上一个:阅读Oracle官方文档指南
下一个:ORACLE字符串缓冲区太小解决方案
- 更多Oracle疑问解答:
- 运行exp备份oracle数据库提示oracle-12154错误
- 有没有,生产Oracle Rman 备份脚本的工具啊!
- 初学orcle,希望有大大帮忙解说一下详细步骤,从登录oracle到创建表的过程
- oracle语句问题:一张user表,三个字段,id,name,time,插入记录比如:张三2007,李四2008,张三2011
- 如何写一个ORACLE触发器同步两个表中的数据?
- oracle 如何查看一个服务器上有多少个数据库.
- oracle 创建包的时候错误 求解
- oracle 重复列的问题
- oracle 中如何查处2星期前的数据
- 请教oracle数据库安装中的问题
- 请问谁能提供给我标准的oracle ERP的数据库表结构并详细说明各表主要的作用?
- 安装oracle遇到的问题 invalid entry CRC (expected 0x3e12e795 but got 0x9db0e9fd)
- 我的是ORACLE 10G,在RMAN中如何按指定的时间恢复数据文件啊?
- oracle为什么没有自动增长列
- oracle快捷键都有哪些啊?