描述:客戶環境某台資料庫臨時表空間異常增長(日期隨機),觀察下來可能是下列兩個oracle自身的定時job引起,
2014/01/08 凌晨4點左右
調查:我們發現客戶環境有一條sql語句的執行導致了臨時表空間的異常增長。
這條sql語句的意思貌似是查詢最近乙個星期的db time和db cpu。
麻煩跟開發確認一下這條語句的作用,是否可以進行優化。
後續調查:
檢視dba_registry中catproc狀態為invalid狀態。同時導致在dba_objects中看到收集統計資訊的dbms_stats也是invalid狀態。
手動執行@?/rdbms/admin/catproc.sql編譯一下這個元件(execute dbms_registry_sys.validate_catproc;
); 接著重新編譯一下dbms_stats這個包
再重新編譯上面三個wrh$的三個基表。
原因:問題已經查明,那條sql語句為sys使用者在晚上執行定時任務時所執行。
之所以占用較大的臨時表空間是因為該語句所涉及的三張表:
wrh$_stat_name
wrm$_snapshot
wrh$_sys_time_model
統計資訊不准,導致生成了較差的執行計畫。
手工收集統計資訊以後,該語句可以很快完成,而且占用臨時表空間也很小。
這兩個資料庫的catproc元件(oracle database packages and types)之前處於invalid狀態,造成dbms_stats儲存過程處於不可用狀態,因此無法自動收集統計資訊。目前dbms_stats已經處於可用狀態。
臨時表空間
臨時表空間 1.什麼是臨時表空間 在oracle資料庫中進行排序 分組彙總 索引等到作時,會產生很多的臨時資料。如有一張員工資訊表,資料庫中是安裝記錄建立的時間來儲存的。如果使用者查詢時,使用order by排序語句指定按員工編號來排序,那麼排序後產生的所有記錄就是臨時資料。對於這些臨時資料,ora...
Oracle臨時表空間
oracle臨時表空間主要是用來做查詢和存放一些快取的資料的,磁碟消耗的乙個主要原因是需要對查詢的結果進行排序,如果沒有猜錯的話,在磁碟空間的 記憶體 的分配上,oracle使用的是貪心演算法,如果上次磁碟空間消耗達到1gb,那麼臨時表空間就是1gb,如果還有增長,那麼依此類推,臨時表空間始終保持在...
informix 臨時表空間
informix臨時表空間 在 informix 資料庫中,我們經常會建立一些臨時表來處理應用中的臨時資訊。系統可以採用如下兩種方式建立臨時表 使用 select into temp 語句隱含地建立臨時表 使用 create temp table 語句顯示地建立臨時表 如果資料庫採用非日誌模式,db...