【oracle错误解决】ORA-01033;ORA-00313;ORA-00312

Error:ORA-01033 ORACLE initialization or shutdown inprogress

ORA-00313:无法打开日志组1(线程 1)的成员_ORA-00312

 

我的oracle10g启动的时候,登录sql/plus scott/tiger 报如下错误

Error: ORA-01033ORACLE initialization or shutdown in progress

上网查了下,找到解决办法:

============================================================

When trying to connect got theerror
ORA-01033: ORACLE initialization or shutdown in progress
went to prompt and typed
sqlplus /nolog
tried to connect using sys, got the same error
fired
connect / assysdba
fired
shutdown
got
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
fired
startup
got
ORACLE instance started.
Total System Global Area 276371980 bytes
Fixed Size 453132 bytes
Variable Size 117440512 bytes
Database Buffers 157286400 bytes
Redo Buffers 1191936 bytes
Database mounted.
ORA-01113: file 30 needs media recovery(事实上,我的问题并没有解决,因为到了这一步又出现了行的错误:ORA-00313:无法打开日志组1(线程 1)的成员_ORA-00312:于是后面的步骤只是给读者参看,因为我又转到了第二个错误的解决办法上了
ORA-01110: data file 30:'E:ORACLEORADATAINDEX5_1T.ORA'
fired
alter database recover datafile30;
got
ERROR at line 1:
ORA-00283: recovery session canceled due to errors
ORA-01114: IO error writing block to file 30 (block # 1)
ORA-01110: data file 30: 'E:ORACLEORADATAINDEX5_1T.ORA'
ORA-27091: skgfqio: unable to queue I/O
ORA-27041: unable to open file
OSD-04002: unable to open file
O/S-Error: (OS 5) Access is denied.
E:ORACLEORADATAINDEX5_1T.ORA file was readonly. Unchecked it.
fired
alter database recover datafile30;
shutdown
startup

Database mounted and opened successfully!

==================================================

ORA-00313:无法打开日志组1(线程 1)的成员_ORA-00312:

我查了一下,又找到如下解决办,并最终搞定:

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

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

SQL> connect/ as sysdba;
已连接。
SQL> shutdownimmediate;
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> shutdownimmediate;
ORA-01109: 数据库未打开
已经卸载数据库。
SQL> startupmount;
ORACLE 例程已经启动。
SQL>select * fromv$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE#FIRST_TIME
---------- ---------- ---------- ---------- ---------- ------------------- ------------- ----------
1 1 0 104857600 1 NO UNCURRENT 670680 07-12月-07(事实上,我查询出来的结果是CURRENT)
2 1 15104857600 1 NO unactive 696119 07-12月-07
3 1 0 104857600 1 NO Unactive 650182 07-12月-07
已选择3行。
alter database clear unarchivedlogfile group 1;
数据库已经更改.
alter database clear unarchivedlogfile group 2;
数据库已经更改.
alter database clear unarchivedlogfile 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 * fromv$log;
如果被删除的日志不是当前日志组的成员,比较简单
alter database clear logfile group1;
如果你的库是非归档的,或许要用下面的语句
alter database clear unarchivedlogfile group 1;
如果是当前日志组损坏,但是数据库是正常关闭的,上面的办法也可以使用
如果日志组中有活动的事务,那么可能需要利用备份来恢复了:过程如下:
解决过程:Microsoft Windows XP [版本 5.1.2600](C) 版权所有 1985-2001 MicrosoftCorp.
C:\Documents and Settings\5201314>sqlplus/nolog
SQL*Plus: Release 10.2.0.1.0 - Production on 星期六 6月 20 11:19:522008Copyright (c) 1982, 2005, Oracle. All rights
reserved.
SQL> conn sys/dd as sysdba
已连接。
SQL> startup mount
ORA-01081: 无法启动已在运行的 ORACLE - 请首先关闭它
SQL> recover databaseuntil time '2008-06-1913: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 databaseclear 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> alterdatabase clear unarchived logfile group 3 unrecoverabledatafile;
alter database clear unarchived logfile group 3 unrecoverabledatafile
*
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 databaseuntil 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> alterdatabase open resetlogs ;
ERROR 位于第 1 行:
ORA-03113: 通信通道的文件结束

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

最后,重新登录

sqlplus scott/tiger

successful


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ORA-01033错误是指在尝试登录Oracle数据库时遇到了初始化或关闭正在进行的情况。而ORA-12514错误是指数据库监听程序无法连接到实例。 根据引用中的信息,ORA-01033错误解决过程中,其中一步是以DBA用户登录,并执行了shutdown normal命令。这个命令用于正常关闭数据库实例。通过这个过程,可能会引发ORA-12514错误的出现。 ORA-12514错误通常是由于数据库实例未在监听程序中注册引起的。这可能是因为数据库实例未正确启动,或者监听程序配置中的连接字符串不正确。 要解决ORA-12514错误,首先需要确保数据库实例已经启动。可以使用lsnrctl status命令来检查监听程序的状态以及数据库实例的注册情况。 如果数据库实例已经启动并且监听程序也正常工作,那么可能是连接字符串配置错误。可以通过修改监听程序的监听文件(listener.ora)或者使用Oracle Net Manager来更新连接字符串配置。 总结起来,ORA-01033错误与数据库实例的初始化或关闭有关,而ORA-12514错误与监听程序连接实例有关。在解决ORA-01033错误的过程中,可能会导致ORA-12514错误的出现。要解决ORA-12514错误,需要确保数据库实例已经启动,并且监听程序配置正确。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [ORA-01033错误解决方案](https://blog.csdn.net/weixin_51192399/article/details/127106796)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [ORA-01033解决.png](https://download.csdn.net/download/AndyWongg/12534847)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值