如何进行事务故障恢复,系统故障恢复,介质故障恢

如何进行事务故障恢复,系统故障恢复,介质故障恢,第1张

1)事务故障恢复。由系统自动完成,对用户是透明的。

DBMS执行恢复 *** 作的步骤如下:

①反向扫描日志文件(即从最后向前扫描日志文件),查找该事务的更新 *** 作。

②对该事务的更新 *** 作执行逆 *** 作,即将日志记录中“更新前的值”写入数据库

③继续反向扫描日志文件,做同样处理。

④如此处理下去,直至读到此事务的开始标记,该事务故障的恢复就完成了。

(2)系统故障恢复。系统故障可能会造成数据库处于不一致性状态:一是未完成事务对数据库的更新可能已写入数据库;二是已提交事务对数据库的更新可能还留在缓冲区,没来得及写入数据库。因此,恢复 *** 作就是要撤销故障发生时未完成的事务,重做已完成的事务。

系统故障的恢复步骤如下:

①正向扫描日志文件,找出在故障发生前已经提交的事务队列(REDO队列)和未完成的事务队列(UNDO队列)。

②对撤销队列中的各个事务进行UNDO处理。进行UNDO处理的方法是,反向扫描日志文件,对每个UNDO事务的更新 *** 作执行逆 *** 作,即将日志记录中“更新前的值”写入数据库。

③对重做队列中的各个事务进行REDO处理。进行REDO处理的方法是,正向扫描日志文件,对每个REDO事务重新执行日志文件登记的 *** 作,即将日志记录中“更新后的值”写入数据库。

(3)介质故障恢复。介质故障是最严重的一种故障。恢复方法是重装数据库,然后重做已完成的事务。具体过程如下:

①DBA装入最新的数据库后备副本(离故障发生时刻最近的转储副本),使数据库恢复到转储时的一致性状态。

②DBA装入转储结束时刻的日志文件副本。

③DBA启动系统恢复命令,由DBMS完成恢复功能,即重做已完成的事务。

问题已经解决了,都是在网上找的!

把这过程中遇到的问及解决办法和大家分享一下!

首先出现问题的过程如上所说!然后我试图找到恢复介质的办法!

网上有朋友说是数据库为非归档模式造成的,要将其改为归档模式:

1.cmd

2.sqlplus/nolog

4.connect/as sysdba

这时报了一个错:协议适配器错误

造成此问题的原因可能有三个:(此方法网上有)

a.监听服务没有起起来。windows平台个一如下 *** 作:开始---程序---管理工具---服务,打开服务面板,启动oraclehome92TNSlistener服务。

b.database instance没有起起来。windows平台如下 *** 作:开始---程序---管理工具---服务,打开服务面板,启动oracleserviceXXXX,XXXX就是你的database SID

c.注册表问题。regedit,然后进入HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0将该环境变量ORACLE_SID设置为XXXX,XXXX就是你的database SID.或者右几我的电脑,属性--高级--环境变量---系统变量--新建,变量名=oracle_sid,变量值=XXXX,XXXX就是你的database SID.或者进入sqlplus前,在command line下输set oracle_sid=XXXX,XXXX就是你的database SID

此时“协议适配器错误 ”应该就能解决了!

5.若数据库是打开的,首先关闭卸载数据库。shotdown

这时可能出现长时间等待,可以把Oracle服务重新启动一下再重复上面的步骤即可!

6.以mount模式打开数据库:STARTUP MOUNT

7.查询当前归档模式:ARCHIVE LOG LIST

如果数据库日志模式为非存档模式则更改归档模式为ARCHIVELOG:ALTER DATABASE ARCHIVELOG

再查询一下:ARCHIVE LOG LIST=》数据库日志模式 存档模式

如果要更改为非归档模式:ALTER DATABASE NOARCHIVELOG

8.再打开数据库: ALTER DATABASE OPEN

归档模式更改完毕!

9.第九步也是最关键的一步:恢复介质

recover datafile '新的数据文件路径'

10. alter tablespace xxxx online SQL》表空间已更改。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6422423.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-21
下一篇 2023-03-21

发表评论

登录后才能评论

评论列表(0条)

保存