删除日志文件组与日志文件成员
删除日志文件组前,先查看系统中日志文件组的信息。处于current状态的日志文件组是不能够
删除的,除非先进行强制日志切换alter system switch logfile;.
SQL> select group#,archived,status
2 from V$log;
GROUP# ARC STATUS
---------- --- ----------------
1 NO CURRENT
2 NO INACTIVE
3 NO INACTIVE
4 NO INACTIVE
我要删除的是group 4,该组处于inactive状态所以可以删除。另外系统中至少应该有两个日志
文件组可以使用。如果启用了归档的话,确保要删除的日志文件组已经归档。
SQL> alter database drop logfile group 4;
Database altered.
尝试删除当前的日志文件组。可见是不允许你删除的。
SQL> 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 oracl (thread 1) - cannot drop
ORA-00312: online log 1 thread 1: '/opt/oracle11g/oradata/oracl/redo01.log'
虽然我们已经删除了日志文件组group 4,但是该组中的日志文件成员还存在于操作系统中(对于
使用了OMF特性的数据库系统,删除的日志文件组中的日志文件会自动的帮你删除。)所有需要
DBA进入操作系统查找当相应的文件进行手动删除。
[oracle@zeng ~]$ cd /opt/oracle11g/oradata/oracl
[oracle@zeng oracl]$ ll
total 1827500
-rw-r-----. 1 oracle oinstall 9748480 Mar 9 13:28 control02.ctl
-rw-r-----. 1 oracle oinstall 9748480 Mar 9 13:28 control.ctl
-rw-r-----. 1 oracle oinstall 52429312 Mar 9 13:28 redo01.log
-rw-r-----. 1 oracle oinstall 52429312 Mar 9 10:21 redo02.log
-rw-r-----. 1 oracle oinstall 52429312 Mar 9 10:21 redo03.log
-rw-r-----. 1 oracle oinstall 20972032 Mar 9 10:21 redo401.log
-rw-r-----. 1 oracle oinstall 20972032 Mar 9 10:21 redo402.log
-rw-r-----. 1 oracle oinstall 52429312 Mar 8 22:50 redo.log
-rw-r-----. 1 oracle oinstall 629153792 Mar 9 13:26 sysaux01.dbf
-rw-r-----. 1 oracle oinstall 734011392 Mar 9 13:27 system01.dbf
-rw-r-----. 1 oracle oinstall 71311360 Mar 9 10:21 temp01.dbf
-rw-r-----. 1 oracle oinstall 209723392 Mar 9 13:27 undotbs01.dbf
-rw-r-----. 1 oracle oinstall 5251072 Mar 9 10:21 users01.dbf
删除前请认真核对要删除的日志文件是不是属于刚才我们删除的日志文件组的日志文件成员。
[oracle@zeng oracl]$ rm redo4*
确认删除以后的日志文件组的信息。
SQL> select group#,members,archived,status
2 from V$log;
GROUP# MEMBERS ARC STATUS
---------- ---------- --- ----------------
1 1 NO CURRENT
2 2 NO INACTIVE
3 1 NO INACTIVE
删除日志文件组中的日志文件成员前,查看各日志文件组与日志文件成员的信息。处于当前
或者活跃状态的日志文件组中的日志文件是不能够被删除的。除非先进行强制日志文件却换。
另外应该保证每组中至少有两个日志文件成员,并分布在不同的磁盘上。维护至少两份日志
文件成员的意义在于如果其中的一个日志文件损坏,该日志文件组还可以正常工作。分布在
不同磁盘上面的意义在于减少日志文件之间的I/O 竞争,并进一步提高可用性,以免介质故障
导致整个组的日志文件都不能访问。
SQL> select group#,member
2 from V$logfile;
GROUP# MEMBER
---------- ----------------------------------------
1 /opt/oracle11g/oradata/oracl/redo01.log
2 /opt/oracle11g/oradata/oracl/redo02.log
3 /opt/oracle11g/oradata/oracl/redo03.log
2 /opt/oracle11g/oradata/oracl/redo.log
SQL> select group#,members,archived,status
2 from V$log;
GROUP# MEMBERS ARC STATUS
---------- ---------- --- ----------------
1 1 NO CURRENT
2 2 NO INACTIVE
3 1 NO INACTIVE
我要删除的是 group 2 中的/opt/oracle11g/oradata/oracl/redo.log。该组处于inactive
状态,并且有两个日志文件成员。另外如果启用了归档,确保要删除的日志文件已经归档。
SQL> alter database drop logfile member '/opt/oracle11g/oradata/oracl/redo.log';
Database altered.
尝试删除 group 2中仅剩的一个日志文件。当一个日志文件组中仅剩一个日志文件的时候
该日志文件时不能被删除的。
SQL> alter database drop logfile member '/opt/oracle11g/oradata/oracl/redo02.log';
alter database drop logfile member '/opt/oracle11g/oradata/oracl/redo02.log'
*
ERROR at line 1:
ORA-00361: cannot remove last log member /opt/oracle11g/oradata/oracl/redo02.log for group 2
在没有启用OMF特性的数据库系统中,需要DBA在操作系统中手动删除该日志文件。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26110315/viewspace-718303/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/26110315/viewspace-718303/