【REDO】删除联机重做日志文件组的注意事项

  关于联机重做日志文件组的删除需要注意以下几点:
  ①日志组为active和current状态时不可以删除
  ②日志组在数据库级别删除后操作系统上的文件不会被级链删除
  ③ 对于一个Oracle数据库实例,至少要包含两个联机重做日志组

1.日志组为active和current状态时不可以删除
1)查询当前系统中日志组状态
sys@ora10g> select group#,status from v$log;

    GROUP# STATUS
---------- ----------------
         1 CURRENT
         2 INACTIVE
         3 INACTIVE

2)尝试删除状态为“CURRENT”的联机重做日志组
这里显示为“CURRENT”状态的日志组为第一组。
sys@ora10g> alter database drop logfile group 1;
alter database drop logfile group 1
*
ERROR at line 1:
ORA-01623: log 1 is current log for instance ora10g (thread 1) - cannot drop
ORA-00312: online log 1 thread 1: '/oracle/ora10gR2/oradata/ora10g/redo01.log'

提示信息描述得很清楚,由于要删除的第一组日志是ora10g实例的当前日志组,不允许删除。

2.日志组在数据库级别删除后操作系统上的文件不会被级链删除
1)获取日志组成员信息
sys@ora10g> col MEMBER for a50
sys@ora10g> select group#,member from v$logfile;

    GROUP# MEMBER
---------- --------------------------------------------------
         1 /oracle/ora10gR2/oradata/ora10g/redo01.log
         2 /oracle/ora10gR2/oradata/ora10g/redo02.log
         3 /oracle/ora10gR2/oradata/ora10g/redo03.log

2)删除第三组日志
sys@ora10g> alter database drop logfile group 3;

Database altered.

sys@ora10g> select group#,member from v$logfile;

    GROUP# MEMBER
---------- --------------------------------------------------
         1 /oracle/ora10gR2/oradata/ora10g/redo01.log
         2 /oracle/ora10gR2/oradata/ora10g/redo02.log

删除成功。

3)确认操作系统文件是否删除
sys@ora10g> !ls -l /oracle/ora10gR2/oradata/ora10g/redo03.log
-rw-r----- 1 oracle oinstall 52429312 Jul 12 10:58 /oracle/ora10gR2/oradata/ora10g/redo03.log

可见,虽然在数据库层面已经将日志组删除成功,但是在操作系统上依然残留着对应的文件。
也正因为这个原因,如果没有对操作系统做相应清理,在此使用同样的文件创建日志组时会报“ORA-27038”错,提示文件已经存在,如下所示。
sys@ora10g> alter database add logfile group 3 ('/oracle/ora10gR2/oradata/ora10g/redo03.log') size 50m;
alter database add logfile group 3 ('/oracle/ora10gR2/oradata/ora10g/redo03.log') size 50m
*
ERROR at line 1:
ORA-00301: error in adding log file '/oracle/ora10gR2/oradata/ora10g/redo03.log' - file cannot be created
ORA-27038: created file already exists
Additional information: 1

4)手工删除操作系统上的残留文件
sys@ora10g> !rm -f /oracle/ora10gR2/oradata/ora10g/redo03.log

这样,日志文件组删除任务才算彻底完成。

3.对于一个Oracle数据库实例,至少要包含两个联机重做日志组
目的:进行切换,以便归档模式下进行归档。
1)确认当前系统日子组信息
sys@ora10g> select group#,member from v$logfile;

    GROUP# MEMBER
---------- --------------------------------------------------
         1 /oracle/ora10gR2/oradata/ora10g/redo01.log
         2 /oracle/ora10gR2/oradata/ora10g/redo02.log

2)尝试再删除一组日志
目前系统中仅剩两组日志组,此时我们尝试再删除一组日志,看看结果如何。
sys@ora10g> alter database drop logfile group 2;
alter database drop logfile group 2
*
ERROR at line 1:
ORA-01567: dropping log 2 would leave less than 2 log files for instance ora10g (thread 1)
ORA-00312: online log 2 thread 1: '/oracle/ora10gR2/oradata/ora10g/redo02.log'

其中的“ORA-01567”错误提示内容已经清晰的说明了一切:dropping log 2 would leave less than 2 log files for instance ora10g (thread 1)

4.小结
  本文就联机重做日志文件组删除过程中需要注意的三个方面进行了测试,在日常维护过程中就此内容需要多加注意。
  建议根据具体的应用特点创建多个日志组,并且保证每组日志中包含多个日志成员,防止因个别日志文件损坏导致系统故障。

Good luck.

secooler
11.07.12

-- The End --

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/519536/viewspace-702035/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/519536/viewspace-702035/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值