备份原理(oracle 9i)

来源:互联网 发布:linux 进程启动顺序 编辑:程序博客网 时间:2024/05/21 14:08

1、物理和逻辑备份
物理备份:备份物理文件,包括数据文件和控制文件。如果上归档模式还需要备份归档重做日志文件。
物理备份又分两种:
image copies:复制数据文件、控制文件和归档日志,可以使用操作系统工具(copy)或rman copy 命令
proprietary format:rman 备份产生a backup set,它是一个逻辑对象包含一个或者多个backup pieces,
每个backup piece 是一个物理文件in a proprietary,它是binary format,必须用rman 才能还原一个backcup set.
逻辑备份:到处schema对象到一个二进制文件,到出的二进制文件只能用import工具才能还原相应的数据到数据库中
逻辑备份可以做为物理备份很好的补充,特别它可以用来备份rman的恢复库,让还原rman变得很容易。


2、全备份和部分备份
(1)全备份:是备份整个数据库的数据文件,当前控制文件,全备份可以是归档或者不归档,如果是不归档模式下,只能在关闭状态下进行全备份,这时备份的数据库是一致性的备份;在归档模式下,可以在关闭和open状态下进行,在open状态下只能是不一致的备份,而在关闭状态下,可以一致或者不一致(shutdown abort)。总之判断是否一致和不一致备份的标准是取决于你是否需要应用重做日志(apply redo log)在还原(restore)以前备份之后。
全备份的方法有:
a)使用操作系统命令copy所有数据文件和当前控制文件
b)rman 中的backup database命令
c)rman 命令copy datafile (针对每个都要做),以及copy current controlfile命令

(2)部分备份:只备份表空间、数据文件或者控制文件
1)表空间备份:也就是备份该表空间中所有的数据文件,在归档模式下,无论表空间是否online 或者offline,都是有效的,因为重做日志会还原表空间同数据库其他的表空间到一致的状态。在非归档模式下,只有当表空间是正常offline或者read-only,该备份才会有效,因为这种情况下,不需要apply重做日志。
备份单独表空间方法:
a)使用操作系统命令copy该表空间里所有数据文件
b)rman 中backup tablespace命令
c)rman 中copy datafile 命令针对表空间中每个数据文件运行
2)数据文件:是指备份单个数据文件,在归档模式下都是有效的,但在非归档模式下,只有当在以下条件下时才备份才会有效:
a)Every datafile in a tablespace is backed up. You cannot restore the database unless all datafiles are backed up.
b)数据文件只读或者offline-normal
备份数据文件方式:
a)操作系统工具
b)rman使用backup datafile
c)rman使用copy datafile,会生成一个datafile copy
3)控制文件备份:在备份和恢复中备份控制文件是至关重要的一个方面,没有一个正确可得到的控制文件,数据库将不能正常mount或open
备份控制文件方法:
a)rman中,configure controlfile autobackup 命令进行自动备份配置,那么每当用rman进行backup和copy时,都会自动备份
b)rman中,backup current controlfile命令creates 一个rman-specific 备份控制文件,copy current controlfile命令则能够创建一个image copy of the control file
c)sql语句,alter database backup controlfile 会创建一个二进制的备份控制文件
d)sql语句,alter database backup controlfile to trace 导出控制文件内容到sql 脚本文件,可以使用这个脚本创建一个新的控制文件,但trace file 备份有个重要的不足,就是它不包含归档重做日志记录,脱机(offline)的数据文件和rman备份和copies记录,所以二进制备份是更好的选择

4)归档重做日志备份:归档重做日志是不一致备份进行恢复中的基本要素,在非一致性备份的情况缺少归档重做日志进行恢复的唯一情况就是使用rman进行增量备份。鉴于归档重做日志是恢复过程中最重要的要素,所以要进行有规则备份,可备份归档重做日志到tape
备份方式:
a)操作系统工具,进行copy
b)rman中,backup archivelog 命令
c)rman中,backup ...plus archivelog 命令
d)rman中,copy archivelog 命令

