您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > ORACLE数据库备份方案
数据库备份方案一前言如同社会总会有不公平、人总会犯错误、程序总会有BUG一样,数据库出现问题是不可避免的,好的备份是项目成功应用的关键。从独立的硬盘保存备份文件、主机与从机同步(DATAGUARD)到多实例单数据库的负载平衡(RAC),按照不同的需求对应不同级别的技术,但其根本就是数据的冗余,用人力和物力来提高数据可用性。二备份恢复工具简介1,常用的imp/exp工具我们常用的imp/exp工具是由Oracle提供的用于在客户端把数据导出到dmp文件,进行数据转移和保存的方法,是逻辑备份。在11gR2中已经废弃exp,保留imp,相关操作由数据汞(DataPump)的impdp/expdp代替。优点为:1,使用简单。2,可以指定导出某个逻辑对象(整个数据库或用户或表)缺点为:1,不能进行完全恢复(CompleteRecovery)2,只能备份数据文件(DataFile)3,全库导出对数据库压力较大4,占用空间较大2,恢复管理器(RMAN)由Oracle提供的专业的备份与恢复工具,是物理备份。优点为:1,可以进行完全恢复与不完全恢复2,可以备份所有数据库文件(控制文件,服务器参数文件,归档日志文件,数据文件)3,具有功能强大的控制能力和脚本编写语言4,支持在线热备份5,支持多级增量备份6,支持并行备份,恢复7,减少备份数据量(压缩、块级备份)8,可将文件备份到磁盘或磁带9,支持在线块级别恢复10,可以限制速率,减少备份中对系统的造成的影响11,等等。。。三配置RMAN1,配置归档(ARCHIVELOG)模式数据库在装载(MOUNT)模式下执行下列操作开启归档模式SQLALTERDATABASEARCHIVELOG;将数据库置于归档模式可防止重做日志在归档之前被覆盖。如果处于非归档(NOARCHIVELOG)模式,数据库只能恢复到上一次备份的时间,到当前时间的之间的数据变更都会丢失。2,配置控制文件自动备份RMANCONFIGURECONTROLFILEAUTOBACKUPON;RMAN的相关信息保存在控制文件中(非CATALOG模式),如果控制文件丢失而又没有备份的话,会给数据库的恢复造成很大困难3,配置控制文件记录保持时间SQLALTERSYSTEMSETCONTROL_FILE_RECORD_KEEP_TIME=45;设置RMAN备份信息保存在控制文件中的时间,要大于等于保留策略的恢复窗口。4,配置保留策略的恢复窗口RMANCONFIGURERETENTIONPOLICYTORECOVERYWINDOWOF31DAYS;备份文件超过这个日期时RMAN会标记为已不用(OBSOLETE):RMANREPORTOBSOLETE;数据库中的文件超过这个日期时RMAN会报告需要备份:RMANREPORTNEEDBACKUP;5,设定默认保存备份文件的路径RMANCONFIGURECHANNELDEVICETYPEDISKFORMAT'D:/BACKUP/%U'6,启用快速增量备份在9i中,RMAN进行增量备份要扫描所有数据文件,找出发生变更的数据块,然后进行备份。在10g中,增加了一个新特性---块更改跟踪(BlockChangeTracking),会把发生变更的数据块记录在一个跟踪文件内,这样就避免了增量备份时对数据库的全面扫描。SQLALTERDATABASEENABLEBLOCKCHANGETRACKINGUSINGFILE'D:/BACKUP/BLOCK_CHANGE_TRACKING.TRC';7,配置RMAN使用优化(OPTIMIZATION)模式RMANCONFIGUREBACKUPOPTIMIZATIONON;开启优化模式RMAN会自动跳过满足某些条件的文件,实验表明,优化模式可以提高10%左右的性能8,配置RMAN使用压缩备份集RMANCONFIGUREDEVICETYPEDISKBACKUPTYPETOCOMPRESSEDBACKUPSETPARALLELISM1;在10g中RMAN增加了一个新特性---压缩备份集,能够使备份集减少到原来的1/5或1/6,代价是增加10%左右的CPU消耗,可以根据实际情况选择使用。条件允许的话(多物理硬盘、多CPU)还可以用上面命令设定并行备份四多级备份策略采用多级备份是为了减少了恢复所需要的时间和减少每天备份所需要的时间,而又保证系统有很好的恢复性。但是在恢复时间和备份时间要有一个权衡。比如只要开始的一个全备份和备份所有产生的归档文件就可以保证把数据库恢复到最新的状态,但是一般来说实际上并不会这么进行(因为在恢复时将需要很长很长的时间),多级备份就是为了解决这样的问题。以下是一种建议的方案。每个月做一次零级备份每个星期做一次一级增量备份每天做一次一级差异备份当需要时(如不到二十四个小时归档文件系统就要满了)备份归档文件1,零级备份脚本RMANRUN{ALLOCATECHANNEL'DEV1'TYPEDISK;ALLOCATECHANNEL'DEV2'TYPEDISK;ALLOCATECHANNEL'DEV3'TYPEDISK;BACKUPINCREMENTALLEVEL0TAG'LV0'FORMAT'D:/ORACLE/BACKUP/%U'DATABASEPLUSARCHIVELOGDELETEALLINPUT;DELETENOPROMPTOBSOLETE;RELEASECHANNELDEV1;RELEASECHANNELDEV2;RELEASECHANNELDEV3;}2,一级增量备份脚本RMANRUN{ALLOCATECHANNEL'DEV1'TYPEDISK;ALLOCATECHANNEL'DEV2'TYPEDISK;ALLOCATECHANNEL'DEV3'TYPEDISK;BACKUPINCREMENTALLEVEL1CUMULATIVETAG'LV1C'FORMAT'D:/ORACLE/BACKUP/%U'DATABASEPLUSARCHIVELOGDELETEALLINPUT;RELEASECHANNELDEV1;RELEASECHANNELDEV2;RELEASECHANNELDEV3;}3,一级差异备份脚本RMANRUN{ALLOCATECHANNEL'DEV1'TYPEDISK;ALLOCATECHANNEL'DEV2'TYPEDISK;ALLOCATECHANNEL'DEV3'TYPEDISK;BACKUPINCREMENTALLEVEL1TAG'LV1D'FORMAT'D:/ORACLE/BACKUP/%U'DATABASEPLUSARCHIVELOGDELETEALLINPUT;RELEASECHANNELDEV1;RELEASECHANNELDEV2;RELEASECHANNELDEV3;}4,归档文件备份脚本RMANRUN{ALLOCATECHANNEL'DEV1'TYPEDISK;ALLOCATECHANNEL'DEV2'TYPEDISK;ALLOCATECHANNEL'DEV3'TYPEDISK;BACKUPFILESPERSET3ARCHIVELOGALLDELETEINPUT;RELEASECHANNELDEV1;RELEASECHANNELDEV2;RELEASECHANNELDEV3;}则每天所需要备份的数据量只有一天的改变量。而做恢复时最多只要恢复当月的一个零级备份+三个一级增量备份+6个一级差异备份+当天的归档文件。如果不能接受这样的恢复时间,就只能够减少零级备份之间的时间间隔(如可以每个星期做一个零级备份,这样恢复时最多只需要恢复一个星期的数据量)。对于负载极低的系统甚至可以半年做一次零级备份五管理RMAN通过RMAN的REPORT,LIST,CROSSCHECK,DELETE命令可以对RMAN进行管理。1,如果手动删除了备份文件的话,需要执行交叉检验让RMAN进行同步。RMANCROSSCHECKBACKUP;RMANCROSSCHECKARCHIVELOGALL;交叉检验后RMAN会把已经被手动删除的备份文件的状态设置为过期(EXPIRED)。2,报告已不用(OBSOLETE)和过期(EXPIRED)的备份文件。RMANREPORTOBSOLETE;RMANLISTEXPIREDBACKUP;3,删除已不用(OBSOLETE)和过期(EXPIRED)的备份文件。RMANDELETEOBSOLETE;RMANDELETEEXPIREDBACKUP;六使用RMAN进行恢复RMAN的整个恢复过程可以分为还原(RESTORE)与恢复(RECOVER),他们在含义上是有很大差别的,一个是指物理意义的文件的还原与拷贝,一个是指数据库一致性的恢复。数据库的的恢复比较复杂,有许多不同的情况,必须在了解ORACLE数据库结构的条件下用不同的方法进行处理。下面只列出最普通的恢复情况。恢复整个数据库之前必须让数据库处于状态的状态(MOUNT)状态。SQLSTARTUPMOUNT;然后执行RMAN命令进行还原和恢复。1,完全恢复1.1,恢复整个数据库RMANRUN{ALLOCATECHANNEL'DEV1'TYPEDISK;ALLOCATECHANNEL'DEV2'TYPEDISK;ALLOCATECHANNEL'DEV3'TYPEDISK;RESTOREDATABASE;RECOVERDATABASE;RELEASECHANNELDEV1;RELEASECHANNELDEV2;RELEASECHANNELDEV3;}1.2,恢复指定表空间或数据文件在恢复该表空间之前让该表空间处于脱机的状态(OFFLINE状态)。SQLALTERTABLESPACETBSOFFLINE;然后通过RMN进行恢复。RMANRUN{ALLOCATECHANNEL'DEV1'TYPEDISK;ALLOCATECHANNEL'DEV2'TYPEDISK;ALLOCATECHANNEL'DEV3'TYPEDISK;RESTORETABLESPACETBS;RECOVERTABLESPACETBS;RELEASECHANNELDEV1;RELEASECHANNELDEV2;RELEASECHANNELDEV3;}2,不完全恢复不完全恢复情况比较复杂,大致分一下四类。1,基于时间的恢复(Time-basedrecovery)2,基于撤销的恢复(Cancel-basedrecovery)3,基于改变的恢复(Change-basedrecovery)4,日志序列恢复(Logsequencerecovery)3,块级别的恢复RMAN可以在线对逻辑损坏的数据块进行恢复而不影响数据库的运行。RMANBLOCKRECOVERDATAFILE6BLOCK3;七使用FLASHBACK进行快速恢复发生以下类型的错误时,通常需要使用备份执行恢复:•介质故障:因数据库文件的物理问题而导致无法读写该文件•用户错误:数据库中的数据被误更改或误删除使用RMAN进行介质故障恢复,使用FLASHBACK进行用户错误恢复。1,9i中的FLASHBACK:查询数据库的SCN变化情况SQLSELECTNAME,FIRST_CHANGE#FSCN,NEXT_CHANGE#NSCN,FIRST_TIMEFROMV$ARCHIVED_LOG;获得当前SCNSQLSELECTDBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBERFSCNFROMDUAL;创建恢复表,选择恢复到合适的SCNSQLINSERTINTOTB_RECOVERSELECT*FROMTBASOFSCN1999999999;2,10g中的FLASHBACK:10g的FLASHBACK进行了增强和修改,通过回闪,用户可以完成许多不可能恢复的工作,目前10g的回闪包括以下特性;1,oraclefalshbackDatabase.该特性允许oracle通过Flashba
本文标题:ORACLE数据库备份方案
链接地址:https://www.777doc.com/doc-4942156 .html