今天发现oracle数据库很慢,看到大量进程在等待log file switch (checkpoint incomplete),日志文件的使用情况如下:
sys@test15>select group#,sequence#,bytes/1024/1024 bytes(m),members,archived,status from v$log;
group# sequence# bytes(m) members arc status
---------- ---------- ---------- ---------- --- ----------------
1 205 100 2 yes active
2 206 100 2 no current
3 204 100 2 yes active
sys@test15>select group#,status,type,member from v$logfile where type='online' order by type,group#;
group# status type member
---------- ------- ------- ------------------------------------------------------------
1 online /data/oradata/orcl/data/redo01a.log
1 online /home/oracle/data/orcl/redo01b.log
2 online /data/oradata/orcl/data/redo02a.log
2 online /home/oracle/data/orcl/redo02b.log
3 online /data/oradata/orcl/data/redo03a.log
3 online /home/oracle/data/orcl/redo03b.log
从上面可以看出,所有的日志文件都是active或current状态,这说明日志文件太小,需增加其大小。
但在线重做日志不可以直接resize,需要通过如下方式:
1)添加新的日志文件组,定义它的大小
sys@test15>alter database add logfile group 4 ('/data/oradata/orcl/data/redo04a.log','/home/oracle/data/orcl/redo04b.log') size 500m reuse;
database altered.
2)持续切换日志,一直到group 1的status=inactive,且archived=yes(如果为归档的话),如下所示:
sys@test15>alter system switch logfile;
sys@test15>alter system checkpoint;
sys@test15>select group#,sequence#,bytes/1024/1024 bytes(m),members,archived,status from v$log where group#=1;
group# sequence# bytes(m) members arc status
---------- ---------- ---------- ---------- --- ----------------
1 214 100 2 yes inactive
3)删除group 1
sys@test15>alter database drop logfile group 1;
database altered.
这样,我们就完成了用更大的group 4取代原有的group 1,至于group 2, group 3以此类推。
最后,,还要记得到操作系统上把日志文件删除。
推荐阅读:
oracle 监听日志文件过大,导致监听无法启动
oracle当前联机日志组损坏的处理
oracle日志挖掘
oracle 联机重做日志文件(online redo log file) 详述
oracle重做日志文件版本不一致问题处理
