`
xiaoboss
  • 浏览: 650718 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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

阅读更多

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

ORA-00313: 无法打开日志组 1 (线程 1) 的成员
ORA-00312: 联机日志 1 线程 1: 'D:\ORACLE\ORADATA\GOCOM\REDO01.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:\ORACLE\ORADATA\ORCL\REDO01.LOG'
查看D:\ORACLE\ORADATA\myoracle\REDO01.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:\oracle\ora92\network\admin\sqlnet.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 Settings\5201314>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'; /*恢复*/
/*(recover database until cancel;alter database resetlogs;重建日志文件),另外的写法,不知哪个对.*/
完成介质恢复。
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:\ORACLE\ORADATA\RMAN\REDO03.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:\ORACLE\ORADATA\RMAN\REDO03.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:\ORACLE\ORADATA\RMAN\REDO03.LOG'

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


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


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


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

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

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

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

 

分享到:
评论

相关推荐

    oracle_10g的闪回设置

    **ORA-00312: 联机日志 2 线程 1: 'O:\ORACLE\ORADATA\ORACLE10\REDO02.LOG'** 这条信息指明了出现问题的具体重做日志文件路径。 #### 分析与解决方案 1. **确定问题根源** - 验证归档目录是否有足够的空间。 ...

    Oracle9i的init.ora参数中文说明

    Oracle9i初始化参数中文说明 Blank_trimming: 说明: 如果值为TRUE, 即使源长度比目标长度 (SQL92 兼容) 更长, 也允许分配数据。 值范围: TRUE | FALSE 默认值: FALSE serializable: 说明: 确定查询是否获取表级...

    数据库文件误删

    联机重做日志由一组日志文件组成,每个组包含多个成员,确保在日志切换时提供冗余和连续性。当数据库运行时,所有的改变都被记录在当前的重做日志文件中,一旦满就会自动切换到下一个文件,旧的文件则被标记为可归档...

    1-oracle傻瓜手册(自己修订版)

    【Oracle傻瓜手册(自己修订版)】是一个全面介绍Oracle数据库管理、配置和优化的指南。手册涵盖了从Oracle 8到9i版本的各种操作,包括数据库的创建、维护、性能优化以及备份恢复策略。 1. **创建** - **Oracle 8 ...

    oracle8傻瓜手册

    建立`dba`组和`oracle`用户;确定Oracle软件的安装位置(如`/oracle`)。 - **1.2 UnixWare 7.5**:特定于UnixWare 7.5环境下的安装指南。 - **1.3 HP-UX**:针对HP-UX环境下的安装步骤。 - **1.4 Linux**: - **...

    oracle备份与恢复

    1. Nomount状态:在这个阶段,Oracle仅读取初始化参数文件(通常为`init.ora`或`spfile.ora`),初始化系统全局区(SGA),但并未加载数据库的实际结构信息。 2. Mount状态:在此状态下,Oracle不仅读取初始化文件...

    oracle10g通过浏览器备份数据

    将 `oraback` 用户加入到 `Administrators` 和 `ora_dba` 组中。 3. 在本地安全策略中赋予 `oraback` 用户 “作为批处理作业登录” 的权限。 ##### 2.2 创建备份管理员 虽然可以使用 SYSTEM 用户来进行数据的导入...

    Oracle 9i中文版基础培训教程11

    - **REDOLOG**:展示当前分配的重做日志组数和数据库能支持的最大重做日志组数,重做日志用于记录事务的修改信息,是故障恢复的关键。 - **DATAFILE**:记录数据库中创建的数据文件数量和允许的最大数据文件数量,...

    oracle数据库dba管理手册

    第1章 Oracle体系结构 1 1.1 数据库概述及实例 1 1.2 数据库 1 1.2.1 表空间 2 1.2.2 文件 2 1.3 实例 3 1.4 数据库内部结构 3 1.4.1 表、列和数据类型 4 1.4.2 约束条件 5 1.4.3 抽象数据类型 6 1.4.4 分区和子分区...

    ORACLE8i FOR SOLARIS数据备份及恢复.pdf

    Oracle数据库作为大型关系型数据库系统,因其高度可靠、耐用、安全和可扩展性,尤其适用于大规模分布式、并行处理和多线程环境下的数据存储。 数据库的启动与关闭是日常维护的基本步骤。在Solaris服务器上,可以...

Global site tag (gtag.js) - Google Analytics