zoukankan      html  css  js  c++  java
  • [转载]ORA-00313:无法打开日志组1(线程 1)的成员_ORA-00312:

    今天用系统清理工具把系统垃圾清理了一番,结果在打开oracle 数据库时出现了错误:

    ORA-00313: 无法打开日志组 1 (线程 1) 的成员
    ORA-00312: 联机日志 1 线程 1: 'D:ORACLEORADATAGOCOMREDO01.LOG'

    SQL> connect / as sysdba;
    已连接。
    SQL> shutdown immediate;
    ORA-01109: 数据库未打开

    已经卸载数据库。
    ORACLE 例程已经关闭。
    SQL> startup;
    ORACLE 例程已经启动。
    Total System Global Area 135338868 bytes
    Fixed Size 453492 bytes
    Variable Size 109051904 bytes
    Database Buffers 25165824 bytes
    Redo Buffers 667648 bytes
    数据库装载完毕。
    ORA-00313: 无法打开日志组 1 (线程 1) 的成员
    ORA-00312: 联机日志 1 线程 1: D:ORACLEORADATAORCLREDO01.LOG'
    查看D:ORACLEORADATAmyoracleREDO01.LOG还在,但是REDO02.LOG,REDO03.LOG被误删了.
    赶紧换个例程OEMREP试试,结果还是一样的错误!
    蒙了,难道要重装数据库不成?有什么办法可以解决这个问题呢?

    解决办法:
    SQL> shutdown immediate;
    ORA-01109: 数据库未打开
    已经卸载数据库。
    SQL> startup mount;
    ORACLE 例程已经启动。
    SQL>select * from v$log;
    GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
    ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ----------
    1 1 0 104857600 1 NO UNCURRENT 670680 07-12月-07
    2 1 15 104857600 1 NO unactive 696119 07-12月-07
    3 1 0 104857600 1 NO Unactive 650182 07-12月-07
    已选择3行。
    alter database clear unarchived logfile group 1;
    数据库已经更改.
    alter database clear unarchived logfile group 2;
    数据库已经更改.
    alter database clear unarchived logfile group 3;
    数据库已经更改.
    SQL>shutdown;
    已经卸载数据库。
    ORACLE 例程已经关闭。
    SQL>startup;
    ORACLE 例程已经启动。
    Total System Global Area 135338868 bytes
    Fixed Size 453492 bytes
    Variable Size 109051904 bytes
    Database Buffers 25165824 bytes
    Redo Buffers 667648 bytes
    数据库装载完毕。
    数据库已经打开。
    问题解决!
    但是,在对myoracle 例程进行同样的操作后,也不知道是哪里出了问题,
    SQL>startup;
    ORACLE 例程已经启动。
    Total System Global Area 135338868 bytes
    Fixed Size 453492 bytes
    Variable Size 109051904 bytes
    Database Buffers 25165824 bytes
    Redo Buffers 667648 bytes
    数据库装载完毕。
    ORA-03113: 通信通道的文件结束
    在网上查找资料,出现这样的问题原因很多,一般是网络不通,或者是init.ora、C:oracleora92networkadminsqlnet.ora或tnsnames.ora有问题.显然这些不适合我.我的两个例程,一个可以正常使用,另外一个有问题的!
    在我关闭数据库后,重新打开,执行:
    SQL>connect "/as sysdba";
    SQL>select * from scott.emp;
    ORA-27101 shared memory realm does not exist -
    出现这个错误也有很多解释,一般要检查init.ora文件的内存配置是否有问题,但是在没有打开数据库的时候执行命令,也会出现这样的错误提示,我的属于后者,是由于没有挂载数据库造成的,这里提醒一下.
    后来又乱琢磨了一回,还出现了错误:
    ORA-24324: 未初始化服务句柄
    ORA-01041: 内部错误,hostdef 扩展名不存在
    这是越来越乱了,无奈之下,只好重头再来整理一遍,从重新配置日志文件开始,操作一样,但是奇迹出现了,错误消失了,也不提示通信通道文件结束了,数据库正常了,呵呵,但是很晕!

    解决问题知识整理:
    首先,执行下面的语句看看group1是不是current日志组
    select * from v$log;
    如果被删除的日志不是当前日志组的成员,比较简单
    alter database clear logfile group 1;
    如果你的库是非归档的,或许要用下面的语句
    alter database clear unarchived logfile group 1;
    如果是当前日志组损坏,但是数据库是正常关闭的,上面的办法也可以使用
    如果日志组中有活动的事务,那么可能需要利用备份来恢复了:过程如下:
    解决过程:Microsoft Windows XP [版本 5.1.2600](C) 版权所有 1985-2001 Microsoft Corp.
    C:Documents and Settings5201314>sqlplus /nolog
    SQL*Plus: Release 10.2.0.1.0 - Production on 星期六 6月 20 11:19:52 2008Copyright (c) 1982, 2005, Oracle. All rights
    reserved.
    SQL> conn sys/dd as sysdba
    已连接。
    SQL> startup mount
    ORA-01081: 无法启动已在运行的 ORACLE - 请首先关闭它
    SQL> recover database until time '2008-06-19 13:45:02';

    完成介质恢复。
    SQL> alter database open resetlogs;
    数据库已更改。
    SQL> shutdown immediate;
    数据库已经关闭。
    已经卸载数据库。
    ORACLE 例程已经关闭。
    SQL> startup
    ORACLE 例程已经启动。
    Total System Global Area 205520896 bytes
    Fixed Size 1248092 bytes
    Variable Size 79692964 bytes
    Database Buffers 117440512 bytes
    Redo Buffers 7139328 bytes
    数据库装载完毕。
    数据库已经打开。
    SQL>

    Redo 损坏彻底解决

    为了打开数据库,首先想到的是将坏的日志清除掉,但是:
    SQL> alter database clear unarchived logfile group 3 ;
    alter database clear unarchived logfile group 3
    *
    ERROR 位于第 1 行:
    ORA-01624: 线程3的紧急恢复需要日志1
    ORA-00312: 联机日志 3 线程 1: 'D:ORACLEORADATARMANREDO03.LOG'

    SQL> alter database clear unarchived logfile group 3 unrecoverable datafile;
    alter database clear unarchived logfile group 3 unrecoverable datafile
    *
    ERROR 位于第 1 行:
    ORA-01624: 线程3的紧急恢复需要日志1
    ORA-00312: 联机日志 3 线程 1: 'D:ORACLEORADATARMANREDO03.LOG'

    清理日志文件行不通了,只有加入隐含参数,进行不完全恢复了。

    不完全恢复
    先加入隐含参数

    SQL> alter system set "_allow_resetlogs_corruption"=true scope=spfile ;

    系统已更改。

    SQL> alter system set "_allow_terminal_recovery_corruption"=true scope=spfile ;

    系统已更改。

    SQL> shutdown abort ;
    ORACLE 例程已经关闭。

    SQL>startup
    .....
    数据库装载完毕。
    ORA-00354: 损坏重做日志块标题
    ORA-00353: 日志损坏接近块 51328 更改 1029419 时间
    ORA-00312: 联机日志 3 线程 1: 'D:ORACLEORADATARMANREDO03.LOG'

    现在开始不完全恢复:
    SQL> recover database until cancel;
    ORA-00279: 更改 1029419 (在 05/15/2005 01:21:08 生成) 对于线程 1 是必需的
    ORA-00289: 建议: D:ORACLEORA92RDBMSARC00078.001
    ORA-00280: 更改 1029419 对于线程 1 是按序列 # 78 进行的


    指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
    auto
    ORA-00308: 无法打开存档日志 'D:ORACLEORA92RDBMSARC00078.001'
    ORA-27041: 无法打开文件
    OSD-04002: 无法打开文件
    O/S-Error: (OS 2) 系统找不到指定的文件。


    ORA-00308: 无法打开存档日志 'D:ORACLEORA92RDBMSARC00078.001'
    ORA-27041: 无法打开文件
    OSD-04002: 无法打开文件
    O/S-Error: (OS 2) 系统找不到指定的文件。


    ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误
    ORA-01194: 文件1需要更多的恢复来保持一致性
    ORA-01110: 数据文件 1: 'F:RMANSYSTEM01.DBF'

    恢复完成。再用resetlogs打开数据库:

    SQL> alter database open resetlogs ;
    ERROR 位于第 1 行:
    ORA-03113: 通信通道的文件结束

    等待很久,居然报这个错!其实不用怕,恢复已经完成,只要重新打开就可以了。

  • 相关阅读:
    poj3107 Godfather
    poj1655 Balancing Act
    bzoj2073 PRZ
    bzoj1688 疾病管理
    BZOJ——1607: [Usaco2008 Dec]Patting Heads 轻拍牛头
    BZOJ——1606: [Usaco2008 Dec]Hay For Sale 购买干草
    BZOJ——1649: [Usaco2006 Dec]Cow Roller Coaster
    BZOJ——2096: [Poi2010]Pilots
    洛谷—— P1785 漂亮的绝杀
    NOIP 2012 提高组 DAY1 T2 国王游戏
  • 原文地址:https://www.cnblogs.com/kevin443/p/7726968.html
Copyright © 2011-2022 走看看