Chinaunix首页 | 论坛 | 博客
  • 博客访问: 107640
  • 博文数量: 46
  • 博客积分: 3013
  • 博客等级: 中校
  • 技术积分: 560
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-05 16:13
文章分类

全部博文(46)

文章存档

2011年(1)

2010年(8)

2009年(21)

2008年(16)

我的朋友

分类: Oracle

2008-11-09 12:43:28

备份原理——备份和恢复概念

这一章比较详细的介绍了备份的概念和原理。


物理备份和逻辑备份

物理备份:备份数据库的物理文件,包括数据文件、控制文件和归档日志文件。

物理备份又分为两种类型:一种是映像拷贝(image copy),另一种是备份为一种私有格式。映像拷贝是指数据文件、控制文件和归档日志文件的确切备份。映像拷贝可以由命令或的copy命令生成。而RMAN的backup命令产生一个备份集,备份集是一个包含一个或多个backup piece的逻辑对象。每个backup piece都是一个以私有的二进制格式存放的物理文件。用户只能通过RMAN来恢复backup piece。

逻辑备份:将数据库中的用户对象导出到一个二进制文件中。EXPORT和IMPORT是提供的导入导出工具,由于将数据库对象导出到操作系统二进制文件中,或由二进制文件中把数据导入到数据库中。EXP和IMP可以作为备份的补充方法,但是不要把EXP和IMP当然唯一的数据库备份方案。

整库备份和部分数据库备份

整库备份:包括当前和控制文件和所有的数据文件。整库备份是最常见的备份形式。整库备份可以是一致性备份也可以是不一致性备份。备份是否是一致的决定还原数据文件后是否应用日志文件。可以用下列办法完成整库备份:

通过操作系统命令拷贝所有的数据文件和当前的控制文件;

RMAN的BACKUP DATABASE命令;

对每个数据文件执行RMAN的COPY DATAFILE命令,并通过COPY CURRENT CONTROLFILE备份当前的控制文件。

表空间备份:备份构成表空间的所有数据文件。表空间的备份,不管是联机备份还是脱机备份,数据库都必须处于归档模式下。这是由于需要重做日志将这个表空间恢复到和数据库中其它表空间一致的状态。如果数据库是非归档模式,则表空间备份只对只读表空间或正常脱机的表空间有效,因为它们不需要重做日志进行恢复。使用下面的方法进行表空间的备份:

通过操作系统命令拷贝表空间下的所有数据文件;

RMAN的BACKUP TABLESPACE命令;

对表空间的每个数据文件执行RMAN的COPY DATAFILE命令。

数据文件备份:数据文件备份是指单独一个数据文件的备份。数据文件备份是对归档模式有效。在非归档的数据库中,必须满足以下条件:

表空间中下所有的数据文件都是备份的;

数据文件是只读的或正常脱机的。

使用下面的方法备份数据文件:

操作系统命令;

RMAN的BACKUP DATAFILE命令;

RMAN的COPY DATAFILE命令。

控制文件备份:备份控制文件是备份和恢复中至关重要的一个方面。缺少控制文件,将无法加载并打开数据库。如果使用RMAN作为备份和恢复的解决方案,运行CONFIGURE CONTROLFILE AUTOBACKUP命令,则RMAN在进行BACKUP或COPY工作时,自动备份控制文件。可以通过下面的方法手工备份控制文件:

RMAN的BACKUP CURRENT CONTROLFILE创建RMAN特殊的控制文件的备份,COPY CURRENT CONTROLFILE命令创建控制文件的映像备份;

通过语句ALTER DATABASE BACKUP CONTROLFILE创建控制文件的二进制的备份;

通过SQL语句ALTER DATABASE BACKUP CONTROLFILE TO TRACE将控制文件内容导出到SQL脚本文件。通过TRACE文件备份的缺点是:没有归档日志的记录,没有数据文件脱机记录,没有RMAN的备份和拷贝记录。

归档重做日志的备份:归档重做日志是恢复不一致备份的关键。不用归档日志恢复不一致备份的唯一方法是通过RMAN的增量备份。可以通过下来方法备份归档重做日志:

操作系统命令;

RMAN的BACKUP ARCHIVELOG命令;

