Wnnn进程导致buffer busy wait

某日,在一个数据库中,发现大量buffer busy wait的进程,经检查,是监控等查询表空间使用率的进程处于buffer busy wait。而其blocking session wnnnn进程。

(1)看到监控程序被1013进程阻塞,blocking session是1013

看到这个等待的file id是5 block id是2

但是这个file id和block id上是没有对象的:

File id为5 的文件为:

注意这里已经是一个很大的文件了,有15T。

我们进一步发现blocking session 1013是ora_w005进程,该进程是有SMCO进程spawn出来的子进程,SMCO进程是11g的新进程,用于自动扩展或回收空间。

发现此进程当前还在不断的工作,不断的增加表空间:

因此在空间还没分配完成之前,监控程序查询dba free space会挂住,因此当期还无法统计该表空间的free的大小。

解决办法:
建议可以disable SMCO的自动扩展空间功能,不自动预先分配extent,恢复成和10g,9i一样的功能。

该语句可以不重启数据库动态操作。

另外,对于一个表空间15T的一个数据文件,是在太大,建议还是用一般的表空间,分散到多个数据文件上。之前在另外一个客户exadata项目上遇到过使用bigfile的temp tablespace的性能问题,打散后解决。

相关文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据