服务器 频道

数据库系统紧急故障处理方法

  system表空间损坏:

  1. 以mount方式启动数据库

  svrmgrl>startup mount;

  2. 从相应的备份结果集中恢复system表空间最近的备份。对于没有采用带库备份的点可以直接从磁带上恢复;对于用带库备份的点用相应的rman脚本来恢复。

  3. 恢复system表空间:

  svrmgrl>alter database recover tablespace system;

  4. 打开数据库:

  svrmgrl>alter database open;

  5. 用适当的方法进行数据库全备份。

  整个数据库的所有文件损坏:

  整个数据库所有文件的损坏一般是在共享磁盘阵列发生无法恢复的灾难时才发生,这种情况下只能对数据库进行恢复。若数据库的归档目录也已经丢失,则数据库不可能做完全恢复,会有用户数据的丢失。

  没采用带库备份的现场:

  1. 将最近的备份从磁带上把各个文件解包到相应的目录下。

  2. 以mount方式打开数据库:
 
  svrmgrl>startup mount;

  3. 恢复数据库:

  svrmgrl>recover database until cancel;

  4. 打开数据库:

  svrmgrl>alter database open resetlogs;

  5. 用适当的方法进行数据库全备份。

  采用带库备份的现场:

  1. 以nomount方式打开数据库:

  svrmgrl>startup nomount;

  2. 通过相应的rman脚本进行数据库软恢复。

  $rman cmdfile=hot_database_restore.rcv

  3. 打开数据库:

  svrmgrl>alter database open resetlogs;

  4. 用适当的方法进行数据库全备份。

  存在最近的数据库完整冷备份前提下的一些经典紧急情况的处理:

  数据文件,归档重作日志和控制文件同时丢失或损坏:

  无新增archives 时的状况:
 
  条件和假设:自上次镜像备份以来尚未生成新的archive log(s); Archivelog Mode; 有同步的datafile(s) 和control file(s) 的镜像(冷)拷贝

  恢复步骤:

  1. 将镜像拷贝的datafile(s) 和control file(s) 抄送回原始地点:

  $ cp /backup/good_one.dbf /orig_loc/bad_one.dbf

  $ cp /backup/control1.ctl /disk1/control1.ctl

  2. 以mount 选项启动数据库:

  $ svrmgrl
 
  svrmgrl> connect internal

  svrmgrl> startup mount

  3. 以旧的control file 来恢复数据库:

  svrmgrl> recover database using backup controlfile until cancel;

  *** 介质恢复完成
  
  (必须马上cancel )

  4. Reset the logfiles (对启动而言不可省略):

  svrmgrl> alter database open resetlogs;

  5. 关闭数据库并做一次全库冷备份。

  新增archives 时的状况:

  条件和假设:自上次镜像备份以来已经生成新的archive log(s); Archivelog Mode; 有同步的datafile(s) 和control file(s) 的镜像(冷)拷贝;archive log(s) 可用。

  恢复步骤:

  1. 如果数据库尚未关闭,则首先把它关闭:

  $ svrmgrl
 
  svrmgrl> connect internal

  svrmgrl> shutdown abort

  2. 将备份文件抄送回原始地点:

  所有Database Files

  所有Control Files(没有archive(s) 或redo(s) 的情况下,control files 的更新无任何意义)

  所有On-Line Redo Logs (Not archives)

  init.ora file(选项)

  3. 启动数据库:

  $ svrmgrl

  svrmgrl> connect internal

  svrmgrl> startup

  数据文件, 重作日志和控制文件同时丢失或损坏:

  条件和假设:Archivelog Mode; 有同步的所有所失文件的镜像(冷)拷贝;archive log(s) 可用

  恢复步骤(必须采用不完全恢复的手法):
  
  1. 如果数据库尚未关闭,则首先把它关闭:

  $ svrmgrl

  svrmgrl> connect internal

  svrmgrl> shutdown abort

  2. 将备份文件抄送回原始地点:

  所有Database Files

  所有Control Files

  所有On-Line Redo Logs(Not archives)

  init.ora file(选项)

  3. 启动数据库然而并不打开:

  svrmgrl>startup mount

  4. 做不完全数据库恢复,应用所有从上次镜像(冷)备份始积累起来的archives:

  svrmgrl> recover database until cancel using backup controlfile;

  ......
  ......

  cancel

  5. Reset the logfiles (对启动而言不可省略):

  svrmgrl> alter database open resetlogs;
 
  6. 关闭数据库并做一次全库冷备份。

0
相关文章