当前位置: 首页 > Oracle, oracle 11g > 正文

RAC恢复的单实例数据库删除日志组时遇到ORA-01567

今天在搞一套测试数据库时遇到了日志组不让删的情况。

故事是这样的:开发人员发邮件要导一张生产库的表到测试数据库,登录测试服务器发现没有可用空间了,那就删点东西吧,一般首先想删的就是告警日志和trace文件了,这些文件不需要分析的情况下,是完全可以删的,不会影响数据库的运行,可是都删掉也就100多MB的空间,还是不够。

那怎么办,再也没啥可以删的了,总不能删数据库的文件吧,还别说,还真可以删,因为这个测试数据库是从一套两节点的RAC克隆出来的,那套RAC有10组REDO LOG FILE,还有STANDBY REDO FILE,而且每个REDO LOG FILE还有2个成员,完全可以把STANDBY REDO FILE删掉,因为测试数据库并没有搭建DG,可是查询后发现,由于之前也遇到磁盘空间不够,STANDBY REDO FILE已经删过了。

因为这个测试数据库是从RAC克隆而来,每个节点都有独立的REDO LOG FILE,变成单实例后,只有节点1的REDO LOG FILE再用,那就把节点2的删掉吧,再删节点2的REDO LOG FILE时,遇到了ORA-01567错误。

下面是操作过程:

先查询REDO LOG FILE的情况,确定哪些可以删。

sys@IVLDB> select GROUP#,member from v$logfile;

    GROUP# MEMBER
---------- --------------------------------------------------
         1 /u01/app/oracle/oradata/ivldb/redo01.log
         1 /u01/app/oracle/oradata/ivldb/redo02.log
         2 /u01/app/oracle/oradata/ivldb/redo03.log
         2 /u01/app/oracle/oradata/ivldb/redo04.log
         3 /u01/app/oracle/oradata/ivldb/redo05.log
         3 /u01/app/oracle/oradata/ivldb/redo06.log
         5 /u01/app/oracle/oradata/ivldb/redo07.log
         5 /u01/app/oracle/oradata/ivldb/redo08.log
         6 /u01/app/oracle/oradata/ivldb/redo09.log
         6 /u01/app/oracle/oradata/ivldb/redo010.log
         7 /u01/app/oracle/oradata/ivldb/redo011.log
         7 /u01/app/oracle/oradata/ivldb/redo012.log
         8 /u01/app/oracle/oradata/ivldb/redo013.log
         8 /u01/app/oracle/oradata/ivldb/redo014.log
        10 /u01/app/oracle/oradata/ivldb/redo017.log
        10 /u01/app/oracle/oradata/ivldb/redo018.log

16 rows selected.

sys@IVLDB> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS  
---------- ---------- ---------- ---------- ---------- --- --------
         1          1      31993  524288000          2 NO  INACTIVE
         2          1      31992  524288000          2 NO  INACTIVE
         3          1      31994  524288000          2 NO  INACTIVE
         5          1      31995  524288000          2 NO  CURRENT 
         6          2          1  524288000          2 YES INACTIVE
         7          2          0  524288000          2 YES UNUSED  
         8          2          0  524288000          2 YES UNUSED  
        10          2          0  524288000          2 YES UNUSED  

8 rows selected.

确定6,7,8,10这4个日志组可以删,那就动手。

sys@IVLDB> alter database drop logfile group 7;

Database altered.

sys@IVLDB> alter database drop logfile group 8;

Database altered.

sys@IVLDB> alter database drop logfile group 10;
alter database drop logfile group 10
*
ERROR at line 1:
ORA-01567: dropping log 10 would leave less than 2 log files for instance ivldb2 (thread 2)
ORA-00312: online log 10 thread 2: '/u01/app/oracle/oradata/ivldb/redo017.log'
ORA-00312: online log 10 thread 2: '/u01/app/oracle/oradata/ivldb/redo018.log'

在节点2的REDO LOG FILE就剩2个的时候,就不让删了,这是REDO的机制,每个节点不能少于2个日志组,要不日志怎么切换呀,是吧。

解决方法很简单,把节点2给踢出去就行了。

sys@IVLDB> alter database disable THREAD 2;

Database altered.

sys@IVLDB> alter database drop logfile group 10;

Database altered.

sys@IVLDB> alter database drop logfile group 6;

Database altered.

然后还得去操作系统上把这些删除掉的REDO LOG FILE删掉。

本文固定链接: https://www.dbdream.com.cn/2018/10/rac%e6%81%a2%e5%a4%8d%e7%9a%84%e5%8d%95%e5%ae%9e%e4%be%8b%e6%95%b0%e6%8d%ae%e5%ba%93%e5%88%a0%e9%99%a4%e6%97%a5%e5%bf%97%e7%bb%84%e6%97%b6%e9%81%87%e5%88%b0ora-01567/ | 信春哥,系统稳,闭眼上线不回滚!

该日志由 dbdream 于2018年10月24日发表在 Oracle, oracle 11g 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: RAC恢复的单实例数据库删除日志组时遇到ORA-01567 | 信春哥,系统稳,闭眼上线不回滚!
关键字: ,

RAC恢复的单实例数据库删除日志组时遇到ORA-01567:等您坐沙发呢!

发表评论

快捷键:Ctrl+Enter