成为MySQL DBA后,再看ORACLE数据库(十三、物理备份)

前面总结了ORACLE的逻辑备份,本文来总结以下ORACLE的物理备份。数据库的备份一般分为冷备份和热备份,其中冷备份是指将数据库彻底关闭后进行的一致性备份,由于需要关停数据库所以在实际应用中很少用到冷备份。而热备份是指在数据库运行的同时对数据库进行备份,本文主要总结的是ORACLE的热备份。ORACLE的热备份分为用户管理的热备份(user-managed backup and recovery)和ORACLE管理的热备份(Recovery Manager-RMAN)。

用户管理的热备份是指先将表空间置于热备份模式下,然后通过操作系统工具对文件进行复制备份,备份完成后再结束表空间的备份模式。Oracle管理的热备份是指通过RMAN对数据库进行联机热备份,RMAN备份不需要将表空间置于热备模式,减少了对数据库的影响,RMAN备份功能强大但是相对复杂,也是生产中用得最多的备份方式,本文讲的ORACLE物理备份主要针对的是RMAN备份。

一、NOCATALOG方式进行数据库备份

使用RMAN备份,需要将备份信息存起来,这些信息将用来恢复,默认情况下RMAN会将备份信息存储在控制文件中;ORACLE也支持把RMAN的备份信息存储在目录数据库中,叫做calalog database。首先,来看下不使用catalog方式进行数据库备份,这也是最基础的rman备份方式。使用nocatalog方式进行数据库备份,一般需要打开控制文件自动备份功能,打开该功能后ORACLE会在数据库发生重大变化之后(如增减表空间)自动进行控制文件和spfile文件的备份。进入rman管理器后执行configure controlfile autobackup on命令即可设置控制文件自动备份。

RMAN备份文件有两种存储方式:镜像拷贝和备份集。备份集只备份使用过的数据块而镜像拷贝是拷贝整个数据文件,一般默认的都是使用备份集。最简单的全库备份通过backup database命令即可完成。执行全库备份,加上tag即对备份打一个标签,可以看到rman备份完成,数据库的备份集默认存在了数据库的闪回区即快速恢复区内。因为数据库在完成备份后会写控制文件,所以在备份完成后触发了控制文件和参数文件的自动备份。

二、归档日志的备份

除了备份数据文件,为了保证数据库能恢复到指定的任意时间点,归档日志的备份在生产中也是必不可少的。我们可以直接执行backup archivelog或者在备份数据文件和控制文件的同时指定backup ... plus archivelog操作来一起备份归档日志。归档日志的备份支持备份全部也支持备份某个时间段的。

backup archivelog all;
backup archivelog from time 'sysdate-30' until time 'sysdate-7';

RMAN在备份归档前会先给数据库发出一个alter system archive log current命令归档所有的非当前redolog,然后再执行归档日志的备份。上面归档日志的备份针对的是全部归档日志,实际使用中,我们不可能每次都备份全部归档日志,这样将产生归档日志重复备份的情况。在RMAN的参数设置中,有一个备份优化选项,通过设置configure backup optimization on启用备份优化,这样可以避免归档日志的重复备份。此外,也可以在备份完归档日志后立即清理已备份的归档日志,这样也是更方便更节约空间的办法。在ORACLE中,删除归档日志的操作同样通过rman来完成,backup命令后面加上delete input即可以删除刚刚已备份的归档日志。还可以制定定时任务,删除指定时间的归档日志,noprompt参数表示不提示删除并且只会删除已备份的归档日志。

backup archivelog all delete input;
delete noprompt archivelog all before 'sysdate-6';

任何时刻,我都应通过rman去维护备份的相关操作,这样可以保证rman信息一致,否则会出现控制文件中的备份记录和实际备份不一致的现象。

三、RMAN的备份保留策略

使用rman对备份集进行管理一般需要设置备份的保留策略,备份保留策略可以基于冗余或恢复窗口。当备份不需要时会被标记为废弃(obsolete),但废弃的备份不会被删除,使用report obsolete命令可以查看已废弃的备份,通过delete obsolete命令可以删除废弃的备份。

configure retention policy to redundancy 3;
configure retention policy to recovery window of 7 days;
report obsolete;
delete noprompt obsolete;

四、RMAN恢复

在RMAN恢复中,主要依靠两个命令完成restore和recovery,restore一般称为转储指从备份集中恢复对应的文件,recovery称为恢复指利用归档日志和redo进行完全或基于时间点的恢复。当ORACLE的数据文件损坏或丢失后,如果数据库的参数文件和控制文件完好,那么就可以通过rman的备份集恢复数据文件,并应用归档日志,实现数据库的完全或不完全恢复。恢复数据库时需要把数据库启动到mount状态。

startup mount;
list backup summary;
restore database;
recovery database;
alter database open;

在进行数据库的不完全恢复时,一般可以指定到恢复的时间点,并在完成恢复后需要使用resetlog选项启动数据库重置redolog。在restore转储时加上tag可以指定备份集这样就可以指定恢复哪一天的备份。

recovery database until time '2024-07-10 16:00:00';
alter database open resetlogs;
restore database from tag='';#指定备份集恢复

五、总结

ORACLE的RMAN是一个功能非常强大的备份恢复管理工具,本来介绍的只是数据库与日志备份恢复的基本功能和使用方法。实际使用中可以使用catalog数据库对管理多个数据库的备份。RMAN还支持增量备份可以只备份全备之后变化的数据块,大大节约了备份的空间。此外,RMAN还有备份加密、备份压缩、备份和归档日志的crosscheck等功能。总之,RMAN功能的强大是其他数据库不可比拟的,实际使用中我们需要根据自己的需求制定合适备份计划,保证参数文件,控制文件,数据文件,归档日志的备份,毕竟备份是数据库运维的最后一道防线。

 

posted @ 2024-07-10 22:39  海布里_MySQL  阅读(3)  评论(0编辑  收藏  举报