OEM模組審計查詢語句佔用較大資源

yangtingkun發表於2011-10-14

發現一個導致Oracle自己的低效SQL,在AWR報告中佔用較大的資源。

 

 

這個SQLElapsed TimeCPU TimeUser I/O Wait TimeBuffer GetsPhysical Reads都會出現,其SQL模組是Oracle Enterprise Manager.Metric Engine。顯然這是一個OEM自己的SQL,檢查完整SQL語句:

SELECT TO_CHAR(current_timestamp AT TIME ZONE 'GMT', 'YYYY-MM-DD HH24:MI:SS TZD') AS curr_timestamp, COUNT(username) AS failed_count FROM sys.dba_audit_session WHERE returncode != 0 AND TO_CHAR(timestamp, 'YYYY-MM-DD HH24:MI:SS') >= TO_CHAR(current_timestamp - TO_DSINTERVAL('0 0:30:00'), 'YYYY-MM-DD HH24:MI:SS')

這個檢查DBA_AUDIT_SESSIONSQL語句寫法很爛,以致於一開始我還不太相信是出自Oracle,不過Oracle Enterprise Manager.Metric EngineMODULE NAME已經說明了問題,Oracle居然自己違反對列進行操作以及不必要的轉換原則。

此外,這個SQL基本上沒有辦法使用索引,如果DBA_AUDIT_SESSION中記錄很多,那麼這個SQL會非常耗時,這就是不算是OEMbug,至少也是一種設計缺陷。

 

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

相關文章