熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle臨時表空間過大問題解決

2013-11-13 15:28:27  來源: Oracle 

  查詢數據庫服務器時發現數據庫服務器磁盤使用空間達到了%分析總共的數據文件也不可能達到如此大經過查詢發現原來臨時表空間的使用情況達到了 G導致磁盤空間使用緊張搜索了相應的文檔與資料後查出臨時表空間主要使用在

   索引創建或重創建

   ORDER BY or GROUP BY (這個是罪魁禍首

   DISTINCT 操作

   UNION & INTERSECT & MINUS SortMerge joins Analyze 操作

   有些異常將會引起temp暴漲(這個也很有可能)

  下面是重新創建一個臨時表空間把原來的默認臨時表空間drop掉(包括裡面的臨時數據文件)再重新建立

  

  SQL> create temporary tablespace temp
tempfile &#;/home/oracle/oracle/product//oradata/hatest/temppdf&#; size M reuse
autoextend on next k maxsize unlimited;

  Tablespace created

  SQL> alter database default temporary tablespace temp;

  Database altered

  SQL> drop tablespace temp including contents and datafiles;

  Tablespace dropped
(注意由於臨時表空間的數據文件比較大所以這步可能會花費比較長的時間)
SQL> create temporary tablespace temp
tempfile &#;/home/oracle/oracle/product//oradata/hatest/temppdf&#; size M reuse
autoextend on next K maxsize unlimited;

  Tablespace created

  SQL> alter database default temporary tablespace temp;

  Database altered

  SQL> drop tablespace temp including contents and datafiles;

  Tablespace dropped

  SQL> exit

  以上的方法只是暫時釋放了臨時表空間的磁盤占用空間是治標但不是治本的方法真正的治本的方法是找出數據庫中消耗資源比較大的sql語句然後對其進行優化處理下面是查詢在sort排序區使用的執行耗時的SQL

   Select seusernamesesidsuextentssublocks*to_number(rtrim(pvalue))as Spacetablespacesegtypesql_text
from v$sort_usage suv$parameter pv$session sev$sql s
where pname=&#;db_block_size&#; and susession_addr=sesaddr and shash_value=susqlhash and saddress=susqladdr
order by seusernamesesid


From:http://tw.wingwit.com/Article/program/Oracle/201311/16773.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.