oracle 数据库完全恢复,ORACLE DBA实践之三十六:数据库的完全恢复方法

数据库完全恢复方法

Oracle在大量的数据库系统应用的基础上,总结了4数据库完全恢复方法,这四种方法涵盖了绝大多数的数据库应用环境:

(1) 在数据库最初处于打开的状态下,进行的联机数据库恢复

(2) 在数据库最初处于关闭状态下,进行开启数据库的恢复

(3) 恢复没有备份的数据文件

(4) 在关闭的状态下进行数据库的恢复

在进行以上任何一种数据库恢复时,都要求归档日志文件存放于oracle服务器可以访问的磁盘上,如果归档日志文件存在与磁带上则要向将其复制到磁盘上,在进行数据库的恢复工作

一,

在数据库最初处于打开的状态下,进行开启数据库的恢复

这种方法适用情形需要满足以下三个条件:

(1) 所需数据文件不属于系统表空间或还原表空间

(2) 磁介质的破坏,数据文件的崩溃或丢失并未造成数据库的关闭

(3) 数据库是24*7运行的,数据库的当机时间必须保持在最小

该方法主要步骤:

(1) 查询DBA_DATA_FILES获取要恢复的数据文件及其对应表空间的信息

(2) 查询DBA_TABLESPACE和v$datafile分别获取要恢复的表空间及其数据文件的状态信息和文件号。

(3) 如果表空间处于联机状态,要先将其脱机或者是将其中的要恢复的数据文件脱机

(4) 使用操作系统命令将备份的数据文件复制回数据库中原来的位置,如果原来位置发生磁盘故障,可将其复制到其他合适的磁盘上,之后使用alter命令修改数据文件名。千万不要采取先修磁盘再使用的策略,因为修磁盘时间过长。

(5) 使用recover命令将数据库恢复所需所有提交的数据由归档日志文件或联机重做日志文件重新写入已修复的数据文件。这里可以使用recover

tablespace命令也可以使用recover datafile命令

(6) 恢复完成后将对应数据文件或表空间重新联机

(7) 如果是恢复到非原来位置,则要使用DBA_DATA_FILES重新获取恢复的数据文件及其表空间的信息,确认已经恢复到正确的位置

(8) 再次使用DBA_TABLESPACES和v$datafile获取表空间及其数据文件的状态信息

注:当一个表空间中有多个数据文件时,脱机该表空间则其所有表空间均脱机而变为不可访问,如果只将其中的某一个或几个数据文件脱机,则其他数据文件仍联机而且可访问,并且该表空间是联机的。但有时oracle会检测到有问题的数据文件并自动将其设为脱机,有关的出错信息会写到抱紧文件中,因此在备份之前,应先查询抱紧文件中的出错信息。

二,

在数据库最初处于关闭状态下,进行开启数据库的恢复

这种方法适用情形需要满足以下三个条件:

(1) 所需恢复的数据文件不属于系统表空间或还原表空间

(2) 介质的损坏,硬件的损毁,或数据文件的丢失已经造成了数据库的关闭

(3) 数据库是24*7运行的,数据库的当机时间必须保持在最小

该方法主要步骤:

(1) 使用startup mount命令加载数据库(因为数据文件损坏,数据库无法打开)

(2) 使用数据字典v$datafile确定要恢复的数据文件的文件名等信息(dba_tablespaces只有在数据库打开状态下才可用,因此此时不可用)

(3) 使用alter database “数据文件名” offline;命令将出问题的数据文件脱机(alter tablespace

“表空间名” offline;只有在数据库打开状态下才可用,此时不可用)

(4) 使用alter database open;命令打开数据库。因为出问题的数据文件已脱机,所有其他的数据文件都是同步的

(5) 使用操作系统命令将备份的数据文件复制回数据库中原来的位置,如果原来位置发生磁盘故障,可将其复制到其他合适的磁盘上,之后使用alter命令修改数据文件名。千万不要采取先修磁盘再使用的策略,因为修磁盘时间过长。

(6) 使用recover命令将数据库恢复所需所有提交的数据由归档日志文件或联机重做日志文件重新写入已修复的数据文件。这里可以使用recover

tablespace命令也可以使用recover datafile命令

(7) 恢复完成后将对应数据文件或表空间重新联机

