为什么联机备份表空间中的数据文件会产生大量redo,冻结数据文件头的scn(引用)

http://space.itpub.net/7728585/viewspace-545610
在Oracle备份中,我们可以使用alter tablespace ... begin backup将表空间置于联机备份模式,然后用操作系统命令进行数据文件的物理拷贝,达到备份的目的,这个过程中数据文件还是照样联机,并进行正常的数据插入,但会导致比平常更多的REDO记录的产生

产生较多的REDO记录是由热备引起的,因为在热备过程中,我们采用copy/ocopy命令,这个是属于操作系统的命令,他和Oracle是不相关的,不能和Oracle的内部进程如dbwr进行交互,这样就可能导致热碑块的出现,因为操作系统读取数据文件时,他的IO尺寸并不是block size的大小,一般会更小,这样会导致一个数据块被读取多次,而每次获取的部分都不一致(数据不断更新),为了恢复这种断裂的热备块,Oracle进行了数据块前映象这个操作,对于backup模式的数据文件块,在第一次受到DML影响时,先将数据块整个COPY到REDO中,后续的DML在进行UNDO,正常REDO信息的记录,当恢复数据文件时,会先应用最先的数据块前映像,然后才是后续的REDO记录信息,更多的日志记录就是这个前映像产生的,这个不能和UNDO弄混淆,他是整个数据块,而不是简单的行记录,由于Oracle本身不知道在拷贝时那些块可能出现热备,所以只要是BACKUP期间有DML的块,就按照上面的情况处理,所以如果在backup期间运行大量的批处理程序,日志信息会集聚增多

还有就是为什么alter tablespace ... begin backup要冻结文件头的SCN?

这个主要是以后数据文件做恢复的起始SCN,在BEGIN BACKUP下达后,系统要对表空间执行检查点,并将该检查点前的所有事务应用都固化到数据文件,然后冻结这个SCN,直到使用END BACKUP,使备份过程结束,再更新为新的SCN,冻结的原因是因为使用操作系统命令拷贝数据文件时,他不能保证第一个读取的块就是数据文件头,如果不冻结,则可能从备份开始,已经多次更新了文件头,而此时文件头还没有被拷贝,这样等文件头被拷贝后,他的SCN已经远远大于了数据文件中其他数据块的SCN,这样从文件头的SCN来定位恢复起点就不现实了

从上面可以看出,热备与RMAN的联机备份是存在本质区别的,RMAN是连接目标数据库,产生Oracle用户进程,调用他自身的过程包,与dbwr进行交互,使用Oracle的SGA或PGA进行备份,这样他首先会保证每个块都是一致的,不会出现热碑现象,这样就减少了REDO记录的产生,他也不需要冻结文件头SCN,因为RMAN总是能先读取数据文件头的块,做为DBA,RMAN工具都不能使用的话是很可笑的!!!

时间: 2024-08-02 23:00:59

为什么联机备份表空间中的数据文件会产生大量redo,冻结数据文件头的scn(引用)的相关文章

备份表空间

      备份表空间指在数据库处于OPEN状态时备份起数据文件的方法.可以备份表空间的所有数据文件,也可以备份表空间的某个数据文件.注意:备份表空间只适用ARCHIVELOG模式.备份表空间可以分为 1脱机备份 2联机备份                                                   脱机备份       脱机备份指当表空间处于OFFLINE状态时,备份表空间所有数据文件或单个数据文件的过程.脱机备份适用ARCHIVELOG模式.优点:会生成较少的重做日志

表空间 数据文件-oracle数据库表空间中的数据文件自动扩展到32G后不再自动扩展

问题描述 oracle数据库表空间中的数据文件自动扩展到32G后不再自动扩展 CSDN移动问答oracle表空间中的数据文件自动扩展到32G后不再自动扩展,报ora-01653错误,我之后手动加了个数据文件,但是不久之后这个数据文件自动扩展到了32G又报错,请问这是什么原因,难道以后只能手动添加数据文件么????

