一、有关logfile的状态解释
UNUSED:
尚未记录change的空白group(一般会出现在loggroup刚刚被添加,或者刚刚使用了reset logs打开数据库,或者使用clear logfile后)
CURRENT:
当前正在被LGWR使用的group(同时是ACTIVE状态)
ACTIVE:
未被LGWR写,instance recovery需要的。还没有完成checkpoint。
INACTIVE:
online,未被LGWR写,对instance recovery不再有用了。
CLEARING:
正在被clear的group(Log is being re-created as an empty log after an ALTER DATABASE CLEAR LOGFILE statement. After the log is cleared, the status changes to UNUSED.)
二、添加、删除、切换日志组
1、首先我们需要查看数据库内各个日志组的状态以及大小
select * from v$log;
在上图中可以看到数据库中日志的GROUP(组号),Thread(实例号)个人理解,byte/1024/1024/1024(以GB先显示大小),以及状态
select bytes/1024/1024/1024 from v$log;
2、接下来需要针对每个日志组的状态进行删除以及添加。
实际情况如果需要对logfile进行删除,我们可以先对磁盘组进行添加,这时候就涉及logfile的几种状态,在上面有所解释,我们只可以删除掉状态为inactive的日志组,当我们所需要删除的日志组状态为其他时,我们可以交替使用下面这两个命令来将自己需要删除的日志组的状态更改为inactive:
#切换
alter system switch logfile;
#生成检查点
alter system checkpoint;
3、删除
等状态为inactive的时候我们就可以对日志组进行删除了
alter database drop logfile group xx;
紧接着添加日志文件,添加之前记得删除本地的日志文件:
alter database add logfile group 3 ('/u01/app/oracle/oradata/BEG/redo3.log') size 500M;
步骤交替进行,将目录下的日志文件依次进行删除,添加就OK。