3、一致性和不一致性备份
可以使用rman 或 operating system 命令去进行一致或非一致性的备份,非一致性备份是当数据库处于open状态或者数据库使用shutdown abort命令关闭后进行的一个或多个数据文件的备份;一致性备份,它是数据库在正常关闭后针对一个或多个数据库文件进行的备份,跟非一致性备份不同,一致的全备份在restored后不需要恢复,是否使用一致性或非一致性备份取决于下下因素:如果数据库必须处于打开状态(7*24)并可用,那么非一致性备份是唯一的选择,如果可以容忍少量的停机,那么可以定期地采用一致性的全库备份,并对经常使用的表空间进行在线备份进行补充。
1)consistent backup:一致性备份一个数据库或者数据库的一部分,那么这部分的数据文件及控制文件必须被checkpointed并且拥有相同的scn(system change number),oracle 决定是否一致性备份通过检查数据文件头以及这个数据文件头的在控制文件里的信息,如果是一致的,则表示为一致性备份。只有当数据库正常关闭,既通过normal,immediate,transactional选项关闭数据库,而后进行的备份才是一致的,如果instance fails或者shutdown abort进行关闭,那么数据文件是不一致的,这时当数据库打开时是需要instance 恢复,(当然数据库是read-only database不需要进行instance 恢复)
oracle 通过checkpoint进程使控制文件和数据文件拥有一致的scn,当表空间处于只读(read-only)或者offline normal tablespace 时,允许使用旧的scns,这时该表空间中的数据文件跟其他的数据文件仍然被认为是一致的,因为在脱机后,表空间没有进行任何新的改变。
当数据库restore 一致性数据库全备份后,打开数据库将不需要应用redo,因为数据已经是一致的,不需要新的动作使数据文件变正确。
在noarchivelog模式下,一致性全备份是唯一有效的选择,因为如果选择了不一致性备份,那么恢复需要apply redo,而非归档模式下,所需要的redo logs有可能是不存在磁盘上。
2)noconsistent backup:非一致性备份是备份中的数据文件和控制文件他们没有被checkpointed至相同的scn,oracle将不能打开数据库直到所有的文件头header scns是consistent,也就是说,直到在线重做日志中所有的改变的记录都应用到磁盘中数据文件中。
作为24*7的系统,唯一的选择是进行非一致性的备份,这时数据库必须是归档模式,当offline a tablespace进行备份时,那么这时这个表空间中的数据文件将跟其他表空间是不一致的了,因为数据库在进行活动,数据库中的其他部分会被修改,那么这是offline和online的数据文件可能会包含不一致的scns。
当数据库处于归档模式下,可以建立一个全备份使用备份在线数据文件在不同的时间,例如,在不同时间分别备份数据库中所有的表空间及控制文件,我们认为这种交错排列的备份是一个全备份。
关闭状态下,可以进行非一致性备份,当数据库处于归档模式下,如果关闭时使用了shutdown abort,那么关闭后进行的备份,就是不一致性备份,但这个备份是有效的,因为可以应用在线和归档重做日志使数据库在打开的时候处于一致。
而在noarchivelog模式下,进行的非一致性全数据库备份,仅仅当redo logs包含所有在上次backup以来的改变,这种情况很少也不希望发生。oracle强烈建议别在noarchivelog 模式下进行shutdown abort命令,如果没有归档重做日志,那么将是不可能恢复。
3)归档未归档的重做日志文件
因为当online backup 和inconsistent closed backup,总会应用重做日志进行恢复,所以有时需要为未归档的重做日志进行归档,具体方式如下:
当数据库处于open状态:alter system archive log current;
当mounted,open or colsed: alter system archive log all;
当mounted,open or colsed归档特定组:alter system archive log group integer;
4)备份归档日志和控制文件
在打开或非一致性备份关闭的备份后,oracle推荐备份所有在备份期间产生的归档日志,并且在备份完成后备份控制文件。

4、在线和离线备份
1)备份在线表空间和数据文件
只有在archivelog模式下,才可以在线备份一个表空间中的一个或所有数据文件,备份在线状态下的数据文件称为online backup.在线备份期间,oracle能写改变到在线的数据文件。
执行在线备份可能有一个潜在的威胁就是在一个块中含有不一致的数据,在一个rman备份期间,一个oracle server session读整个数据块,比较块头和脚部分看该块是否断裂,如果断裂则重新读该块直到一致为止,而在使用操作系统工具备份一个单独数据文件或者在线表空间时,必须先把表空间置于backup mode通过使用命令:alter tablespace ... begin backup;语句,这样oracle 将停止记录checkpoints到表空间中的数据文件中,当备份完成后,通过下面命令:alter tablespace ...end backup;或alter database end backup 语句时表空间脱离备份模式,这是oracle会更新文件头部并记录当前的checkpoint.
当从一个备份中还原一个数据文件时,数据文件头是一个在做在线表空间备份前的最近一次checkpoint的值,这时oracle会要求合适的重做日志应用到恢复中。
2)备份离线表空间和数据文件
当alter tablespace offline normal|temporary|immediate;这三种选项.

5、rman和user-managed 备份
1)rman
backup set 是一个逻辑结构,它有一个或多个backup pieces组成
backup piece是一个私有格式文件包含来字一个或多个数据文件,控制文件或归档重做日志文件中的块
rman>backup database;
rman>copy datafile 1 to 'df1.copy';
2)user-managed backup
% dd if=/oracle/dbs/df1.f of=/backup/df1.bak bs=1024k --unix
C:> COPY df1.dbf F:BACKUPdf1.dbf --nt