Cancel 刪除 正在使用的臨時表空間的操作 將導致異常
系統的預設臨時表空間是無法刪除的,但是使用者的預設臨時表空間是可刪除的
但是,如果刪除時,這個表空間還被其他會話使用,那麼刪除的語句就會在TS上等待
就算中斷了刪除的會話,後續也會導致一些其他SQL語句出現異常。
如下:explain plan竟然會去請求TS6的鎖定,而柱塞者是SMON
SMON以模式3持有這個臨時表空間上的鎖定是正常效能。
SQL> @we
SID NAME OSUSER PROGRAM EVENT P1P2 BLKING STATE SQL_ID OPCOD
----- -------- -------- --------------- ------------------------- -------------------- -------- ---------- --------------- -----
10 CTAIS2 oracle sqlplus@zhangqi enq: TS - contention 1414725638.7 1.66.V WAITING 9kmmjw9ab10za Expla
196 SYS oracle sqlplus@zhangqi SQL*Net message from clie 1650815232.1 WAITED SHO 4tzjv0x70g3hs Query
SQL> select sql_text from v$sql where sql_id='9kmmjw9ab10za';
SQL_TEXT
-------------------------------------------------
explain plan for select * from dual
SQL> select program from v$session where sid=66;
PROGRAM
---------------
oracle@zhangqiaoc (SMON)
SQL> select * from v$lock where type='TS';
ADDR KADDR SID TY ID1 ID2 LMODE REQUEST CTIME BLOCK
---------------- ---------------- ----- -- ---------- ---------- ---------- ---------- ---------- ----------
000000009F112450 000000009F1124A8 66 TS 8 1 3 0 11834 0
000000009F1137C0 000000009F113818 66 TS 7 1 3 0 6095 1
000000009D256378 000000009D256450 10 TS 7 1 0 6 93 0
SQL> select * from v$lock where sid=10;
ADDR KADDR SID TY ID1 ID2 LMODE REQUEST CTIME BLOCK
---------------- ---------------- ----- -- ---------- ---------- ---------- ---------- ---------- ----------
000000009F1130A8 000000009F113100 10 TO 5124 2 3 0 113 0
000000009F113188 000000009F1131E0 10 AE 100 0 4 0 461 0
000000009F113348 000000009F1133A0 10 TT 7 16 4 0 113 0
000000009F113440 000000009F113498 10 TO 5124 1 3 0 113 0
00002AE948861E98 00002AE948861EF8 10 TM 5124 0 3 0 113 0
000000009D256378 000000009D256450 10 TS 7 1 0 6 113 0
000000009D256378 000000009D2564B8 10 SS 7 1 6 0 113 0
並且,卡住的會話還在臨時表空間上一直持有SS6鎖定,可能影響後續的很多動作
解決的辦法是,切換該使用者的臨時表空間到另外一個臨時表空間
KILL已經被柱塞的會話
刪除前,一定要查詢v$sort_usage,確認已經沒有會話在使用準備刪除的臨時表空間
PS:20130904 測試發現
DROP TABLESPACE語句一旦發出,就算中斷也需要清理
後續新執行的會話,將發起清理(可能是他做,也可能是請求SMON做)
但是DROP TBS以前的佔用臨時表空間會話未退出,將阻塞這次清理,從而發生問題
操作LOB.XML的動作,都可能導致TEMP段被長期持有
解決的辦法,也可以是查詢v$sort_usage,把使用這個TEMP表空間的會話幹掉。然後等PMON回收掉這些會話的資源
但是,如果刪除時,這個表空間還被其他會話使用,那麼刪除的語句就會在TS上等待
就算中斷了刪除的會話,後續也會導致一些其他SQL語句出現異常。
如下:explain plan竟然會去請求TS6的鎖定,而柱塞者是SMON
SMON以模式3持有這個臨時表空間上的鎖定是正常效能。
SQL> @we
SID NAME OSUSER PROGRAM EVENT P1P2 BLKING STATE SQL_ID OPCOD
----- -------- -------- --------------- ------------------------- -------------------- -------- ---------- --------------- -----
10 CTAIS2 oracle sqlplus@zhangqi enq: TS - contention 1414725638.7 1.66.V WAITING 9kmmjw9ab10za Expla
196 SYS oracle sqlplus@zhangqi SQL*Net message from clie 1650815232.1 WAITED SHO 4tzjv0x70g3hs Query
SQL> select sql_text from v$sql where sql_id='9kmmjw9ab10za';
SQL_TEXT
-------------------------------------------------
explain plan for select * from dual
SQL> select program from v$session where sid=66;
PROGRAM
---------------
oracle@zhangqiaoc (SMON)
SQL> select * from v$lock where type='TS';
ADDR KADDR SID TY ID1 ID2 LMODE REQUEST CTIME BLOCK
---------------- ---------------- ----- -- ---------- ---------- ---------- ---------- ---------- ----------
000000009F112450 000000009F1124A8 66 TS 8 1 3 0 11834 0
000000009F1137C0 000000009F113818 66 TS 7 1 3 0 6095 1
000000009D256378 000000009D256450 10 TS 7 1 0 6 93 0
SQL> select * from v$lock where sid=10;
ADDR KADDR SID TY ID1 ID2 LMODE REQUEST CTIME BLOCK
---------------- ---------------- ----- -- ---------- ---------- ---------- ---------- ---------- ----------
000000009F1130A8 000000009F113100 10 TO 5124 2 3 0 113 0
000000009F113188 000000009F1131E0 10 AE 100 0 4 0 461 0
000000009F113348 000000009F1133A0 10 TT 7 16 4 0 113 0
000000009F113440 000000009F113498 10 TO 5124 1 3 0 113 0
00002AE948861E98 00002AE948861EF8 10 TM 5124 0 3 0 113 0
000000009D256378 000000009D256450 10 TS 7 1 0 6 113 0
000000009D256378 000000009D2564B8 10 SS 7 1 6 0 113 0
並且,卡住的會話還在臨時表空間上一直持有SS6鎖定,可能影響後續的很多動作
解決的辦法是,切換該使用者的臨時表空間到另外一個臨時表空間
KILL已經被柱塞的會話
刪除前,一定要查詢v$sort_usage,確認已經沒有會話在使用準備刪除的臨時表空間
PS:20130904 測試發現
DROP TABLESPACE語句一旦發出,就算中斷也需要清理
後續新執行的會話,將發起清理(可能是他做,也可能是請求SMON做)
但是DROP TBS以前的佔用臨時表空間會話未退出,將阻塞這次清理,從而發生問題
操作LOB.XML的動作,都可能導致TEMP段被長期持有
解決的辦法,也可以是查詢v$sort_usage,把使用這個TEMP表空間的會話幹掉。然後等PMON回收掉這些會話的資源
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8242091/viewspace-769625/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 臨時表空間的建立、刪除,設定預設臨時表空間
- 刪除臨時表空間hang處理
- oracle11g 查詢臨時表空間的使用率和正在使用臨時表空間的使用者Oracle
- 臨時表空間資料刪除問題
- oracle建立臨時表空間和資料表空間以及刪除Oracle
- oracle 臨時表空間基本常識和操作Oracle
- AWR不自動刪除導致SYSAUX表空間滿UX
- 臨時表空間的增刪改查
- 刪掉Oracle臨時表空間Oracle
- 臨時表空間操作總結
- oracle 臨時表空間的增刪改查Oracle
- ORACLE 臨時表空間的增刪改查:Oracle
- oracle臨時表空間的增刪改查Oracle
- oracle8i誤刪除臨時表空間後的恢復Oracle
- 【Oracle-資料庫維護】-刪除臨時表空間Oracle資料庫
- 臨時表空間的空間使用情況查詢
- oracle的臨時表空間Oracle
- Oracle 10G 中臨時表空間組的操作和使用Oracle 10g
- OGG相關的CPATURE導致SYSAUX表空間異常暴增處理UX
- 【儲存管理】建立臨時表空間組、建立臨時表空間組及使用
- 臨時表空間temporary tablespace相關操作
- 表空間常見的操作
- dbms_lob儲存過程導致臨時表空間100%儲存過程
- mysql臨時表空間不夠導致主從複製失敗MySql
- Oracle 臨時表空間的概念Oracle
- ORACLE臨時表空間的清理Oracle
- 刪除表空間和表空間包含的檔案
- 【臨時表空間組】臨時表空間組的建立、維護及應用
- 【Oracle故障處理】-Oracle9i臨時表空間刪除重建Oracle
- oracle 表空間,臨時表空間使用率查詢Oracle
- 刪除正在使用的檔案,空間不釋放的問題
- 【臨時表空間】11g中使用 SHRINK方法縮小臨時表空間和臨時檔案
- oracle 臨時表空間Oracle
- oracle臨時表空間Oracle
- Oracle臨時表空間檢視、新增臨時表空間資料檔案、修改預設臨時表空間 方法!Oracle
- 【臨時表空間】11g中使用 SHRINK方法縮小臨時表空間和臨時檔案(續)
- IZ0-053 Q699(臨時表空間臨時檔案被刪除恢復)
- oracle級聯刪除使用者,刪除表空間Oracle