(8) 如果是恢复到非原来位置,则要使用DBA_DATA_FILES重新获取恢复的数据文件及其表空间的信息,确认已经恢复到正确的位置

(9) 再次使用DBA_TABLESPACES和v$datafile获取表空间及其数据文件的状态信息

三,

恢复没有备份的数据文件

这种方法是在数据文件崩溃之前该文件没有任何备份的情况下,恢复数据文件的方法,其使用情形需满足三个条件:

(1) 所需恢复的数据文件不属于系统表空间或还原表空间

(2) 由于介质损坏或用户错误导致数据文件丢失,但此数据文件从来没有备份过

(3) 从这个数据文件创建以来所有的归档日志文件都完好无损

那么连备份都没有该如何恢复呢?首先,数据文件虽然丢失,但其数据结构仍然存于控制文件和数据字典中;其次,从这个文件创建开始,其中所有提交的数据都记录在归档日志文件或联机重做日志文件中。因此,我们可以利用控制文件和数据字典中的信息来重建数据文件的结构,然后利用归档日志文件和联机重做日志文件来恢复该数据文件所有提交的数据。

Oracle提供了两个重建数据文件结构的命令:

(1) alter

database create datafile “原文件名”;创建于原来数据文件同名的数据文件

(2) alter

database create datafile “原文件名” as

“新文件名”;创建与原数据文件不同名的数据文件,用于原文件所在的磁盘发生故障的时候

下面介绍该方法的具体操作步骤:

如果数据库时打开状态,则执行以下三步:

(1) 查询DBA_DATA_FILES获取要恢复的数据文件及其对应表空间的信息

(2) 查询DBA_TABLESPACE和v$datafile分别获取要恢复的表空间及其数据文件的状态信息和文件号。

(3) 如果表空间处于联机状态,要先将其脱机或者是将其中的要恢复的数据文件脱机。

如果数据库已经关闭,则执行以下三步:

(1) 使用startup mount加载数据库

(2) 使用alter database datafile “出问题的数据文件名” offline;将出问题的数据文件脱机

(3) 使用alter database open;打开数据库

接下来执行如下:

(4) 查询v$recover_file查看数据文件的恢复状态,此时error列显示为file not

found。Change#列为0,TIM为空

(5) 使用alter database create datafile命令重建数据文件的结构

(6) 再次查询v$recover_file查看数据文件的恢复状态,此时error列为空,change#列和TIM列为新值

(7) 使用recover命令将该数据文件所有提交的数据从归档日志文件和联机重做日志文件恢复到该数据文件中

(8) 使用alter tablespace或alter database联机出问题的表空间或出问题的数据文件

(9) 如果是恢复到非原来位置,则要使用DBA_DATA_FILES重新获取恢复的数据文件及其表空间的信息,确认已经恢复到正确的位置

(10)再次使用DBA_TABLESPACES和v$datafile获取表空间及其数据文件的状态信息

四,

在关闭的状态下进行数据库的恢复

一般商业数据库在业务运行期间,都是先尝试开启数据库的恢复,如果这种方法行不通,才采用关闭状态下的恢复。这种方法的适用情形需要满足以下三个条件:

(1) 所需恢复的数据文件不属于系统表空间或还原表空间

(2) 整个数据库或大多数数据文件都需要恢复

(3) 数据库不是24*7运行的,数据库在工作期间可以关闭

该方法主要步骤如下:

(1) 如果数据库是在打开状态,查询DBA_DATA_FILES获取数据文件及其对应表空间的信息

(2) 如果数据库是在打开状态,使用shutdown命令关闭数据库。我们可能需要使用shutdown abort命令

(3) 以加载方式启动数据库:startup mount

(4) 使用操作系统命令将备份的数据文件复制回数据库中原来的位置,如果原来位置发生磁盘故障,可将其复制到其他合适的磁盘上,之后使用alter命令修改数据文件名。千万不要采取先修磁盘再使用的策略,因为修磁盘时间过长。

(5) 使用recover命令将数据库恢复所需所有提交的数据由归档日志文件或联机重做日志文件重新写入已修复的数据文件:recover

database

(6) 使用alter database open;命令打开数据库

(7) 如果是恢复到非原来位置,则要使用DBA_DATA_FILES重新获取恢复的数据文件及其表空间的信息,确认已经恢复到正确的位置

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值