佔用資源狂高的select min(bitmapped) from ts$ where dflmaxext =:1 and bitand(flags, 1024) = 1024

zhang41082發表於2019-04-16
在別人推薦下,系統使用了temporary tablespace group,幾天沒有看AWR,今天發現系統中如下SQL居然排在了TOP讀的首位,而且遠遠高於正常的TOP SQL的讀:
select min(bitmapped) from ts$ where dflmaxext =:1 and bitand(flags, 1024) = 1024[@more@]

GOOGLE了下,發現有人說這是個bug,登陸到METALINK上查詢,發現果然是個bug,描述如下:
Applies to:
Oracle Server - Enterprise Edition - Version: 10.1 to 10.2

This problem can occur on any platform.

Symptoms
After the introduction of temporary tablespace groups following query using a lot of CPU and executed many times
select min(bitmapped) from ts$ where dflmaxext =:1 and bitand(flags, 1024) = 1024.

Cause
Temp tablespace group uses a recursive query on ts$ to get the minimum extent size among its temp tablespaces.

Solution1> Use single temp tablespace as user's temp tablespace.
Solution2> Apply patch for the bug 5455880

使用這個咚咚的優點:
防止一個臨時表空間出現空間不足的問題。
同一個使用者同時連線多個session時可以使用不同的臨時表空間。
在並行操作中可以並行使用多個臨時表空間。

最後:
Metalink 245645.1,這裡有一篇介紹的文章

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25016/viewspace-991493/,如需轉載,請註明出處,否則將追究法律責任。

相關文章