当前位置: 首页 > 工具软件 > Group Log > 使用案例 >

ORA-00349: 无法获得 '+RACDB_DATA/racdb/onlinelog/group_18.log' 的块大

乐修远
2023-12-01

问题描述

最近在还原Oracle数据库后open的时候碰到了如下报错:
ORA-00349: 无法获得 '+RACDB_DATA/racdb/onlinelog/group_18.log' 的块大小
SP2-0642: SQL*Plus 内部错误状态 2137, 上下文 76:3:78
原因是是把rac还原到单实例上后,redo log的地址发生了变化。控制文件记录的是rac环境下的redo log的地址。

解决方法

解决方法有2个,一是将它们重命名,改为正确的绝对路径;二是删除后重建。

直接删除后重建,第一次尝试,新建了group31、group32、group33,想删除group17、group18、group19,但是不允许。

第二次尝试,删除成员:

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

    GROUP# STATUS
---------- ----------------
    32 UNUSED
    17 CLEARING_CURRENT
    33 UNUSED
    31 UNUSED
    18 CLEARING
    19 CLEARING_CURRENT

已选择6行。
SQL> alter database drop logfile member '+RACDB_DATA/racdb/onlinelog/group_19.log';
alter database drop logfile member '+RACDB_DATA/racdb/onlinelog/group_19.log'
*
第 1 行出现错误:
ORA-01609: 日志 19 是线程 2 的当前日志 - 无法删除成员 ORA-00312:
联机日志 19 线程 2: '+RACDB_DATA/racdb/onlinelog/group_19.log'
ORA-00312: 联机日志 19 线程 2: '+FRA/racdb/onlinelog/redo19.log'

SQL> alter database drop logfile member '+RACDB_DATA/racdb/onlinelog/group_18.log';
alter database drop logfile member '+RACDB_DATA/racdb/onlinelog/group_18.log'
*
第 1 行出现错误:
ORA-00361: 无法删除最后一个日志成员 +RACDB_DATA/racdb/onlinelog/group_18.log
(组 18)


SQL> alter database drop logfile member '+RACDB_DATA/racdb/onlinelog/group_19.log';
alter database drop logfile member '+RACDB_DATA/racdb/onlinelog/group_19.log'
*
第 1 行出现错误:
ORA-01609: 日志 19 是线程 2 的当前日志 - 无法删除成员 ORA-00312:
联机日志 19 线程 2: '+RACDB_DATA/racdb/onlinelog/group_19.log'
ORA-00312: 联机日志 19 线程 2: '+FRA/racdb/onlinelog/redo19.log'
ORA-00312: 联机日志 19 线程 2: '/u01/app/oracle/oradata/racdb/onlinelog/redo19.log'


SQL> alter database clear logfile '+RACDB_DATA/racdb/onlinelog/group_19.log';
alter database clear logfile '+RACDB_DATA/racdb/onlinelog/group_19.log'
*
第 1 行出现错误:
ORA-01514: 日志说明中出现错误: 没有此类日志 ORA-01517:
日志成员: '+RACDB_DATA/racdb/onlinelog/group_19.log'


SQL> alter database clear logfile '+RACDB_DATA/racdb/onlinelog/group_18.log';
alter database clear logfile '+RACDB_DATA/racdb/onlinelog/group_18.log'
*
第 1 行出现错误:
ORA-01514: 日志说明中出现错误: 没有此类日志 ORA-01517:
日志成员: '+RACDB_DATA/racdb/onlinelog/group_18.log'


SQL> alter database drop logfile member '+RACDB_DATA/racdb/onlinelog/group_18.log';
alter database drop logfile member '+RACDB_DATA/racdb/onlinelog/group_18.log'
*
第 1 行出现错误:
ORA-00362: 要求输入成员以组成组 18 中的有效日志文件 ORA-01517:
日志成员: '+RACDB_DATA/racdb/onlinelog/group_18.log'

但是既不能直接删除组也不能删除成员,因此第三次尝试,想在现有组上添加正确路径的成员后再清除需要删除的成员:

SQL> alter database add logfile member '/u01/app/oracle/oradata/racdb/onlinelog/redo17.log' to group 17;

数据库已更改。

SQL> alter database add logfile member '/u01/app/oracle/oradata/racdb/onlinelog/redo18.log' to group 18;

数据库已更改。

SQL> alter database add logfile member '/u01/app/oracle/oradata/racdb/onlinelog/redo19.log' to group 19;

数据库已更改。

