ORA-00313: 无法打开日志组 1 (线程 1) 的成员,如何解决?

我本想访问用户vm_user的一些表,但发现用户vm_user突然连不上数据库,以下是在命令行下的输出:

C:\Documents and Settings\Administrator>sqlplus /nolog

SQL*Plus: Release 9.2.0.1.0 - Production on 星期三 8月 9 21:53:40 2006

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

SQL>
SQL> connect vm_user/qqq;
ERROR:
ORA-01033: ORACLE initialization or shutdown in progress


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: 'C:\ORACLE\ORADATA\ORCL\REDO01.LOG'


SQL>

C:\Documents and Settings\Administrator>dir C:\oracle\oradata\ORCL
 驱动器 C 中的卷没有标签。
 卷的序列号是 304F-9C77

 C:\oracle\oradata\ORCL 的目录

2006-08-06  19:02    <DIR>          .
2006-08-06  19:02    <DIR>          ..
2006-08-09  21:54         2,023,424 CONTROL01.CTL
2006-08-09  21:54         2,023,424 CONTROL02.CTL
2006-08-09  21:54         2,023,424 CONTROL03.CTL
2006-08-09  20:46        20,979,712 CWMLITE01.DBF
2006-08-09  20:46        20,979,712 DRSYS01.DBF
2006-08-09  20:46       156,639,232 EXAMPLE01.DBF
2006-08-09  20:46        26,222,592 INDX01.DBF
2006-08-09  20:46        20,979,712 ODM01.DBF
2006-08-09  20:46       104,858,112 REDO02.LOG
2006-08-09  20:46       419,438,592 SYSTEM01.DBF
2006-06-24  16:09        41,951,232 TEMP01.DBF
2006-08-09  20:46        10,493,952 TOOLS01.DBF
2006-08-09  20:46       209,723,392 UNDOTBS01.DBF
2006-08-09  20:46        26,222,592 USERS01.DBF
2006-08-09  20:46        39,985,152 XDB01.DBF
              15 个文件  1,104,544,256 字节
               2 个目录 11,991,695,360 可用字节


可见这是由于C:\ORACLE\ORADATA\ORCL\REDO01.LOG被误删造成的,那么有什么办法可以解决这个问题呢(希望保留用户vm_uer的所有表及其中的数据)?恳请大侠们指点。
---------------------------------------------------------------

首先,执行下面的语句看看group1是不是current日志组
select group#,sequence#,archived,status from v$log;

如果被删除的日志不是当前日志组的成员,比较简单
alter database clear logfile group 1;
如果你的库是非归档的,或许要用下面的语句
alter database clear unarchived logfile group 1;

如果是当前日志组损坏,但是数据库是正常关闭的,上面的办法也可以使用

如果日志组中有活动的事务,那么可能需要利用备份来恢复了,否则只有通过隐含参数强制打开库

你可能感兴趣的:(oracle,sql,C++,c,C#)