前不久,一同事说他朋友数据库特别慢,查看了一下等待事件:
set linesize 100
col event format a35
select event,sum(decode(wait_time,0,0,1)) prev, sum(decode(wait_time,0,1,0)) curr,count(*) from v$session_wait group by event order by 4;
有大量日志切换等待,通过下面的语句可以查看日志切换事件:
select event,total_waits,time_waited,average_wait from v$system_event where event like 'log file switch completion%';
咨询了一下,每天数据产生量特别大,但是日志组只有三个,而且每个日志组只有50M……刚开始试着增加了三组日志组,每组50M,第二天观察还是慢,有等待,于是
增加了日志大小,最后大小他们自己决定,问题解决。
下附增加日志大小方法:
通过下面的语句可以查看日志的使用状态:
select group#,status from v$log;
其中分3中状态:INACTIVE,ACTIVE,CURRENT,只能操作INACTIVE日志。
借花献佛,举例说明:具体操作视情况而定。
1、创建2个新的日志组
alter database add logfile group 4 ('D:\ORACLE\ORADATA\ORADB\REDO04_1.LOG') size 500m;
alter database add logfile group 5 ('D:\ORACLE\ORADATA\ORADB\REDO05_1.LOG') size 500m;
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 500M;
alter database add logfile group 2 ('D:\ORACLE\ORADATA\ORADB\REDO02_1.LOG') size 500M;
alter database add logfile group 3 ('D:\ORACLE\ORADATA\ORADB\REDO03_1.LOG') size 500M;
6、切换日志组
alter system switch logfile;
alter system switch logfile;
alter system switch logfile;
7、删除中间过渡用的日志组4、5(如果同时增加日志组数,此步忽略)
alter database drop logfile group 4;
alter database drop logfile group 5;
8、到操作系统下删除原日志组4、5中的文件(如果同时增加日志组数,此步忽略)
备份控制文件