昨天在往oracle中导入一个10G的dmp文件时,感觉速度非常慢,今天生成了awr报告想分析一下问题;报告给出的负载情况已经超过了100%,我估计是产生过多的等待时间
Top 5 Timed Foreground Events中,排在最前面的是wait for a undo record,又翻看了几天前的报告,当时的最前面的等待时间是log file switch (checkpoint incomplete)
不知道是否可以理解为log file switch (checkpoint incomplete)是在负载较轻的情况下以为日志组过小造成的
如果负载较重,产生的等待事件就成了wait for a undo record
先尝试修改一下日志组大小
查看一下日志文件的大小和当前使用的日志文件
select * from v$log
日志组大小为50M,对于一般的学习环境还可以,但是如果是imp大量数据的时候,这个大小恐怕就有点小了吧
查看日志文件的名称的存放位置
select * from v$logfile
增加新的日志文件
alter database add logfile group 4 'E:\ORACLE\ORCL\REDO04.LOG' size 512M
alter database add logfile group 5 'E:\ORACLE\ORCL\REDO05.LOG' size 512M
alter database add logfile group 6 'E:\ORACLE\ORCL\REDO06.LOG' size 512M
手动切换当时使用的日志组
alter system switch logfile
删除原来的日志文件
alter database drop logfile group 1
因为这个时候数据库处于空闲状态,没有事务发生,也没有数据产生,dbwr是没有数据写回到库中的,所以日志组一直处于active的状态
如果原来的日志文件一直处于active状态的话,需要手动生成检查点来触发
alter system checkpoint
在创建同名的日志组的时候,需要将操作系统上存在的原来的文件手动删除掉才能创建,否则会报错
修改后,再次导入,时间缩短到原来的50%左右
现在排在等待时间最前面的是SQL*Net more data from client
TOP 5.jpg
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28803801/viewspace-768721/
,如需转载,请注明出处,否则将追究法律责任。