IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    ora-01092:ORACLE 实例终止 —access$表丢失恢复

    惜分飞发表于 2015-01-27 14:27:52
    love 0

    有网友咨询数据库启动报ora-01092:ORACLE 实例终止。强制断开连接,请求帮忙处理
    数据库版本

    Trace file d:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_ora_5648.trc
    Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    Windows NT Version V6.1 Service Pack 1
    CPU                 : 1 - type 8664, 1 Physical Cores
    Process Affinity    : 0x0000000000000000
    Memory (Avail/Total): Ph:7605M/10239M, Ph+PgF:11979M/20477M
    Instance name: orcl
    Redo thread mounted by this instance: 1
    Oracle process number: 18
    Windows thread id: 5648, image: ORACLE.EXE (SHAD)
    

    open数据库报ORA-01092: ORACLE 实例终止。强制断开连接

    SQL> alter database open;
    alter database open
    *
    第 1 行出现错误:
    ORA-01092: ORACLE 实例终止。强制断开连接
    

    alert日志

    Thread 1 opened at log sequence 1008
      Current log# 3 seq# 1008 mem# 0: D:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG
    Successful open of redo thread 1
    MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set
    SMON: enabling cache recovery
    Errors in file d:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_ora_3964.trc:
    ORA-00704: 引导程序进程失败
    ORA-00604: 递归 SQL 级别 1 出现错误
    ORA-00942: 表或视图不存在
    Error 704 happened during db open, shutting down database
    USER (ospid: 3964): terminating the instance due to error 704
    Instance terminated by USER, pid = 3964
    ORA-1092 signalled during: ALTER DATABASE OPEN...
    ORA-1092 : opiodr aborting process unknown ospid (3384_3964)
    

    做10046分析日志

    PARSE ERROR #1:len=56 dep=1 uid=0 oct=3 lid=0 tim=1796038335 err=942
    select order#,columns,types from access$ where d_obj#=:1
    
    *** 2015-01-27 21:24:50.794
    ----- Error Stack Dump -----
    ORA-00604: 递归 SQL 级别 1 出现错误
    ORA-00942: 表或视图不存在
    

    通过这里可以知道数据库在启动的过程中由于无法访问access$表从而出现ORA-00942错误,又是由于该sql是数据库内部调用因为出现ORA-00604错误.
    出现该错误的原因是由于:BUG:12733463 – ORA-704, ORA-604 AND ORA-942 ON TABLE ACCESS$ DURING STARTUP
    官方提供方法

    1. Shutdown (abort) the instance and clean up any OS structures used by the instance. 
        Eg: Ensure there is no shared memory, semaphores etc.. left lying around
    
    2. Retry the startup.
    
    3. If the error persists try and recover the database or recover from a backup.
    

    惜分飞处理方法

    startup  upgrade
    
     create table access$
     ( d_obj#        number not null,
       order#        number not null,
       columns       raw(126),
       types         number not null)
       storage (initial 10k next 100k maxextents unlimited pctincrease 0)
    /
    
    create index i_access1 on
      access$(d_obj#, order#)
      storage (initial 10k next 100k maxextents unlimited pctincrease 0)
    /
    
    • Oracle 11g丢失access$恢复方法
    • 分享一次ORA-01113 ORA-01110故障处理过程
    • ORA-07445 [ACCESS_VIOLATION] [UNABLE_TO_READ] []
    • 记录一次 ORA-600 2663 故障恢复
    • ORA-600 kcratr_nab_less_than_odr故障解决
    • 关闭数据库出现ORA-00379错误
    • 修改props$.NLS_CHARACTERSET导致ORA-00900异常恢复
    • ORA-00600[kcrf_resilver_log_1]异常恢复


沪ICP备19023445号-2号
友情链接