RMAN的BACKUP …… PLUS ARCHIVELOG命令;

RMAN的COPY ARCHIVELOG命令。

一致性备份和不一致备份

不一致备份:在数据库打开或数据库非正常关闭时对一个或多个数据库文件进行的备份。

一致性备份:数据库在“干净”的关闭后对一个或多个数据文件进行的备份。一致性备份在还原数据文件后不需要进行恢复。

一致性备份是指数据库备份中的所有数据文件和控制文件具有相同的系统改变号(SYSTEM CHANGE NUMBER SCN)。Oracle通过检查数据文件头和控制文件中包含的数据文件头信息来确定一个备份是否是一致的。建立一致性备份的唯一方式是正常关闭数据库然后备份。正常关闭数据库是指使用NORMAL、IMMEDIATE和TRANSACTION选项关闭的数据库。一致性备份进行数据文件的还原后不需要进行恢复操作,它也是非归档模式下唯一的正确备份方式。

不一致备份:数据库备份中的数据文件和控制文件没有对应到相同的SCN上。如果数据库是7×24的,那么除了执行整库的不一致备份外,没有的选择。如果数据库处于归档模式下,用户可以通过不同时间创建的在线数据文件的备份来构建一个整库备份。

不一致的停机备份:数据库崩溃或使用SHUTDOWN ABORT方式关闭数据库后建立的备份。这种类型的备份只有在数据库是归档模式下才是有效的,而且联机日志和归档日志都需要用来保证备份的一致性。

将尚未归档联机重做日志归档:当执行了联机备份或停机的不一致备份,应该马上归档当前的联机重做日志来保证备份的恢复。如果数据库是打开的,使用下面的命令切换当前的日志并归档:

ALTER SYSTEM ARCHIVE LOG CURRENT;

如果数据库是处于装载、打开或关闭状态,可以使用下面的命令归档所有的非当前联机日志:

ALTER SYSTEM ARCHIVE LOG ALL;

备份归档日志和控制文件:当执行了联机备份和停机的不一致备份,Oracle推荐备份所有的归档日志文件和控制文件。如果没有备份在备份过程中产生的归档日志,则无法将数据库恢复到一致性状态。而控制文件中包含了RMAN的备份记录。

联机备份和停机备份

联机备份:在数据库打开的时候备份数据文件。这种备份方式只对归档模式有效。在这种情况下,Oracle可以在备份的同时对联机数据文件进行写操作。当进行联机备份时可能存在数据块不一致的危险。比如,在进行联机备份的过程中Oracle的写进程正在对一个数据块进行更新。在有可能联机备份的数据块的上半部分包括旧的数据而下半部分包含新的数据,这种数据块叫做破裂数据块(fractured block),意味着数据块中包含的数据是不一致的。如果使用RMAN备份,是Oracle服务器进程而不是操作系统工具在读取数据文件。服务器进程读取整个数据块并比较每个块的头和尾来确定数据块是否是断裂的。如果发现数据块是断裂的,则会重读该块,直到得到一个一致的数据块。

如果使用操作系统方式备份数据块,则必须使用其他的办法来处理断裂块。首先必须使用ALTER TABLESPACE BEGIN BACKUP语句将联机表空间处于备份模式。这是Oracle停止在表空间的数据文件上记录检查点。当备份完成后通过ALTER TABLESPACE …… END BACKUP或ALTER DATABASE END BACKUP语句来结束备份模式。

备份脱机表空间和数据文件:对脱机状态的表空间和数据文件进行备份。可以使用下面三种选项执行ALTER TABLESPACE OFFLINE语句进行表空间的脱机:NORMAL、TEMPORARY或IMMEDIATE。采用NORMAL方式进行表空间的脱机可以保证备份在恢复的时候不需要进行恢复。采用这种方式,可以备份和恢复表空间而不需要关闭数据库或执行恢复操作。

RMAN和用户管理备份

RMAN备份的存储格式和用户管理备份的不同。使用RMAN可以和第三方工具集成。RMAN也可以通过COPY命令生成可用于操作系统命令恢复的备份。

用户管理备份使用操作系统命令进行数据库的备份。用户管理备份和RMAN最大的不同在于用户比较自己记录备份了什么和备份在哪里。

阅读(1367) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~