Oracle内核技术揭密. 1.1 区:表空间中的基本单位

1.1 区:表空间中的基本单位 区,Extent,逻辑上连续的空间.它是表空间中空间分配的基本单位.如果在某表空间中创建一个表,哪怕只插入一行,这个表至少也会占一个区. 具体来讲,在Oracle 10g中,如果创建一个新表,初始至少为这个表分配一个区.而在Oracle 11.2.0.3以上版本中,创建新表时默认一个区都不会分配,也就是说,这个表此时不占存储空间.只有在向表中插入第一行数据时,才会默认为表分配第一个区. 无论是Oracle 10g还是Oracle 11GR2,如果表原有区中的空间用

Oracle RMAN中备份表空间名为'TEST'时需要注意的问题

'TEST'算是oracle的一个保留字,因此在有些地方使用时要注意,目前我发现在rman中备份时oracle把它作为保留字对待. TEST在rman里确实是保留字... 备份其它表空间时只需要直接写表空间名字就可以: RMAN> backup tablespace undotbs2,users1,test2; 启动 backup 于 2009/09/01 19:37:14 使用通道 ORA_DISK_1 通道 ORA_DISK_1: 启动全部数据文件备份集 通道 ORA_DISK_1: 正在指

ORACLE数据文件是在哪个时点更新数据的?

问题描述 oracle中,数据更新提交到日志文件之后,在不进行人工发出checkpoint命令的时候,系统默认是在哪个时点映射到数据文件的? 解决方案 oracle两个主要进程LGWR, DBWR.数据文件的话是DBWR.参考解释:http://blog.sina.com.cn/s/blog_6d6e54f701010926.html触发条件http://blog.csdn.net/zengmuansha/article/details/6757822解决方案二:我觉得你应该找个专门的DBA论坛

c# autocad开发中 打开dwg文件后怎么设为当前活动文档

问题描述 DocumentacDoc=Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.Open("d:\new.dwg");//打开文档Documentdoc=acadApp.DocumentManager.MdiActiveDocument;//得到当前文档为什么得到当前的文档不为活动文档,怎么将其设为活动文档?? 解决方案

Oracle 11g UNDO表空间备份增强

1.在11g以前的版本,Oracle的rman并没有和其他日志应用系统紧密结合起来,因此,rman删除归档日志的时候并不会判断这个日志是否对其他系统仍然有用.当rman删除日志后,可能会发现其他的系统比如DATA GUARD.STREAMS等由于日志被删除而无法正常工作.从11g开始,rman在删除时会首先判断,这个日志是否其他系统仍然需要,当其他需要仍然需要这个日志时,rman会报警,且不会删除这个日志 2.Oracle10g增加了对备份集压缩的功能,11g在这方面进行了增强,新增了另外一种压

DB2表空间理论基础(原创)

在DB2 V9版本中表空间的管理方式有系统管理表空间(SMS),数据库管理表空间(DMS)和自动存储管理,下面就以表空间的管理方式来介绍DB2的表空间 系统管理空间概述  在SMS(系统管理空间)表空间中,操作系统的文件系统管理器分配和管理用于存储表的空间.该存储模型通常由存储在文件系统空间中的多个文件组成,这些文件表示表对象.用户决定文件的位置.DB2 数据库 Linux 版.UNIX 版和 Windows 版控制它们的名称,而文件系统负责管理它们.通过控制写入每个文件的数据量,数据库管理器均

SYSTEM 表空间管理及备份恢复

--============================= -- SYSTEM 表空间管理及备份恢复 --=============================       SYSTEM表空间是Oracle数据库最重要的一个表空间,存放了一些DDL语言产生的信息以及PL/SQL包.视图.函数.过程等,称之为数据字典, 因此该表空间也具有其特殊性,下面描述SYSTEM表空间的相关特性及备份与恢复.        一.SYSTEM表空间的管理     1.建议不存放用户数据,避免用户错误导致