alter tablespace tablespacename begin backup
来源:互联网 发布:java final关键字 编辑:程序博客网 时间:2024/05/22 18:01
我们在对数据库进行热备份的时候,需要将表空间置于脱机或backup命令后,对其数据文件进行拷贝。但是为什么需要在热备份之前需要alter tablespace … begin backup呢?这里牵扯到一个SCN的概念。
首先我们强制进行检查点进程
SQL> alter system checkpoint;
System altered
在这里先明确一个概念
v$database → checkpoint_change# ,表示系统检查点SCN,存放在控制文件里
v$datafile →checkpoint_change#,表示数据文件检查点SCN,存放在控制文件里
→last_change#,终止SCN,存放在控制文件里
v$datafile_header → checkpoint_change#,启动SCN,start SCN,存放在数据文件头里
当检查点SCN,datafile SCN和start SCN都一致时,数据库不需要进行介质恢复。至于终止SCN,数据库在打开的状况下值为NULL,当我们正常关闭数据库时才会有数值。如果数据库是abort关闭的,那么此时终止SCN为空,于是数据库重新开启会根据这个终止SCN为空而判断出需要进行介质恢复。
此时,我们通过SQL语句select b.NAME,a.checkpoint_change# database_scn,b.checkpoint_change# datafile_scn,c.CHECKPOINT_CHANGE# start_scn,b.last_change# shut_scn from v$database a, v$datafile b, v$datafile_header c where b.FILE# = c.FILE#;查看当前的4类SCN
可以看到当前系统SCN为830445
现在我们将要备份的其中一个表空间置于begin backup模式:
SQL> alter tablespace test begin backup;
Tablespace altered
再查看下SCN:
此时test表空间下的test1和test2数据文件的datafile SCN和start SCN变成了830645
我们再做一次checkpoint (alter system checkpoint)
这时候我们发现begin backup的tablespace下的数据文件SCN并没有变化
这样带来的好处是,我们拷贝数据文件是个漫长的过程,我们不能保证数据文件头一定是首先被拷贝到备份里去的。在这过程中,数据库有可能会发生变化,假如已经产生变化的数据块之前已经被拷贝到备份里了,而没有置于begin backup的话其数据文件头里的SCN也将会产生变化,之后,数据文件头被拷贝到备份。如果之后的某个时间数据库需要进行恢复,将备份拷贝过来,从数据文件头的SCN开始进行介质恢复,那么从前面热备份操作时开始拷贝到文件产生变化的这段时间内的数据不在备份里,而介质恢复也不会去重做它,就将导致数据丢失。
换回来讲,如果在热备份时数据文件头的SCN被冻结了,可以保证在进行介质恢复时从830645开始进行恢复,而热备需要大量的日志空间,我们可以猜想从begin backup到end backup这短时间,数据库将相应的变化信息并不是和平时一样简简单单的记录在日志文件中,或许这种状态是将变化的数据块的镜像完全拷贝到日志文件中,在进行介质恢复时,这段时间的信息或许是将变化的数据块(SCN大于datafile SCN)重新覆盖而不是简简单单的redo。
alter tablespace test end backup
链接:http://blog.mchz.com.cn/?p=2763
- alter tablespace tablespacename begin backup
- 有关 alter tablespace begin backup
- hot backup 中alter tablespace XXXX begin backup做了什么?
- 热备份时 alter database/tablespace begin/end backup 的原因
- 四类checkpoint与alter tablespace begin/end backup的关系
- alter database begin backup测试
- alter tablespace
- What Happens When A Tablespace/Database Is Kept In Begin Backup Mode (Doc ID 469950.1)
- 77.You executed the following command to perform a backup of the USERS tablespace: SQL> ALTER TABLES
- Create / Alter Oracle TableSpace / Temporary TableSpace, User...
- begin backup、end backup的过程
- Oracle学习笔记--ALTER TABLESPACE
- BACKUP TABLESPACE(备份表空间)
- 在begin backup和end backup之间做了什么?
- alter table xx move tablespace xx
- ALTER TABLESPACE DBXX.TSXX BUFFERPOOL BPXX
- alter tablespace/database语句中的reuse选项
- alter tablespace temp&…
- Ubuntu 9.04 Server 搭建Nginx+PHP5+MySQL完美Web服务器
- Android中的几种网络请求方式详解
- ps简单切图步骤图文
- (1451)求一个字符串中连续出现次数最多的子串
- 在 MySQL 数据库中,怎样去掉字符串字段值结尾的回车换行符 (\r\n 或 0D 0A)
- alter tablespace tablespacename begin backup
- 一些有趣的程序员智力面试题
- [应用架构] JAVA应用技术之服务器搭建
- 变量和方法命名的最佳实践
- jxl操作excel,大概的帮助类,Action, Manager
- comobox property
- Debug和Release区别
- 20 个数据库设计最佳实践
- 是时候使用Javascript严格模式了