1、创建2个新的日志组
alter database add logfile group 4 ('D:\ORACLE\ORADATA\ORADB\REDO04_1.LOG') size 1024k;
alter database add logfile group 5 ('D:\ORACLE\ORADATA\ORADB\REDO05_1.LOG') size 1024k;
2、切换当前日志到新的日志组
alter system switch logfile;
alter system switch logfile;
3、删除旧的日志组
alter database drop logfile group 1;
alter database drop logfile group 2;
alter database drop logfile group 3;
4、操作系统下删除原日志组1、2、3中的文件
5、重建日志组1、2、3
alter database add logfile group 1 ('D:\ORACLE\ORADATA\ORADB\REDO01_1.LOG') size 10M;
alter database add logfile group 2 ('D:\ORACLE\ORADATA\ORADB\REDO02_1.LOG') size 10M;
alter database add logfile group 3 ('D:\ORACLE\ORADATA\ORADB\REDO03_1.LOG') size 10M;
6、切换日志组
alter system switch logfile;
alter system switch logfile;
alter system switch logfile;
---此时,需要确认日志是否已经是inactive status
SQL> select group#,sequence#,bytes/1024/1024,archived,status from v$log;
GROUP# SEQUENCE# BYTES/1024/1024 ARC STATUS
---------- ---------- --------------- --- ----------------
4 9 5 NO CURRENT
5 6 5 YES INACTIVE
6 7 5 YES INACTIVE
7 8 5 YES INACTIVE
不要去删除 非INACTIVE状态日志,可以通过alter system switch logfile 进行日志切换,使之位于INACTIVE
日志文件为active状态,表示这个文件的检查点还没有作完。而检查点没有做完的原因是dbwr执行的dirty buffer写出还没有执行完成,等待的过程就是等待将current日志中修改过的数据块信息写入到数据文件的过程。
可以手工触发一致点
alter system checkpoint;
此时,再检查日志组是否处于了INACTIVE状态
7、删除中间过渡用的日志组4、5
alter database drop logfile group 4;
alter database drop logfile group 5;
8、到操作系统下删除原日志组4、5中的文件
9、备份当前的最新的控制文件
SQL>; connect internal
SQL>; alter database backup controlfile to trace resetlogs