臨時表空間不足問題

2021-08-18 04:16:36 字數 1425 閱讀 5606

今晚開發臨時拉我去定位乙個資料庫問題,是臨時表空間不足的問題,主要是他們的sql存在clob大字段排序把臨時表空間佔滿了且不釋放。

這種問題解決的最好辦法就是優化sql,能把臨時表空間耗盡的sql明顯是存在很大的問題的。但目前臨時表空間不足已經影響到其他應用,所以恢復臨時表空間是當務之急。

治標不治本的辦法是增大臨時表空間:

alter tablespace temp add tempfile '/data01/oracle/oradata/temp02.dbf' size 10g autoextend on next 200m;

但很快臨時表空間又佔滿了。 

恢復的辦法最好是重啟資料庫,讓臨時表空間釋放。殺死正在執行的會話是不會釋放臨時表空間的。要查到具體在使用臨時表空間的會話,可以通過檢視v$sort_usage查出會話id,然後alter system kill session 

之後接合臨時表空間碎片alter tablespace temp coalesce;

或者用下面的方法清理表空間:

sql>select ts#, name from sys.ts$ ; 

sql>alter session set events 'immediate trace name drop_segments level ts#+1' ; 

檢視表空間的使用情況:

select upper(f.tablespace_name) "表空間名",

d.tot_grootte_mb "表空間大小(m)",

d.tot_grootte_mb - f.total_bytes "已使用空間(m)",

to_char(round((d.tot_grootte_mb - f.total_bytes) / d.tot_grootte_mb * 100,

2),'990.99') "使用比",

f.total_bytes "空閒空間(m)",

f.max_bytes "最大塊(m)"

from (select tablespace_name,

round(sum(bytes) / (1024 * 1024), 2) total_bytes,

round(max(bytes) / (1024 * 1024), 2) max_bytes

from sys.dba_free_space

group by tablespace_name) f,

(select dd.tablespace_name,

round(sum(dd.bytes) / (1024 * 1024), 2) tot_grootte_mb

from sys.dba_data_files dd

group by dd.tablespace_name) d

where d.tablespace_name = f.tablespace_name

order by 4 desc

temp表空間不足 oracle之臨時表空間組

在乙個臨時表空間 組中,使用者可以定義很多臨時表 空間。乙個臨時表空間組包含至少乙個臨時表空間,但是沒有包含最大個臨時表空間個數。注意,臨時表空間組的名子和臨時表空間的名字必須不相同,不然會出現錯誤。任何臨時表空間都可以 在乙個臨時 表空間中新增 刪除甚至 移動到其他臨時表空間組中。臨時表空間的好處...

swap空間不足 臨時掛載

swap空間不足 臨時掛載 dd if dev zero of tmp swapfree bs 32k count 65515 bs乘以coumt k 換算為兆 mkswap f tmp swapfree 表示格式化檔案 swapon tmp swapfree 臨時掛載 1 自動掛載 vim etc...

臨時表空間不足居然報IO錯誤。

insert 時 import 時 檢視alert log orahome01 admin cnsrpt udump cnsrpt ora 13811.trc ora 01114 io error writing block to file 1024 block 150017 ora 27063 n...