恢复基础总结

什么情况要恢复,肯定是出错的时候,首先要说的肯定就是错误类型。


一、错误类型


1.用户操作导致的错误


2.系统进程导致的错误
process monitor(PMON),这个进程是用来监测故障进程的,如果PMON监测到他能处理的用户进程或服务进程出现错误,则PMON会自动修复这些进程。如果是PMON崩溃了,那实例也会跟着崩溃,通常会触发实例错误


3.实例导致的错误
a.进程错误可能会导致
b.服务器断电,操作系统自身崩溃


实例错误通常可能导致以下的错误:
提交的事务要修改的数据尚未写到数据文件。
未提交的事务修改的数据写入到了数据文件。




4.存储介质导致的错误
存储介质坏了,不仅可能导致数据库崩溃,甚至直接丢失数据文件,针对这种错误必须进行介质恢复(DBA/SA)。对于用户误删数据或者错误操作导致数据丢失,并且无法通过逻辑手段恢复的,也可以通过介质恢复进行恢复。


二、恢复类型


1.实例恢复(instance recovery):这种恢复由oracle自动进行,通过读取当前的数据文件和联机重做日志文件
恢复步骤:
a.缓存恢复:前滚,已经提交的事务,但尚未写如数据文件的数据,把它写入数据文件。
b.事务恢复:回退,部分未提交的事务,误写入到数据文件,这些事务必须被撤销。




2.介质恢复:需要用到DBA创建的备份进行恢复,或重新应用数据文件的操作。数据出现错误并且无法用逻辑方式恢复。介质恢复首先将数据库恢复到备份时的状态,然后通过应用重做日志的方式将数据库恢复到最近的时间点(应用所有重做日志)  或者   某个指定的时间点(只应用部分重做日志,不超过重做日志中记录的最后时间点)。这里一ing该是运用到了SCN的知识,SCN即系统改变号。




三、恢复方式


完全恢复:将数据库恢复到最近时间点的恢复。定义中应该说是应用了所有的重做日志,所以说不能狭隘认为是整个数据库的恢复才是完全恢复,也可以针对表空间或者数据文件做完全恢复。




不完全恢复:是将数据库恢复到非当前时刻的状态。感觉还是用日志来解释比较好,只应用部分归档或联机重做日志,SCN,将数据库恢复到指定状态。
不完全恢复同样支持表空间级别,或者,数据文件级别的不完全恢复。








四、恢复操作
1.数据库修复restore:修复是指将要恢复的文件从备份集中读取出来,在RMAN中对应restore命令
2.数据恢复recover:应用所有的重做日志,将数据库恢复到崩溃前的状态,或者应用部分redo,将数据库恢复到指定的时间点。










图片解释:


数据库在SCN=100的时候执行了备份,但是在SCN=500的时候出现了介质错误。这时候我们就要恢复数据库。首先restore将数据库恢复到SCN=100的时间,然后开始使用recover使用SCN=100---SCN=500的重做日志将数据库恢复到崩溃前的状态。这个是按照备份时间点向前进行恢复。我理解向前向后是看SCN的大小,SCN越大说明越前,越新。SCN越小,说明越后,越老。(10R2提供了 flashback database特新开始支持从当前向后恢复)。








五、resetlogs
在执行了不完全恢复操作候,或者使用了备份的控制文件进行恢复,或者执行了flashback database操作之后,在打开数据库时必须指定resetlogs选项,这是有oracle自身特性决定的。
指定resetlogs会执行下列操作:
1.归档当前的在线重做日志(如果能访问),然后清空内容并将日志文件序列号重置为1(如果在线重做日志不存在,则重建)


2.重置控制文件中关于日志文件的元数据。


3.更新数据文件和重做日志中的resetlogs scn和重置时间信息。


alter database open resetlogs;


数据库执行完open resetlogs操作之后 建议立刻进行一次全备份。因为之前的备份都会失效,或者说是只能恢复到resetlogs之前的状态。
注:
resetlog 选项在不完全恢复时用
noresetlog 在完全恢复的时候用 




    六、常见的备份与恢复技术:




1.用户管理的备份和恢复:是使用操作系统复制相关文件?
再RMAN出现之前时使用这种方式,现在已经很少使用,再一些特殊情况下这种方式稍具优势:


a.误删数据文件:操作系统上的物理删除,如果删除的数据文件从创建到当前状态的归档都还存在,可以通过特定的操作重建该数据文件。


b.临时进行的备份和恢复:比如为架设一个与现有数据库一模一样的测试环境,如果通过RMAN进行,必然会有备份和恢复操作,如果是通过用户管理的方式进行,可以将备份过程视作“备份+修复”的过程,然后再复制归档和在线日志,进行恢复操作即可。




2.RMAN备份和恢复:RMAN的备份是由oracle自身的服务进程操作,DBA只需要指定备份方式,备份内容,以及备份存储的路径,其他工作都由RMAN自动完成。        






3.逻辑导入/导出(export/import和Data Pump)


逻辑备份主要是备份数据,导出表,过程等对象到一个二进制文件中。
逻辑导入/导出工具可以用来进行数据库迁移,对于跨平台,甚至又跨版本的数据库迁移,如果没有选择第三方产品,并且不愿意通过高级复制或者自写程序方式迁移数据的话,使用逻辑导入/导出工具进行数据库迁移就成了唯一选择。




4.闪回         
a.闪回查询:通过查询UNDO段,能够重现操作之前的数据。
b.闪回表:关键词:回收站,drop表及关联的索引.
c.闪回数据库






5.data guard:
standby和primary保持一致,主要目的是通过数据冗余进行容灾,当primary数据库因为某些原因无法访问,可以将应用快速切换至standby数据库,如果调配得当,停机时间非常短暂。(data guard并不能实现故障切换,完全无停顿)








来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31347524/viewspace-2135868/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/31347524/viewspace-2135868/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值