Oracle效能優化:收縮臨時表空間
http://www.51testing.com/html/09/n-808809.htmlhttp://www.51testing.com/html/09/n-808809.htmlhttp://www.51testing.com/html/09/n-808809.htmlhttp://www.51testing.com/html/09/n-808809.htmlhttp://www.51testing.com/html/09/n-808809.htmlhttp://www.51testing.com/html/09/n-808809.htmlhttp://www.51testing.com/html/09/n-808809.htmlhttp://www.51testing.com/html/09/n-808809.htmlhttp://www.51testing.com/html/09/n-808809.htmlhttp://www.51testing.com/html/09/n-808809.htmlhttp://www.51testing.com/html/09/n-808809.htmlhttp://www.51testing.com/html/09/n-808809.html當排序操作、重建索引等大型操作無法在記憶體中完成時,臨時表空間將為排序提供便利。一般情況下臨時表空間為多個使用者,多個會話所共
享。不能為會話分批空間配額。臨時表空間耗用過度且在不能自動擴充套件的情形下將收到“ORA-1652:unable to extend temp segment” 錯誤.下面
描述了過度擴充套件後如何釋放臨時表空間。
一、臨時表空間何時釋放
檢索資料的會話遊標關閉時,佔用的臨時空間即被釋放
資料庫關閉,重啟(一般情況),會話 log off
二、釋放過大的臨時表空間
BANNER
+==================================================================================+
SQL> col tbsname format a15
TBSNAME NAME MB STATUS SQL> @temp_usage2 -->此時temp已使用的為4MB,而GO_TEMP未使用
TABLESPACE MB_TOTAL MB_USED MB_FREE
2、觀察及分析臨時表空間的耗用情況
COUNT(*) SQL> select * from big_table order by 2,3,4,5,7,8 desc; -->對big_table 實施排序 SQL> alter index pk_stock_tbl_arc rebuild; -->開啟另一個session重建索引 SQL> @temp_sort_segment.sql -->可以看到此時temp表空間耗用達到234MB,go_temp的耗用達到375MB
Tablespace Segment Current Currently Pct. Extent Max Max Used Max Sort Free SQL> @temp_sort_users.sql -->獲得當前排序的會話
INST_ID SID_SERIAL Username OSUSER SPID MODULE PROGRAM MB_USED TABLESPACE STATEMENTS
1 1073,5166 GO_ADMIN oracle 2480 SQL*Plus oracle@SZD 375 GO_TEMP 1
RESIZE_COMMAND
-->實際上此時佔用32GB的臨時資料檔案已經縮小 Database altered.
-->為便於演示,此時假定TEMP為過大的臨時表空間且不能釋放 SQL> select count(*) from v$sort_usage where tablespace='TEMP'; -->當前有未釋放的臨時段
COUNT(*)
-->如果此時過大的臨時表空間為預設的臨時表空間,則必須將預設的臨時表空間設定為新的臨時表空間之後
PROPERTY_NAME PROPERTY_VALUE Database altered.
5、轉移使用者到中轉臨時表空間 6.等到過大臨時表空間上的沒有臨時段被使用,即已經全部釋放即可刪除過大的臨時表空間
SQL> show user; -->由於當前使用者為scott,所以臨時表空間未能釋放
SQL> conn / as sysdba -->切換到sysdba SQL> @temp_usage2 -->臨時段已經被釋放
TABLESPACE MB_TOTAL MB_USED MB_FREE
-->如果沒有釋放在可以kill session的情況下kill session.利用前面獲得的sid,serial#來執行(前提是允許該情況發生). 7.刪除過大的臨時表空間 SQL> alter tablespace temp tempfile offline; -->先將其離線 Tablespace altered. SQL> drop tablespace temp including contents and datafiles; -->刪除臨時表空間及相應的檔案 Tablespace dropped.
SQL> select s.name tbsname,t.name,(t.bytes/1024/1024) mb,t.status
-->也可以使用下面的命令來完成僅僅刪除單個檔案 7、根據需求可以建立原來的臨時表空間並將切換出去使用者切換到此臨時表空間 |
三、總結
1、關注alert_
2、如果基於空間壓力應該關閉臨時表空間的自動擴充套件。因此為臨時表空間設定合理的大小就成了一個問題。個人的解決方案是首先檢查ORA-1652,其次是觀察業務高峰期的峰值。如前面查詢中的欄位Max Size(: Maximum number of MB ever used)的值來預估。如果大師們有更好的建議不妨拍磚。
3、通過重啟資料庫,臨時表空間所耗用的大小有時候並不能縮小。
4、在Oracle 11g之前一般是通過建立中轉臨時表空間來達到縮小的目的。不是很完美,因為有些時候臨時段未釋放導致不能刪除臨時表空間及資料檔案。在11g可以直接使用下面的命令來完成:
alter tablespace temp shrink space;
alter tablespace temp shrink tempfile '
5、系統預設的臨時表空間不能被刪除,因此如果系統預設的臨時表空間過大刪除前應該新置一個系統預設的臨時表空間。
6、刪除過大臨時表空間前其上的使用者應該先將其設定到中轉臨時表空間,重建後再將其置回原狀態。
7、減少磁碟排序的首要任務調整SQL,如避免笛卡爾積,為表新增合理的索引等。其次要考慮PGA的值是否設定合理。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26613085/viewspace-1120414/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle之臨時表空間的收縮Oracle
- ORACLE 11g臨時表空間收縮的功能Oracle
- Oracle 11g 新特性 -- 臨時表空間收縮(轉)(Oracle
- Oracle表空間收縮方案Oracle
- 收縮臨時表空間收縮方法及ORA-03297錯誤處理
- oracle 臨時表空間Oracle
- oracle臨時表空間Oracle
- Oracle 臨時表空間概念Oracle
- oracle臨時表空間組Oracle
- oracle的臨時表空間Oracle
- Oracle Temp 臨時表空間Oracle
- oracle空間收縮Oracle
- 收縮表空間 for Oracle 10gOracle 10g
- 【臨時表空間】11g中使用 SHRINK方法縮小臨時表空間和臨時檔案
- 【Database】Oracle10g臨時表空間的管理和優化DatabaseOracle優化
- Oracle臨時表空間檢視、新增臨時表空間資料檔案、修改預設臨時表空間 方法!Oracle
- 【臨時表空間】11g中使用 SHRINK方法縮小臨時表空間和臨時檔案(續)
- oracle臨時表空間相關Oracle
- Oracle TEMP臨時表空間概念Oracle
- Oracle 臨時表空間的概念Oracle
- ORACLE臨時表空間總結Oracle
- oracle 重建臨時表空間 tempfileOracle
- 刪掉Oracle臨時表空間Oracle
- ORACLE臨時表空間的清理Oracle
- 【RESIZE】Oracle收縮表空間主要命令Oracle
- 分析表空間空閒率並收縮表空間
- mysql收縮共享表空間MySql
- oracle 表空間,臨時表空間使用率查詢Oracle
- Oracle Temp臨時表空間處理Oracle
- ORACLE預設的臨時表空間Oracle
- oracle的臨時表空間temporary tablespaceOracle
- oracle清理和重建臨時表空間Oracle
- Oracle修改預設表空間和預設臨時表空間Oracle
- DB2_收縮表空間DB2
- SQLServer效能優化之活用臨時表SQLServer優化
- Oracle基礎 02 臨時表空間 tempOracle
- oracle建立臨時表空間和資料表空間以及刪除Oracle
- 批量處理時臨時增加回滾表空間臨時表空間檔案