zoukankan      html  css  js  c++  java
  • [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>';
    


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

  • 相关阅读:
    素数路径Prime Path POJ3126 素数,BFS
    Fliptile POJ3279 DFS
    Find the Multiple POJ1426
    洗牌Shuffle'm Up POJ3087 模拟
    棋盘问题 POJ1321 DFS
    抓住那只牛!Catch That Cow POJ3278 BFS
    Dungeon Master POJ2251 三维BFS
    Splitting into digits CodeForce#1104A
    Ubuntu下手动安装Nvidia显卡驱动
    最大连续子序列和
  • 原文地址:https://www.cnblogs.com/gaojian/p/14634392.html
Copyright © 2011-2022 走看看