在Oracle中,經常使用的10046及10053診斷事件的區別是什麼?數據庫
最爲經常使用的診斷事件是10046和10053事件。10046事件是Oracle提供的內部事件,是對SQL_TRACE的加強。Oracle的10046事件,能夠跟蹤應用程序所執行的SQL語句,而且獲得其解析次數、執行次數、CPU使用時間等信息。這對DBA來分析、定位數據庫性能問題是很是有用的。ide
10046事件可分紅不一樣的級別(LEVEL),分別追蹤記錄不一樣程度的有用信息。對於這些不一樣的級別,應當注意的是向下兼容的,即高一級的TRACE信息包含低於此級的全部信息。性能
10046事件能夠設置如下級別:優化
① level 0:禁用SQL_TRACE,等價於SQL_TRACE=FALSEspa
② level 1:啓用標準的SQL_TRACE功能跟蹤SQL語句,包括解析、執行、提取、提交、回滾、響應時間、服務時間、處理的行數,物理讀和寫的數目、執行計劃以及其它一些額外信息,等價於SQL_TRACE=TRUEblog
③ level 4:Level 1 + 包括綁定變量(Bind Values)的詳細信息事件
④ level 8:Level 1 + 包括等待事件資源
⑤ level 12:包括綁定變量與等待事件,包含Level 1 + Level 4 + Level 8it
10053事件是最經常使用的Oracle優化器跟蹤Trace。10053事件解析優化器爲何選擇某個執行計劃但並不記錄這個執行計劃到底運行地如何。10046事件並不解釋優化器的工做,但它記錄了在SQL解析階段所遇到的等待事件和所消耗的CPU等資源,以及執行階段的各項指標。須要注意的是,若是一個SQL語句已經被解析過,那麼就不會生成10053的trace文件,但10046的trace文件能夠重複生成。class
簡而言之,10046事件記錄SQL如何運行,而10053記錄優化器爲何爲這個SQL選擇某個執行計劃。