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

ok少年不年少

ok少年不年少

2016-02-19 16:49

今天图老师小编给大家介绍下Oracle数据库系统紧急故障处理方法,平时喜欢Oracle数据库系统紧急故障处理方法的朋友赶紧收藏起来吧!记得点赞哦~

  Oracle物理结构故障是指构成数据库的各个物理文件损坏而导致的各种数据库故障。这些故障可能是由于硬件故障造成的,也可能是人为误操作而引起。所以我们首先要判断问题的起因,如果是硬件故障则首先要解决硬件问题。在无硬件问题的前提下我们才能按照下面的处理方发来进一步处理。

  控制文件损坏:

  控制文件记录了关于oracle的重要配置信息,如数据库名、字符集名字、各个数据文件、日志文件的位置等等信息。控制文件的损坏,会导致数据库异常关闭。一旦缺少控制文件,数据库也无法启动,这是一种比较严重的错误。

  损坏单个控制文件:

  1. 确保数据库已经关闭,如果没有用下面的命令来关闭数据库:

  svrmgrlshutdown immediate;

  2. 查看初始化文件$ORACLE_BASE/admin/pfile/initORCL.ora,确定所有控制文件的路径。

  3. 用操作系统命令将其它正确的控制文件覆盖错误的控制文件。

  4. 用下面的命令重新启动数据库:

  svrmgrlstartup;

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

  损坏所有的控制文件:

  1. 确保数据库已经关闭,如果没有用下面的命令来关闭数据库:

  svrmgrlshutdown immediate;

  2. 从相应的备份结果集中恢复最近的控制文件。对于没有采用带库备份的点可以直接从磁带上将最近的控制文件备份恢复到相应目录;对于采用带库备份的点用相应的rman脚本来恢复最近的控制文件。

  3. 用下面的命令来创建产生数据库控制文件的脚本:

  svrmgrlstartup mount;

  svrmgrlalter database backup controlfile to trace noresetlogs;

  4. 修改第三步产生的trace文件,将其中关于创建控制文件的一部分语句拷贝出来并做些修改,使得它能够体现最新的数据库结构。假设产生的sql文件名字为createcontrol.sql.

  注意:

  Trace文件的具体路径可以在执行完第3)步操作后查看$ORACLE_BASE/admin/bdump/alert_ORCL.ora文件来确定。

  5. 用下面命令重新创建控制文件:

  svrmgrlshutdown abort;

  svrmgrlstartup nomount;

  svrmgrl@createcontrol.sql;

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

  重做日志文件损坏:

  数据库的所有增、删、改都会记录入重做日志。如果当前激活的重做日志文件损坏,会导致数据库异常关闭。非激活的重做日志最终也会因为日志切换变为激活的重做日志,所以损坏的非激活的重做日志最终也会导致数据库的异常终止。在ipas/mSwitch中每组重做日志只有一个成员,所以在下面的分析中只考虑重做日志组损坏的情况,而不考虑单个重做日志成员损坏的情况。

  确定损坏的重做日志的位置及其状态:

  1. 如果数据库处于可用状态:

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  select * from v$logfile;

  svrmgrlselect * from v$log;

  2. 如果数据库处于已经异常终止:

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  svrmlgrstartup mount;

  svrmgrlselect * from v$logfile;

  svrmgrlselect * from v$log;

  其中,logfile的状态为INVALID表示这组日志文件出现已经损坏;log状态为Inactive:表示重做日志文件处于非激活状态;Active: 表示重做日志文件处于激活状态;Current:表示是重做日志为当前正在使用的日志文件。

  损坏的日志文件处于非激活状态:

  1. 删除相应的日志组:

  svrmgrlalter database drop logfile group group_number;

  2. 重新创建相应的日志组:

  svrmgrlalter database add log file group group_number (’log_file_descritpion’,) size log_file_size;

  损坏的日志文件处于激活状态且为非当前日志:

  1. 清除相应的日志组:

  svrmgrlalter database clear unarchived logfile group group_number;

  损坏的日志文件为当前活动日志文件:

  用命令清除相应的日志组:

  svrmgrlalter database clear unarchived logfile group group_number;

  如果清除失败,则只能做基于时间点的不完全恢复。

  打开数据库并且用适当的方法进行数据库全备份:

  svrmgrlalter database open;

  部分数据文件损坏:

  若损坏的数据文件属于非system表空间,则数据库仍然可以处于打开状态可以进行操作,只是损坏的数据文件不能访问。这时在数据库打开状态下可以单独对损坏的数据文件进行恢复。若是system表空间的数据文件损坏则数据库系统会异常终止。这时数据库只能以Mount方式打开,然后再对数据文件进行恢复。可以通过查看数据库日志文件来判断当前损坏的数据文件到底是否属于system表空间。

展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
Oracle数据库系统紧急故障处理方法

常见数据库系统比较 Oracle数据库

编程语言 网络编程
常见数据库系统比较  Oracle数据库

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

常见数据库系统之比较 - Oracle数据库

电脑网络
常见数据库系统之比较 - Oracle数据库

Oracle数据库系统使用经验六则

编程语言 网络编程
Oracle数据库系统使用经验六则

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

数据库系统概论学习笔记

电脑网络
数据库系统概论学习笔记

学习摸索 Oracle数据库系统使用经验六则

编程语言 网络编程
学习摸索 Oracle数据库系统使用经验六则

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Windows Blue是什么

Windows Blue是什么

扩展你的 PHP 之入门篇

扩展你的 PHP 之入门篇
下拉加载更多内容 ↓