`
张洪财
  • 浏览: 276118 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracle9i 恢复 bad的回滚段导致的不能启动 备忘

阅读更多

停电等意外关机会使oracle数据库出现bad回滚段,导致数据库无法启动。解决办法是去掉回滚段启动。




现象:
startup时出现ORA-01092错误
查看TRC日志文件,是ORA-00600错误。
ORA-00600: internal error code, arguments: [kteuPropTime-2], [], [], [], [], [], [], []
由于ORACLE9.2.0.1里的BUG(BUG#: 2431450),使的SMON在工作过程中导致ORACLE实例crash,留下一个或多个bad的回滚段。
当试图在宕掉的数据库重新startup时,SMON要进行事务恢复,从bad的回滚段里读取信息时失败,再次使ORACLE实例crash,
从而数据库无法正常OPEN。
二、解决步骤
1,首先要找出bad的回滚段。
在初始化参数文件里增加下面2行
_smu_debug_mode=1
event="10015 trace name context forever, level 10"
(_smu_debug_mode简单的收集诊断信息。Event 10015是回滚段恢复跟踪事件。)
修改好参数文件后shutdown immediate数据库后,再startup数据库。此时数据库能mount,但仍然无法Open.
还会遇到ORA-01092错误。但这次ORACLE会把bad的回滚段信息写到跟踪文件里。udump
在跟踪文件里发现是_SYSSMU1$回滚段bad。
2,在初始化参数文件里去掉刚才增加的2行
_smu_debug_mode=1
event="10015 trace name context forever, level 10"
增加新的一行
_corrupted_rollback_segments=(_SYSSMU1$)
修改好参数文件后shutdown数据库,再startup数据库。此时数据库能OPen。
3,在SQLPLUS里登陆数据库
select segment_id,segment_name,tablespace_name,status
from dba_rollback_segs
where owner='PUBLIC';
SQL> /
         1 _SYSSMU1$                      UNDOTBS1                       NEEDS RECOVERY                                                                                                                 
         2 _SYSSMU2$                      UNDOTBS1                       ONLINE                                                                                                                        
         3 _SYSSMU3$                      UNDOTBS1                       ONLINE                                                                                                                        
         4 _SYSSMU4$                      UNDOTBS1                       ONLINE                                                                                                                        
         5 _SYSSMU5$                      UNDOTBS1                       ONLINE                                                                                                                        
         6 _SYSSMU6$                      UNDOTBS1                       ONLINE                                                                                                                        
         7 _SYSSMU7$                      UNDOTBS1                       ONLINE                                                                                                                        
         8 _SYSSMU8$                      UNDOTBS1                       ONLINE                                                                                                                        
         9 _SYSSMU9$                      UNDOTBS1                       ONLINE                                                                                                                        
        10 _SYSSMU10$                     UNDOTBS1                       ONLINE                                                                                                                        
10 rows selected.
果然是_SYSSMU1$回滚段的状态是‘NEEDS RECOVERY’。其它9个回滚段是ONLINE的。
此时数据库已经能够正常使用,不过SMON会每隔5分钟写一条日志信息:
SMON:about to recover undo segment 1
SMON: mark undo segment 1 as needs recovery
4,删除bad的回滚段
在SQLPLUS里
drop rollback segment "_SYSSMU1$";
5,再修改修改好参数文件,去掉
_corrupted_rollback_segments=(_SYSSMU1$)
这一行,然后shutdown,再startup。
这样数据库又恢复了正常。

 

原始内容地址:http://chenhanzhao555.blog.163.com/blog/static/8557636320086221931754/

分享到:
评论

相关推荐

    oracle回滚段使用率过高之解决方法

    1. 事务回滚:当事务修改表中数据的时候,该数据修改前的值(即前影像)会存放在回滚段中,当用户回滚事务(ROLLBACK)时,Oracle 将会利用回滚段中的数据前影像来将修改的数据恢复到原来的值。 2. 事务恢复:当...

    深入解析oracle的回滚段

    从9i版本开始,Oracle引入了自动管理回滚段(Automatic Rollback Segmentation),DBA不再需要手动创建、修改或删除回滚段,只需关注undo表空间(如UNDOTBS1)的空间管理。 回滚段的使用策略包括: - **分配回滚段...

    oracle数据库回滚段专题解析

    如果事务最终需要回滚(通过`ROLLBACK`命令),则Oracle数据库会利用回滚段中的数据前影像将已修改的数据恢复到原始状态。此外,在事务处理过程中如果遇到实例失败(例如服务器故障),回滚段中记录的信息会被保存在...

    oracle 回滚段灾难恢复

    当系统遇到回滚段灾难,如回滚段损坏或异常,导致数据库无法正常启动时,进行有效的灾难恢复是至关重要的。本文将详细解析如何处理回滚段出现异常、无法启动数据库的情况,并通过具体的SQL语句来指导如何进行灾难...

    oracle 回滚段探究

    ### Oracle回滚段探究 #### 一、引言 在Oracle数据库中,回滚段扮演着至关重要的角色,尤其是在确保事务处理的完整性和提供一致性视图方面。本文旨在深入探讨Oracle回滚段的相关知识,包括其作用、原理、分配与...

    Oracle数据库回滚段的故障分析与性能优化.pdf

    如果回滚段出现故障,轻则使数据处理无法执行、用户无法读写数据,重则导致数据库不能正常启动或关闭,导致数据库瘫痪。若能将回滚段的故障排除,一般来说是不会影响用户的实际数据。实际上绝大多数的回滚段故障都是...

    ORACLE回滚段的概念、用法和规划及问题解决

    - **离线状态(OFFLINE)**:回滚段不能被使用的状态。可以通过以下命令将回滚段设置为离线状态: ```sql ALTER ROLLBACK SEGMENT rollback_segment OFFLINE; ``` 设置为离线状态时,Oracle会将回滚段的状态设置...

    oracle回滚段问题

    Oracle回滚段是数据库管理系统中的核心组件,主要负责存储数据修改前的状态,以支持事务的回滚、恢复和读一致性。回滚段是Oracle数据库管理的重要部分,对于DBA来说,理解和有效地管理回滚段至关重要。 回滚段的...

    oracle 事务 回滚 存储过程

    在Oracle数据库环境中,事务管理与存储过程的结合是实现数据一致性、事务回滚以及错误处理的关键技术之一。本文将深入探讨“Oracle事务回滚存储过程”这一主题,旨在理解其核心概念、工作原理以及实际应用。 ### ...

    ORACLE数据库的回滚段.pdf

    回滚段,正如其名,是用来存放事务处理过程中增、删、改数据的历史信息,确保在事务回滚或数据库恢复时能正确操作。在Oracle 8i Release 8.1.7版本中,默认创建了24个回滚段,但它们初始大小较小,可能不足以应对...

    oracle 回滚段

    Oracle 回滚段是 Oracle 数据库中的一种重要组件,它用于保存数据库修改前的数据,以便在需要时可以通过 ROLLBACK 命令恢复到修改前的数据。回滚段的设置对数据库的性能产生直接影响,特别是在更新密集的 OLTP 应用...

    回滚段参数修改

    【回滚段】是Oracle数据库管理系统中的一个重要组成部分,主要用于存储数据修改前的状态,确保事务的回滚、恢复和读一致性。在Oracle 8i及更早版本中,回滚段的管理尤其关键。 **一、回滚段的作用** 1. **事务回滚...

    Oracle回滚段管理知识.pptx

    Oracle 回滚段管理是数据库管理系统中的一项重要功能,它用于管理事务的回退和恢复。下面是 Oracle 回滚段管理的知识点总结: 一、回滚段简介 回滚段是 Oracle 数据库中的一种特殊类型的表空间,它用于存储事务的...

    ORACLE数据库的回滚段[参照].pdf

    Oracle数据库的回滚段是其核心存储结构之一,主要用于维护数据的一致性和可恢复性。在Oracle数据库系统中,回滚段(Rollback Segment)扮演着至关重要的角色,它们存储了事务处理(Transaction)的回滚信息,确保了...

    一个回滚段清理的实例

    回滚段是Oracle数据库中非常重要的组成部分,它们主要用于存储事务回滚信息,即记录数据库中的所有更改,以便在事务回滚或系统恢复时使用。在上述情况中,数据库管理员发现了一个名为"undotbs1"的回滚表空间的数据...

    Oracle9i中文版基础培训教程

    5. **备份与恢复**:Oracle 9i提供了一套完整的备份和恢复策略,包括在线备份、冷备份、热备份等,确保在数据丢失或系统故障后能快速恢复。 6. **性能优化**:Oracle 9i引入了索引、分区、物化视图、数据库缓存等...

    Oracle 9i10g 数据库备份与恢复

    ### Oracle 9i/10g 数据库备份与恢复知识点详解 #### 一、Oracle 9i/10g 数据库备份与恢复概览 **标题与描述**中提到的“Oracle 9i/10g 数据库备份与恢复”是指在Oracle 9i和10g版本中进行数据库备份和恢复的过程...

    oracle 创建表空间、回滚段、用户、表的详细语法

    Oracle 创建表空间、回滚段、用户、表的详细语法 Oracle 是一种关系型数据库管理系统,广泛应用于各个行业。创建表空间、回滚段、用户、表是 Oracle 中最基本的操作之一,本文将详细介绍这四个操作的语法和步骤。 ...

Global site tag (gtag.js) - Google Analytics