redo文件管理(二)

2014-11-24 17:04:38 · 作者: · 浏览: 1
oracle/app/oracle/oradata/orcl/redo04_02.log 100 UNUSED
	 4 /home/oracle/app/oracle/oradata/orcl/redo04_04.log		    100 UNUSED

5.删除重做日志文件

重做日志文件状态是current和active是不能被删除
不能删除组内唯一成员
重做日志文件被删除,物理文件是没有被删除,需要手动去删除物理文件
如果想删除当前处于current或者active状态的重做日志文件,必须要把当前的重做日志文件切换到inactive状态如果删除重做日志文件,尽量被删除重做日志处于归档状态。(查看是否是归档状态v$log视图中的archived字段)

语法:

alter database drop logfile member '文件名'

不能删除组内唯一成员

SQL> select a.group#,a.member,b.bytes,b.status,b.archived

from v$logfile a, v$log b

where a.group#=b.group#;

GROUP# MEMBER BYTES STATUS ARC

---------- -------------------------------------------------- ---------- ---------------- ---

3 /home/oracle/app/oracle/oradata/orcl/redo03.log 52428800 INACTIVE YES

2 /home/oracle/app/oracle/oradata/orcl/redo02.log 52428800 INACTIVE YES

1 /home/oracle/app/oracle/oradata/orcl/redo01.log 52428800 CURRENT NO

4 /home/oracle/app/oracle/oradata/orcl/redo04_01.log 104857600 INACTIVE YES

4 /home/oracle/app/oracle/oradata/orcl/redo04_02.log 104857600 INACTIVE YES

4 /home/oracle/app/oracle/oradata/orcl/redo04_04.log 104857600 INACTIVE YES

删除重做日志状态为current,会提示错误信息

SQL> alter database drop logfile member '/home/oracle/app/oracle/oradata/orcl/redo03.log';

alter database drop logfile member '/home/oracle/app/oracle/oradata/orcl/redo03.log'

*

ERROR at line 1:

ORA-00361: cannot remove last log member /home/oracle/app/oracle/oradata/orcl/redo03.log for group 3

如果想删除当前处于current或者active状态的重做日志文件,必须要把当前的重做日志文件切换到inactive状态

SQL> alter system switch logfile;

System altered.

SQL> select a.group#,a.member,b.bytes/1024/1024,b.status,b.archived

2 from v$logfile a,v$log b

3 where a.group#=b.group#;

GROUP# MEMBER BYTES STATUS ARC

---------- -------------------------------------------------- ---------- ---------------- ---

3 /home/oracle/app/oracle/oradata/orcl/redo03.log 52428800 ACTIVE YES

2 /home/oracle/app/oracle/oradata/orcl/redo02.log 52428800 INACTIVE YES

1 /home/oracle/app/oracle/oradata/orcl/redo01.log 52428800 INACTIVE YES

4 /home/oracle/app/oracle/oradata/orcl/redo04_01.log 104857600 CURRENT NO

4 /home/oracle/app/oracle/oradata/orcl/redo04_02.log 104857600 CURRENT NO

4 /home/oracle/app/oracle/oradata/orcl/redo04_04.log 104857600 CURRENT NO

如果删除重做日志处于current或者active状态,会报 the current log for thread 1 - cannot drop members

SQL> alter database drop logfile member '/home/oracle/app/oracle/oradata/orcl/redo04_01.log';

alter database drop logfile member '/home/oracle/app/oracle/oradata/orcl/redo04_01.log'

*

ERROR at line 1:

ORA-01609: log 4 is the current log for thread 1 - cannot drop members

ORA-00312: online log 4 thread 1: '/home/oracle/app/oracle/oradata/orcl/redo04_01.log'

ORA-00312: online log 4 thread 1: '/home/oracle/app/oracle/oradata/orcl/redo04_02.log'

ORA-00312: online log 4 thread 1: '/home/oracle/app/oracle/oradata/orcl/redo04_04.log'

重做日志文件被删除,物理文件是没有被删除,需要手动去删除物理文件

SQL> alter system switch logfile;

System altered.

SQL> select a.group#,a.member,b.bytes/1024/1024 "M", b.status,b.archived

from v$logfile a,v$log b

where a.group#=b.group#;

GROUP# MEMBER M STATUS ARC

---------- -------------------------------------------------- ---------- ---------------- ---

3 /home/oracle/app/oracle/oradata/orcl/redo03.log 50 INACTIVE YES

2 /home/orac