今晚開發臨時拉我去定位乙個資料庫問題,是臨時表空間不足的問題,主要是他們的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...