oracle执行sql报错日志文件,Oracle日志文件误删除的解决方法

由于不小心,误删除了Oracle的日志文件,导致数据库不能重新启动,启动报错:

ora-01033:oracle initializationg or shutdown in progress

从网上了查了一下,解决办法如下:

步骤0:    sqlplus /NOLOG

SQL*Plus: Release 9.2.0.1.0 - Production on 星期一 5月 12 09:12:59 2008

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

步骤1:      SQL> connect sys/password as sysdba

已连接。

步骤2:       SQL> shutdown normal

ORA-01109: 数据库未打开

已经卸载数据库。

ORACLE 例程已经关闭。

步骤3:       SQL> startup mount

ORACLE 例程已经启动。

Total System Global Area 135338868 bytes

Fixed Size                   453492 bytes

Variable Size             109051904 bytes

Database Buffers           25165824 bytes

Redo Buffers                 667648 bytes

数据库装载完毕。

步骤4:      SQL> alter database open;

alter database open

*

ERROR 位于第 1 行:

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

ORA-00312: 联机日志 1 线程 1: 'C:\ORACLE\ORADATA\NIDB\REDO01.LOG'

在操作步骤4时,发现报ORA-00313,00312错误,检查应用实例目录下,发现Redo01,Redo02,Redo03三个日志文件都被删除了,问题到此已经明朗化。首先,执行下面的语句看看group1是不是current日志组

步骤5:      SQL> select group#,sequence#,archived,status from v$log;

GROUP# SEQUENCE# ARC STATUS

---------- ---------- --- ----------------

1        134 NO INACTIVE

2        135 NO INACTIVE

3        136 NO CURRENT

可以发现,被删除的日志不是当前日志组的成员,解决就比较简单 了:

步骤6:      SQL> alter database clear logfile group 1;

数据库已更改。

SQL> select group#,sequence#,archived,status from v$log;

GROUP# SEQUENCE# ARC STATUS

---------- ---------- --- ----------------

1          0 NO UNUSED

2        534 NO INACTIVE

3        535 NO CURRENT

SQL> alter database open;

alter database open

*

ERROR 位于第 1 行:

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

ORA-00312: 联机日志 2 线程 1: 'C:\ORACLE\ORADATA\NIDB\REDO02.LOG'

SQL> alter database clear logfile group 2;

数据库已更改。

SQL> select group#,sequence#,archived,status from v$log;

GROUP# SEQUENCE# ARC STATUS

---------- ---------- --- ----------------

1          0 NO UNUSED

2          0 NO UNUSED

3        535 NO CURRENT

SQL> alter database open;

alter database open

*

第 1 行出现错误:

ORA-00313: 无法打开日志组 3 (用于线程 1) 的成员

ORA-00312: 联机日志 3 线程 1:

'C:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\REDO03.LOG'

SQL> alter database clear logfile group 3;

alter database clear logfile group 3

*

第 1 行出现错误:

ORA-00313: 无法打开日志组 3 (用于线程 1) 的成员

ORA-00312: 联机日志 3 线程 1:

'C:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\REDO03.LOG'

ORA-27041: 无法打开文件

OSD-04002: 无法打开文件

O/S-Error: (OS 2) 系统找不到指定的文件。

由于日志文件REDO03.LOG为当前日志文件,不能用上面的方法进行恢复。

SQL> recover database until cancel;

完成介质恢复。

SQL> select group#,sequence#,archived,status from v$log;

GROUP# SEQUENCE# ARC STATUS

---------- ---------- --- ----------------

1          0 NO UNUSED

2          0 NO UNUSED

3          0 NO CLEARING_CURRENT

SQL> alter database open resetlogs; 数据库已更改。 SQL> conn test/111111 已连接。 到此,恢复成功!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值