`
liuguofeng
  • 浏览: 450337 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Oracle 日志文件错误的处理

阅读更多

转自:http://hi.baidu.com/dashuaiwang/blog/item/47cc680ec35055c37acbe1f8.html

打开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: 通信通道的文件结束

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


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/kirao/archive/2009/12/18/5030551.aspx

分享到:
评论

相关推荐

    oracle日志文件大全

    ### Oracle日志文件大全知识点详解 #### 一、Oracle中的几类日志文件 Oracle数据库管理系统使用多种类型的日志文件来记录系统运行期间的各种活动,这些日志文件不仅有助于数据库的管理和维护,还为故障诊断提供了...

    oracle日志文件相关命令

    Oracle 日志文件是 Oracle 数据库中记录所有数据库操作的文件,对数据库的稳定运行和错误分析具有重要作用。Oracle 日志文件可以帮助数据库管理员追踪数据库的所有操作,包括数据修改、事务提交、错误信息等。下面是...

    关于oracle日志文件.docx

    Oracle数据库的日志系统是其核心组件之一,用于确保...总之,Oracle日志文件是数据库管理和保护的重要组成部分。理解它们的功能、管理和恢复策略是每个DBA必备的技能,有助于确保数据安全、提高系统的可用性和可靠性。

    oracle查看alert日志文件位置

    Alert日志文件包含有关数据库实例运行时的重要信息,例如错误消息、警告和其他重要事件,对于诊断问题和维护数据库健康状态非常有用。本文将详细介绍如何在Oracle 11g环境下查找和定位Alert日志文件。 ### 核心概念...

    Oracle日志文件丢失的解决方法

    总结起来,处理Oracle日志文件丢失的问题,关键步骤包括:以SYSDBA身份登录,关闭数据库,挂起启动,执行介质恢复,最后打开数据库并重置日志。此外,良好的数据库管理和备份策略是防止这类问题的关键。对于大型企业...

    oracle日志文件恢复

    ### Oracle日志文件恢复 在Oracle数据库管理过程中,日志文件是极其重要的组成部分之一,它不仅记录了所有对数据库所做的更改操作,而且还能在数据丢失或数据库崩溃等紧急情况下帮助我们进行数据恢复。本文将详细...

    oracle11g监听日志文件过大导致监听无法启动2

    1. **查看日志文件**:首先,使用文本编辑器或`tail`命令查看监听日志文件($ORACLE_HOME/network/admin/listener.log),找出可能导致文件过大的原因,例如异常的错误消息或异常频繁的事件。 2. **配置日志级别**...

    oracle数据库日志查看方法

    本文将详细介绍如何查看Oracle数据库中的各种日志文件,并提供具体的步骤和示例,帮助读者更好地理解和操作。 #### 二、Oracle数据库日志类型 Oracle数据库中有多种类型的日志文件,包括但不限于: 1. **后台进程...

    ORACLE联机日志文件丢失或损坏的处理方法

    ### ORACLE联机日志文件丢失或损坏的处理方法 #### 概述 在Oracle数据库管理过程中,联机重做日志(Online Redo Log)是数据库运行时记录所有事务更改的重要组成部分。当联机重做日志文件丢失或损坏时,可能会导致...

    深入分析Oracle数据库日志文件.rar

    理解Oracle日志文件的管理策略也是提高数据库性能的关键。适当的日志文件大小和数量应根据数据库的事务量和I/O性能来设置。过大或过小的redo log文件都可能导致性能问题。此外,日志文件的位置和命名策略也需谨慎...

    论文研究-Oracle8i数据库日志文件的分析与恢复.pdf

    5. 恢复方法:当Oracle数据库遇到硬件故障、软件错误或人为操作失误导致数据损坏时,可以利用日志文件中的信息对数据库进行恢复。恢复过程中,Oracle使用重做日志中的SCN信息来确定需要应用的事务,并利用归档日志...

    定时删除oracle日志脚本

    - 使用`rm`命令删除指定的归档日志文件,同时处理可能出现的权限问题。 - 如果涉及redo log,需先进行日志切换,再删除已用的日志文件。 - 清理alert log中的旧条目,这通常需要通过Oracle的`expdp`和`impdp`工具...

    oracle日志alter.log每天切割脚本

    1. **增强日志处理能力**:可以考虑增加错误处理机制,如在执行过程中遇到异常时记录详细的错误信息。 2. **提升脚本健壮性**:对脚本中的变量进行更严格的校验,比如检查`ORACLE_SID`和`db_unique_name`等变量的...

    Oracle的日志管理攻略

    由于日志文件的重要性,DBA需要定期检查这些文件,寻找任何ORA-错误,并对日志文件进行存档整理。这有助于保持系统的健康状态,避免因日志文件过大而导致的性能问题。 **1.3 处理大型日志文件** 当日志文件变得...

    Oracle系统紧急故障处理(数据文件、日志文件以及表空间损坏的处理).rar

    - 切换日志文件:Oracle支持在线切换日志,可以在不影响数据库运行的情况下替换损坏的日志。 - 通过归档日志重建:如果数据库处于归档模式,可以尝试使用已归档的日志重建损坏的日志。 三、表空间损坏 3. 表空间...

    浅谈Oracle常见错误处理

    Oracle公司的工程师们列举了一些常见的Oracle错误,并提供了相应的处理方法。下面将对Oracle常见错误的处理方法进行详细探讨。 首先,关于数据库恢复,在文档中特别提到“数据库非常规恢复”的注意事项。文档明确...

    oracle日志丢失数据库恢复技巧

    ### Oracle日志丢失数据库恢复技巧 #### 背景与问题描述 在Oracle数据库管理过程中,日志文件丢失是一个常见的问题。例如,在某次事件中,测试部门反馈了一个关于内部网络上的Oracle数据库(版本1.105)无法正常...

    oracle数据文件被误删除后的灾难处理

    3. **备份相关日志文件**:在进行任何恢复操作之前,备份相关的日志文件非常重要,包括但不限于 alert 日志文件和 trace 文件。 #### 二、Oracle 数据文件误删后的初步应对措施 1. **检查错误日志**:误删除数据...

    ASM实例和监听日志文件和Database日志文件

    ASM 实例和监听日志文件是 Oracle 数据库管理系统中两个重要的日志文件。ASM 实例日志文件记录了 Automatic Storage Management(ASM)实例的所有操作,而监听日志文件则记录了数据库监听器的所有操作。通过 grid ...

Global site tag (gtag.js) - Google Analytics