源数据库的每个日志组各有两个成员。通过rman备份后恢复到另一台机器上。由于在目标机器上日志组其中一个成员对应的路径不存在,所以执行alter database open resetlogs会出错。请问能不能在此时删除路径不存在的日志组成员?谢谢!

解决方案 »

  1.   

    当然可以,也只能在mount下删除。
      

  2.   

    alter database drop logfile 要删除的日志组;  注意最好要保留三个日志组,如果只有三个,可以先创建一个,再删除一个。
      

  3.   

    我说的是删除日志组成员,而不是删除日志组。数据库打开前,可以删除非current状态的日志组的成员,可是current状态的日志组成员删除不了,需要切换日志。可是数据库没打开,又切换不了日志。
      

  4.   

    sql>startup mount
    sql>alter database drop logfile member '/u01/oracle/product/10.0.2/oradata/ORCL/redo42.log';
    sql>alter system switch logfile;
      

  5.   


    SYS AS SYSDBA> startup mount;
    ORACLE instance started.Total System Global Area  612368384 bytes
    Fixed Size                  2074664 bytes
    Variable Size             276826072 bytes
    Database Buffers          327155712 bytes
    Redo Buffers                6311936 bytes
    Database mounted.
    SYS AS SYSDBA> alter database drop logfile member '/home/oracle/redo01.log';
    alter database drop logfile member '/home/oracle/redo01.log'
    *
    ERROR at line 1:
    ORA-01609: log 1 is the current log for thread 1 - cannot drop members
    ORA-00312: online log 1 thread 1: '/opt/app/oracle/oradata/orcl/redo01.log'
    ORA-00312: online log 1 thread 1: '/home/oracle/redo01.log'
    SYS AS SYSDBA> alter system switch logfile;
    alter system switch logfile
    *
    ERROR at line 1:
    ORA-01109: database not open