SQL> alter database drop logfile member '+RACDB_DATA/racdb/onlinelog/group_19.log';
alter database drop logfile member '+RACDB_DATA/racdb/onlinelog/group_19.log'
*
第 1 行出现错误:
ORA-01609: 日志 19 是线程 2 的当前日志 - 无法删除成员 ORA-00312:
联机日志 19 线程 2: '+RACDB_DATA/racdb/onlinelog/group_19.log'
ORA-00312: 联机日志 19 线程 2: '+FRA/racdb/onlinelog/redo19.log'
ORA-00312: 联机日志 19 线程 2: '/u01/app/oracle/oradata/racdb/onlinelog/redo19.log'


SQL> alter database clear logfile '+RACDB_DATA/racdb/onlinelog/group_19.log';
alter database clear logfile '+RACDB_DATA/racdb/onlinelog/group_19.log'
*
第 1 行出现错误:
ORA-01514: 日志说明中出现错误: 没有此类日志 ORA-01517:
日志成员: '+RACDB_DATA/racdb/onlinelog/group_19.log'


SQL> alter database drop logfile member '+RACDB_DATA/racdb/onlinelog/group_18.log';
alter database drop logfile member '+RACDB_DATA/racdb/onlinelog/group_18.log'
*
第 1 行出现错误:
ORA-00362: 要求输入成员以组成组 18 中的有效日志文件 ORA-01517:
日志成员: '+RACDB_DATA/racdb/onlinelog/group_18.log'

无法直接删除,因为说是无效。
无奈之下,只好第四次尝试,试试能不能重命名:

SQL> alter database rename file '+RACDB_DATA/racdb/onlinelog/group_18.log' to '/u01/app/oracle/oradata/racdb/onlinelog/group18.log';
数据库已更改。

SQL> alter database rename file '+RACDB_DATA/racdb/onlinelog/group_19.log' to '/u01/app/oracle/oradata/racdb/onlinelog/group19.log';
SP2-0734: 未知的命令开头 "执行该命令..." - 忽略了剩余的行。
SQL> alter database rename file '+RACDB_DATA/racdb/onlinelog/group_17.log' to '/u01/app/oracle/oradata/racdb/onlinelog/group17.log';

数据库已更改。

SQL> alter database rename file '+RACDB_DATA/racdb/onlinelog/group_19.log' to '/u01/app/oracle/oradata/racdb/onlinelog/group19.log';

数据库已更改。
SQL> alter database rename file '+FRA/racdb/onlinelog/redo17.log' to '/u01/app/oracle/oradata/racdb/onlinelog/redo177.log';

数据库已更改。

SQL> alter database rename file '+FRA/racdb/onlinelog/redo19.log' to '/u01/app/oracle/oradata/racdb/onlinelog/redo179.log';

数据库已更改。
SQL> select group#,member from gv$logfile;

    GROUP# MEMBER
---------- --------------------------------------------------
    33 /u01/app/oracle/oradata/racdb/onlinelog/redo33.log
    17 /u01/app/oracle/oradata/racdb/onlinelog/redo17.log
    18 /u01/app/oracle/oradata/racdb/onlinelog/redo18.log
    19 /u01/app/oracle/oradata/racdb/onlinelog/redo19.log
    17 /u01/app/oracle/oradata/racdb/onlinelog/redo177.log

    19 /u01/app/oracle/oradata/racdb/onlinelog/redo179.log

     1 +RACDB_DATA/racdb/onlinelog/group_01.log
     2 +RACDB_DATA/racdb/onlinelog/group_02.log
    17 /u01/app/oracle/oradata/racdb/onlinelog/group17.log

     3 +FRA/racdb/onlinelog/redo03.log
    18 /u01/app/oracle/oradata/racdb/onlinelog/group18.log

     3 +RACDB_DATA/racdb/onlinelog/group_03.log
    19 /u01/app/oracle/oradata/racdb/onlinelog/group19.log

     4 +FRA/racdb/onlinelog/redo04.log
     5 +FRA/racdb/onlinelog/redo05.log
     6 +FRA/racdb/onlinelog/redo06.log
     7 +FRA/racdb/onlinelog/redo07.log
     7 +RACDB_DATA/racdb/onlinelog/group_07.log
     8 +FRA/racdb/onlinelog/redo08.log
     9 +FRA/racdb/onlinelog/redo09.log
    10 +RACDB_DATA/racdb/onlinelog/group_10.log

已选择21行。

将所有v$log视图里能看到的组17 18 19的成员都改为了正确路径。
数据库正常开库。

但是遗留了一个问题:
刚恢复好之后v$loggv$log里只有组17、18、19,为什么v$logfilegv$logfile里除了17、18、19还有1-17呢?并且无法删除

 类似资料: