`
wsql
  • 浏览: 11855321 次
  • 性别: 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: 通信通道的文件结束

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

分享到:
评论

相关推荐

    oracle日志文件相关命令

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

    Oracle的日志管理攻略

    ORACLE数据库的日志文件$ORACLE_BASE/admin/orasid/bdump/alert_orasid.log记录了重作日志的转换,数据库启动和关闭,数据库结构的改变,回退段的修改,死锁,内部错误等信息.  数据库管理员需要检查这个文件有无...

    教你怎样用Oracle方便地查看报警日志错误

    打开报警日志文件,用true &gt; 文件名 可清除掉里面的内容 具体示例: 假如,我现在第一次进行该设置,我先把现有的告警日志进行备份,如: –备份文件名称:今天16点24分前的告警日志信息 [orac

    Oracle案例:损坏控制文件的恢复方法

    在创建控制文件的脚本中,需要指定数据库的名称、日志文件的路径、数据文件的路径等信息。例如: STARTUP NOMOUNT CREATE CONTROLFILE REUSE DATABASE "TEST" NORESETLOGS NOARCHIVELOG MAXLOGFILES 32 ...

    利用xp自带的计划任务自动删除oracle过期的归档日志

    当oracle设置为归档模式时,由于归档日志默认空间设置为2G,所以数据库运行一段时间后由于归档日志空间被用完而导致数据库归档日志错误,所以必须删除过期的归档日志,释放闪回空间,这样才能保证数据库正常运行。...

    Oracle数据库维护培训

    在线重做日志文件的作用 在线重做日志文件的结构 控制日志文件切换和检查点执行 多路复用在线重做日志文件 创建新的数据库用户 修改和删除存在的数据库用户 监控已存在用户的信息 识别系统和对象权限 授予和回收权限...

    linux下oracle数据库备份的脚本文件

    * 设置备份命令的日志文件,以便记录备份过程中的错误信息。 备份命令 backups 命令用于将 Oracle 数据库备份到指定文件中。该命令的格式如下: `exp &lt;username&gt;/&lt;password&gt;@&lt;sid&gt; file=&lt;filename&gt; log=...

    SQL Server数据库状态监控 – 错误日志

    Windows Event Log和 SQL Server Error Log是这样的日志, PS: SQL Server 中的错误日志 (Error Log) 类似于 Oracle中的alert 文件。  一. 错误日志简介  1. Windows事件日志与SQL Server 错误日志  Windows...

    日志文件

    ORACLE日志文件

    Python3连接Oracle数据库.docx

    包括必要条件、cx_Oracle 模块、配置文件、get_dbini 类、exp_date 类、log_set 类、Python 参数传递、Oracle 数据库连接、数据导出、日志记录、全局变量、配置文件的使用、异常处理、日志文件等知识点。

    联机日志文件损坏后的恢复方法

    使用windows关机重启后,oracle无法连接,当用startup启动时总是报ORA-00333错误,检查Oracle文档对此问题的描述.判断是联机日志损坏了,下面是找到的一篇文章对此问题的解决办法.

    Oracle 管理诊断数据工具ADRCI.docx

    6. 可以快速清理大日志文件。 7. 所有平台均支持。 使用 ADRCI 工具,可以实现健康检查、清理日志、IPS 打包错误日志等功能。 健康检查: 1. 使用 ADRCI 工具可以快速高效地对数据库进行健康检查。 2. 例如,需要...

    oracle中记录用户登录信息的触发器的例子

    oracle中记录用户登录信息的触发器的例子,有具体操作过程,包括错误信息及解释,这个例子是自己为某企业的oracle安全管理的具体例子

    oracle dba数据库日常维护完全手册

    Oracle 警告日志文件(alert_SID.log)记录了数据库的运行情况,包括数据库的启动和关闭、重做日志切换情况、对数据库进行的某些操作、数据库发生的错误等。DBA 应该定期检查日志文件,根据日志中发现的问题及时进行...

    Oracle数据库学习指南

    47. 在客户端处理Oracle的数据行加锁问题 48. 怎样查看init_ora文件 49. 怎样快速查出Oracle 数据库中的锁等待 50. 怎样在SQLPlus中使用 '&' 来实现自定义参数变量? 51. 怎样在查询记录时给记录加锁 52. 自动...

    Oracle数据库系统紧急故障处理方法

     控制文件损坏: 控制文件记录了关于oracle的重要配置信息,如数据库名、字符集名字、各个数据文件、日志文件的位置等等信息。控制文件的损坏,会导致数据库异常关闭。一旦缺少控制文件,数据库也无法启动,这是一...

    从一个“普通”的Oracle DBA(Oracle数据库管理员)转变为Oracle Applications DBA(Oracle应用程序数据库管理员)

    Oracle Applications DBA(Oracle应用程序数据库管理员)比“普通”的Oracle DBA(Oracle数据库管理员)门槛高了很了很多,不仅要有处理数据库问题的能力,还需要了解整个应用程序的构架,从大处着眼,整体考虑问题...

Global site tag (gtag.js) - Google Analytics