现在是我已连接数据库. 就出现ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询错误.
之前是由于我用了一个未经验证的删除垃圾文件的bat处理文件, 结果把oracle的一些日志给删除了. 
雷同的情况如下(http://www.zxbc.cn/html/20080512/34225.html)
 但是情况又有些不同.所以按照相同的方式 就不行了.情高手指点一下连接到:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - ProductionSQL> select * from v$recover;
select * from v$recover
              *
ERROR 位于第 1 行:
ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询
SQL> select * from temp;
select * from temp
              *
ERROR 位于第 1 行:
ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询
SQL> shutdown normal;
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
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
数据库装载完毕。
SQL> alter database open;
alter database open
*
ERROR 位于第 1 行:
ORA-00313: 无法打开日志组 3 (线程 1) 的成员
ORA-00312: 联机日志 3 线程 1: 'C:\ORACLE\ORADATA\BOKE\REDO03.LOG'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
SQL> select group#,sequence#,archived,status from v$log;    GROUP#  SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
         1          0 NO  UNUSED
         2          0 NO  UNUSED
         3         34 NO  CURRENT接下来该怎么做. 谢谢. 指点一下:

解决方案 »

  1.   

    楼主应该是丢失了redo03.log, 如果没有其它的问题,应该很好处理
    我做了一个测试,在正常的情况下关闭数据库删除redo03导致出错,然后恢复的例子:
    SQL> conn / as sysdba;
    Connected.
    SQL> set lines 180;
    SQL> set pages 50000;
    SQL> select * from v$log;    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME
    ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ----------
             1          1         71   10485760          1 NO  CURRENT                 632413 02-1月 -09
             2          1         69   10485760          1 YES INACTIVE                580758 05-8月 -08
             3          1         70   10485760          1 YES INACTIVE                606585 29-8月 -08--关闭数据库并从操作系统删除redo03.log
    SQL> shutdown immediate;
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> startup
    ORACLE instance started.Total System Global Area  171966464 bytes
    Fixed Size                   787988 bytes
    Variable Size             145488364 bytes
    Database Buffers           25165824 bytes
    Redo Buffers                 524288 bytes
    Database mounted.
    ORA-00313: open failed for members of log group 3 of thread 1
    ORA-00312: online log 3 thread 1: 'D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\REDO03.LOG'SQL> alter database open;
    alter database open
    *
    ERROR at line 1:
    ORA-00313: open failed for members of log group 3 of thread 1
    ORA-00312: online log 3 thread 1: 'D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\REDO03.LOG'
    SQL> select * from v$logfile;    GROUP# STATUS  TYPE
    ---------- ------- -------
    MEMBER
    ----------------------------------------------------------------------------------------------------
    IS_
    ---
             3         ONLINE
    D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\REDO03.LOG
    NO         2         ONLINE
    D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\REDO02.LOG
    NO         1         ONLINE
    D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\REDO01.LOG
    NO
    SQL> select * from v$log;    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME
    ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ----------
             1          1         71   10485760          1 YES INACTIVE                632413 02-1月 -09
             2          1         72   10485760          1 YES INACTIVE                632974 02-1月 -09
             3          1         73   10485760          1 NO  CURRENT                 633171 02-1月 -09SQL> recover database until cancel;
    Media recovery complete.
    SQL> alter database open resetlogs;Database altered.SQL> select * from scott.emp;     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO
    ---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
          7369 SMITH      CLERK           7902 17-12月-80            800                    20
          7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300         30
          7521 WARD       SALESMAN        7698 22-2月 -81           1250        500         30
          7566 JONES      MANAGER         7839 02-4月 -81           2975                    20
          7654 MARTIN     SALESMAN        7698 28-9月 -81           1250       1400         30
          7698 BLAKE      MANAGER         7839 01-5月 -81           2850                    30
          7782 CLARK      MANAGER         7839 09-6月 -81           2450                    10
          7788 SCOTT      ANALYST         7566 19-4月 -87           3000                    20
          7839 KING       PRESIDENT            17-11月-81           5000                    10
          7844 TURNER     SALESMAN        7698 08-9月 -81           1500          0         30
          7876 ADAMS      CLERK           7788 23-5月 -87           1100                    20
          7900 JAMES      CLERK           7698 03-12月-81            950                    30
          7902 FORD       ANALYST         7566 03-12月-81           3000                    20
          7934 MILLER     CLERK           7782 23-1月 -82           1300                    1014 rows selected.SQL> 
      

  2.   

    重做日志文件损坏:
    数据库的所有增、删、改都会记录入重做日志。如果当前激活的重做日志文件损坏,会导致数据库异常关闭。非激活的重做日志最终也会因为日志切换变为激活的重做日志,所以损坏的非激活的重做日志最终也会导致数据库的异常终止。在ipas/mSwitch中每组重做日志只有一个成员,所以在下面的分析中只考虑重做日志组损坏的情况,而不考虑单个重做日志成员损坏的情况。确定损坏的重做日志的位置及其状态:
    1. 如果数据库处于可用状态:
    select * from v$logfile;
    svrmgrl>select * from v$log;
    2. 如果数据库处于已经异常终止:
    svrmlgr>startup mount;
    svrmgrl>select * from v$logfile;
    svrmgrl>select * from v$log;
    其中,logfile的状态为INVALID表示这组日志文件出现已经损坏;log状态为Inactive:表示重做日志文件处于非激活状态;Active: 表示重做日志文件处于激活状态;Current:表示是重做日志为当前正在使用的日志文件。损坏的日志文件处于非激活状态:
    1. 删除相应的日志组:
    svrmgrl>alter database drop logfile group group_number;
    2. 重新创建相应的日志组:
    svrmgrl>alter database add log file group group_number (’log_file_descritpion’,…) size log_file_size;损坏的日志文件处于激活状态且为非当前日志:
    1. 清除相应的日志组:
    svrmgrl>alter database clear unarchived logfile group group_number;损坏的日志文件为当前活动日志文件:
    用命令清除相应的日志组:
    svrmgrl>alter database clear unarchived logfile group group_number;
    如果清除失败,则只能做基于时间点的不完全恢复。
    打开数据库并且用适当的方法进行数据库全备份:
    svrmgrl>alter database open;