国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

如何找出引起ORA-1652的SQL

2024-08-29 13:28:26
字體:
來源:轉載
供稿:網友

在alert文件中,我們可能會看到這樣的報錯信息: 

WedAug2017:16:372008
ORA-1652:unabletoextendtempsegmentby128intablespaceDBA_TEMP

要解決這個問題,我們首先要導致這個問題的SQL,可能方法有幾種:

(1)設置events

alter system set events '1652 trace name errorstack level 1';

這種方法有一定局限:

1)它不能獲取已發生的1652的錯誤信息,只能對以后出現1652錯誤時生成一個trace文件;

2)用events,不清楚會對數據庫有什么不好的影響。

(2)查詢V$SQL視圖:

如select * from v$sql order by direct_writes/executions desc;

這種方法的局限性是:

1)因為很難知道V$SQL視圖中的SQL執行時間,難以確認具體是那個SQL導致錯誤的

2)引起問題的SQL極有可能已經被age out了

(3)生成錯誤發生時的awr、statspack報表,從報表中的SQL ordered by Reads部分找出SQL

這種方法更不可靠,因為:

1) SQL ordered by Reads讀寫的不一定是臨時表空間

2) awr/statspack報表是根據物理讀的總量排序的,如果導致問題的SQL執行次數少,那也是不會出現在這些報表中的。

(4)查詢awr相關視圖

對于10G來說,這種方法是最可行、最準確的。

 SELECTDISTINCTTO_CHAR(SUBSTR(b.sql_text,1,4000))
  FROMsys.WRH$_SQLTEXTb
  WHEREb.sql_idIN
  (SELECTsql_id
  FROM
  (SELECTa.sql_id
  FROMsys.WRH$_SQLSTATa
  WHEREa.parsing_schema_nameNOTIN('SYS')
  ANDa.executions_total>0
  ANDa.direct_writes_total>0
  ANDa.SNAP_IDIN
  (SELECTSNAP_ID
  FROMsys.WRM$_SNAPSHOT
  WHEREto_date('2008:08:2017:20:08','yyyy:mm:ddhh24:mi:ss')BETWEENbegin_interval_timeANDend_interval_time
  )
  ORDERBYa.direct_writes_total/a.executions_totalDESC
  )
  WHERErownum<=10
  );

基本上,結果中的第一句只要不是insert /*+ append */之類的語句,那么它就極有可能是導致ORA-1652的SQL。

如果是9i,用statspack,也可以用類似的SQL從statspack視圖查到需要的結果

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 汉阴县| 尼木县| 苏尼特右旗| 五家渠市| 平南县| 维西| 象州县| 天峨县| 壶关县| 泸溪县| 英德市| 土默特左旗| 天水市| 弋阳县| 沅江市| 隆回县| 江阴市| 蒙自县| 昌乐县| 达拉特旗| 寿宁县| 叶城县| 德庆县| 新闻| 安庆市| 阿图什市| 长岭县| 泸溪县| 博爱县| 连平县| 宁河县| 常州市| 泽普县| 凌云县| 通化县| 皋兰县| 拉孜县| 昌黎县| 林西县| 神木县| 木里|