Oracle回滚表空间数据文件误删除处理

简介:
导读: 
   一、 引言: 
  回滚段是数据库的一部分,它记录数据库变更的信息。使用这些信息实现数据库的读一致性及其恢复。若回滚段出现故障,则数据库不能正常启动,导致数据库瘫痪,用户无法读写数据。若能将回滚段的故障排除,则不会影响用户的实际数据。笔者最近在实际工作中遇到一个问题:用户将回滚段表空间(rbs)的数据库文件(rbs01.dbf)错误删除,以致使数据库无法正常运行,下面上笔者排除该方法的处理步骤。 
   二、 步骤:  
  1、 首先改参数文件init.ora,使数据库能mount上来。 
  在system表空间内有一个system回滚段,该回滚段上数据库所必须的,当数据库第一次建立时,它就随之建立,并随数据库的打开而自动在线。我们通常使用的回滚段是公用回滚段,而非system回滚段,若公用回滚段出现故障,我们暂可用system回滚段替代,使数据库能mount上来。 
  svrmgrl >Shutdown abort 
  $ vi $ORACLE_HOME/dbs/init< sid >.ora 
  rollback_segments=(system) 
  _corrupted_rollback_segments=(r01,r02,r03,r04) 
  svrmgrl >Startup mount 
  2、 对数据库实施恢复,再将它打开 
  从数据库的控制文件中将回滚段表空间rbs的数据文件rbs01.dbf离线并去掉。 
  svrmgrl >alter database datafile 
  ‘##/##/rbs01.dbf’ offline drop; 
  对数据库进行恢复。 
  svrmgrl >recover database using backup controlfile; 
  此时屏幕上可能会出现: 
  ORA_00280 Change #### for thread# is in sequence# 
  specify log:[< RET >for suggested|AUTO|from 
  logsource|cancel] 
  您可以根据sequence#号找到您需要的在线日志文件,并将日志文件输入(包括全路径),查找在线日志文件时可以使用svrmgrl >select * from v$log; 此时完成数据库恢复。 再将数据库打开。 
  svrmgrl >alter database open resetlogs; 
  3、 重建新的回滚段 
  将旧回滚段及回滚表空间删除。 
  svrmgrl >alter rollback_segment r01 offline drop; 
  svrmgrl >alter rollback_segment r02 offline drop; 
  svrmgrl >alter rollback_segment r03 offline drop; 
  svrmgrl >alter rollback_segment r04 offline drop; 
  svrmgrl >drop tablespace rbs including contents; 
  重建新的回滚表空间及回滚段。 
  svrmgrl >connect internal 
  svrmgrl >create rollback segment ro tablespace system; 
  svrmgrl >alter rollback segment ro online; 
  svrmgrl >create tablespace rbs datafile 
  ‘##/##/rbs01.dbf’ size ##k; 
  svrmgrl >create rollback segment r01 tablespace rbs; 
  svrmgrl >create rollback segment r02 tablespace rbs; 
  svrmgrl >create rollback segment r03 tablespace rbs; 
  svrmgrl >create rollback segment r04 tablespace rbs; 
  svrmgrl >alter rollback segment r01 online; 
  svrmgrl >alter rollback segment r02 online; 
  svrmgrl >alter rollback segment r03 online; 
  svrmgrl >alter rollback segment r04 online; 
  4、 使用新建的回滚段启动数据库 
  svrmgrl >Shutdown abort 
  $ vi $ORACLE_HOME/dbs/init< sid >.ora 
  rollback_segments=(r01,r02,r03,r04) 
  将参数_corrupted_rollback_segment去掉 
  svrmgrl >Startup normal 
   三、 结束语: 
  此故障的排除是数据库在归档方式上执行的,笔者已在HP-UX 10.20及Solaris2.5两种系统平台上成功通过









本文转自 牛海彬 51CTO博客,原文链接:http://blog.51cto.com/newhappy/76986,如需转载请自行联系原作者
目录
相关文章
|
11天前
|
SQL Oracle 关系型数据库
Oracle 将表中的数据查出更改某一字段的值后再插入该表
Oracle 将表中的数据查出更改某一字段的值后再插入该表
19 2
|
11天前
|
存储 Oracle NoSQL
Oracle 表空间、数据文件、schema的关系
Oracle 表空间、数据文件、schema的关系
16 2
|
11天前
|
SQL Oracle 关系型数据库
Oracle查询优化-查询只包含数字或字母的数据
【2月更文挑战第4天】【2月更文挑战第10篇】查询只包含数字或字母的数据
26 1
|
2月前
|
Oracle 关系型数据库
Oracle查询优化-从表中随机返回N条数据
【1月更文挑战第2天】【1月更文挑战第5篇】有些场景需要抽验数据,例如为了防止做假或者抽检行为,就需要随机抽查。
24 0
|
2月前
|
Oracle 关系型数据库 数据库
Oracle查询优化-复制表的定义及数据
【1月更文挑战第5天】【1月更文挑战第14篇】在Oracle数据库中,复制表定义和复制表数据是两个常见的操作。
34 1
|
2月前
|
Oracle 关系型数据库 Java
从 Oracle 数据库的 socket 中读取数据时,没有更多的数据可供读取。这可能是由于以下原因导致的:
【1月更文挑战第26天】【1月更文挑战第125篇】从 Oracle 数据库的 socket 中读取数据时,没有更多的数据可供读取。这可能是由于以下原因导致的:
17 1
|
2月前
|
Oracle 关系型数据库 流计算
Flink CDC里我通过oracle的connector往hudi插入数据
【1月更文挑战第23天】【1月更文挑战第115篇】Flink CDC里我通过oracle的connector往hudi插入数据
40 8
|
2月前
|
SQL 存储 Oracle
oracle如何定期备份数据库sql文件
【1月更文挑战第7天】oracle如何定期备份数据库sql文件
49 8
|
8天前
|
开发框架 Oracle 关系型数据库
ASP.NET实验室LIS系统源码 Oracle数据库
LIS是HIS的一个组成部分,通过与HIS的无缝连接可以共享HIS中的信息资源,使检验科能与门诊部、住院部、财务科和临床科室等全院各部门之间协同工作。 
21 4
|
13天前
|
SQL Oracle 关系型数据库
【Oracle】玩转Oracle数据库:装上去,飞起来!
本文是一篇关于Oracle数据库安装和使用的博文摘要。作者以轻松幽默的笔调介绍了自己在实验中掌握的Oracle数据库基本操作,包括使用组件查看命令、配置数据库监听器等。作者也分享了在实验中遇到的一些有趣问题,如SQL语句缺少分号导致的意外错误。此外,作者还强调了登录sys用户和启动实例加载数据库的注意事项,并鼓励读者面对挑战时保持乐观,不断提升自己的能力。整体风格风趣严谨,引人入胜。
201 0

推荐镜像

更多