• [Oracle 工程师手记]遇到 ORA-600[4194] 错误的应对措施


    如果数据库启动不了,在 alert log 中发现了 ORA-00600[4194] 错误,表明 UNDO 和 REDO 中记录的 undo 记录不一致。此时,需要尝试重新建立新的 UNDO,我们需要找到老的 UNDO,把它 变成 offline, 然后建立新的 UNDO,再重新启动。

    具体作法是:

    创建 PFILE, 例如:

    create pfile='/tmp/mypfile.ora' from spfile;
    

     手工修改pfile, 改 undo 管理为 manual 方式。

    undo_management = manual
    

     
    设置 event 10513, 使得 undo segment 变成 offline。

    event = '10513 trace name context forever, level 2'
    

     关于 10513 event,设置后可以观察到设置前后 undo segment 的变化:

    设置前:

    SQL> select tablespace_name, status, segment_name from dba_rollback_segs where status != 'OFFLINE';
    
    TABLESPACE_NAME                STATUS           SEGMENT_NAME
    ------------------------------ ---------------- ------------------------------
    SYSTEM                         ONLINE           SYSTEM
    UNDOTBS1                       ONLINE           _SYSSMU1_3724004606$
    UNDOTBS1                       ONLINE           _SYSSMU2_2996391332$
    UNDOTBS1                       ONLINE           _SYSSMU3_1723003836$
    UNDOTBS1                       ONLINE           _SYSSMU4_1254879796$
    UNDOTBS1                       ONLINE           _SYSSMU5_898567397$
    UNDOTBS1                       ONLINE           _SYSSMU6_1263032392$
    UNDOTBS1                       ONLINE           _SYSSMU7_2070203016$
    UNDOTBS1                       ONLINE           _SYSSMU8_517538920$
    UNDOTBS1                       ONLINE           _SYSSMU9_1650507775$
    UNDOTBS1                       ONLINE           _SYSSMU10_1197734989$
    
    11 rows selected.
    

     设置后:

    SQL> select tablespace_name, status, segment_name from dba_rollback_segs;
    
    TABLESPACE_NAME                STATUS           SEGMENT_NAME
    ------------------------------ ---------------- ------------------------------
    SYSTEM                         ONLINE           SYSTEM
    UNDOTBS1                       OFFLINE          _SYSSMU10_1197734989$
    UNDOTBS1                       OFFLINE          _SYSSMU9_1650507775$
    UNDOTBS1                       OFFLINE          _SYSSMU8_517538920$
    UNDOTBS1                       OFFLINE          _SYSSMU7_2070203016$
    UNDOTBS1                       OFFLINE          _SYSSMU6_1263032392$
    UNDOTBS1                       OFFLINE          _SYSSMU5_898567397$
    UNDOTBS1                       OFFLINE          _SYSSMU4_1254879796$
    UNDOTBS1                       OFFLINE          _SYSSMU3_1723003836$
    UNDOTBS1                       OFFLINE          _SYSSMU2_2996391332$
    UNDOTBS1                       OFFLINE          _SYSSMU1_3724004606$
    
    11 rows selected.
    

     
    以 restrict 方式,用刚才修改的 pfile 启动:

    startup restrict pfile='/tmp/mypifle.ora'
    

     
    此时,查询 dba_rollback_segs,会发现除了 system 之外,其他的 UNDO 段,都已经是 offline 了。这说明还有救。这时可以创建新的 UNDO 表空间:

    SQL>create undo tablespace ...

    删除旧的 UNDO 表空间:

    SQL> drop tablespace ...
    

    重新启动,并设定数据库使用新的 UNDO 表空间:

    SQL>shu immediate
    SQL>sartup nomount
    SQL>alter system set undo_tablespace ='<新UNDO>';
    


    再次重启,如果可以成功,那么赶紧做一次全备份吧。

  • 相关阅读:
    C++中static_cast和dynamic_cast强制类型转换
    Oozie-
    Spring Boot- 用idea新建spring boot web项目
    Spring Boot- 设置拦截打印日志
    Storm- 使用Storm实现词频汇总
    Storm- 使用Storm实现累积求和的操作
    HTTP- 头部信息
    Python- 文件读写
    JQuery- JQuery学习
    Javascript- Javascript学习
  • 原文地址:https://www.cnblogs.com/gaojian/p/14634392.html
Copyright © 2020-2023  润新知