赛迪网 > IT技术 数据库 > Oracle
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

详细讲解Oracle物理结构故障的处理方法 (2)

发布时间:2008.05.15 04:59     来源:赛迪网    作者:雅诗

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

1. 清除相应的日志组:

svrmgrl>alter database clear unarchived logfile group group_number;

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

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

svrmgrl>alter database clear unarchived logfile group group_number;

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

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

svrmgrl>alter database open;

部分数据文件损坏:

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

非system表空间的数据文件损坏

1. 确定损坏的文件名字:

svrmgrl>select name from v$datafile where status=’INVALID’;

2. 将损坏的数据文件处于offline状态:

svrmgrl>alter database datafile ‘datafile_name’ offline;

3. 从相应的备份结果集中恢复关于这个数据文件的最近的备份。对于没有采用带库备份的点可以直接从磁带上恢复;对于用带库备份的点用相应的rman脚本来恢复。

4. 恢复数据文件:

svrmgrl>alter database recover datafile ‘file_name’;

5. 使数据库文件online:

svrmgrl>alter database datafile ‘datafile_name’ online;

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

system表空间的数据文件损坏:

1. 以mount方式启动数据库

svrmgrl>startup mount;

2. 从相应的备份结果集中恢复关于这个数据文件的最近的备份。对于没有采用带库备份的点可以直接从磁带上恢复;对于用带库备份的点用相应的rman脚本来恢复。

3. 恢复system表空间:

svrmgrl>alter database recover datafile ‘datafile_name’;

4. 打开数据库:

svrmgrl>alter database open;

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

表空间损坏:

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

非system表空间损坏:

1. 将损坏的表空间处于offline状态:

svrmgrl>alter tablespace ‘tablespace_name’ offline;

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

3. 恢复表空间:

svrmgrl>alter database recover tablespace ‘tablespace_name’;

4. 使表空间online:

svrmgrl>alter tablespace ‘tablespace_name’ online;

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

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;

<<上一页 1 2 3 下一页>>


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 将MySQL数据库迁移到Oracle数据库 (05-14) · 如何将MySQL数据库迁移到Oracle数据库 (05-14)
· 带你深入了解Oracle数据库的热备份原理 (05-13) · 实例讲解Oracle到SQL Server主键的迁移 (05-13)
· 用最简单的方法复制或迁移Oracle数据库 (05-12) · 用最简单的方法复制或迁移Oracle数据库 (05-12)
· 重建Oracle数据库控制文件的简单方法 (05-12) · Oracle数据库中如何根据时间来执行JOB (05-12)
· 必须引起DBA重视的Oracle数据库碎片 (05-12) · 必须引起DBA重视的Oracle数据库碎片 (05-12)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
· 中小企业发展缓慢 电子商务存在的问题多
· 马云追加20亿投资淘宝 图谋电子商务霸主
· 国产ITIL运维先行者 四大厂商角力BI市场
· 企业信息安全解决方案 方正电子公文系统
  IT博客 ·曾剑秋·项立刚·Java学习·网管
  IT技术论坛 ·开发·网管·安全·数据库·系统