Oracle9i臨時表空間的問題

2021-04-02 03:03:20 字數 1639 閱讀 5644

正常來說,在完成select語句、create index等一些使用temp表空間的排序操作後,oracle是會自動釋放掉臨時段a的。但有些有侯我們則會遇到臨時段沒有被釋放,temp表空間幾乎滿的狀況,甚至是我們重啟了資料庫仍沒有解決問題。這個問題在論壇中也常被網友問到,下面我總結一下,給出幾種處理方法。

法一、重啟庫

庫重啟時,**on程序會完成臨時段釋放,temp表空間的清理操作,不過很多的時侯我們的庫是不允許down的,所以這種方法缺少了一點的應用機會,不過這種方法還是很好用的。

法二、metalink給出的乙個方法

修改一下temp表空間的storage引數,讓**on程序觀注一下臨時段,從而達到清理和temp表空間的目的。

sql>alter tablespace temp increase 1;

sql>alter tablespace temp increase 0;

法三、我常用的乙個方法,具體內容如下:

1、 使用如下語句a檢視一下認誰在用臨時段

select username,

sid,

serial#,

sql_address,

machine,

program,

tablespace,

segtype,

contents

from v$session se,

v$sort_usage su

where se.saddr=su.session_addr

2、 那些正在使用臨時段的程序

sql>alter system kill session 'sid,serial#';

3、把temp表空間回縮一下

sql>alter tablespace temp coalesce;

法四、使用診斷事件的一種方法,也是被我認為是「殺手鐗」的一種方法

1、 確定temp表空間的ts#

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

ts# name

-----------------------

0 sysyem

1 rbs

2 users

3* temp

4 tools

5 indx

6 drsys

2、 執行清理操作

sql>alter session set events 'immediate trace name drop_segments level 4' ;

說明:

temp表空間的ts# 為 3*, so ts#+ 1= 4

其它:1、 出現如上問題的原因我認為可能是由於大的排序超出了temp表空間的空間允許範圍引起的。也可能包含著其它的異常的因素。

2、 觀注temp等這些空間的狀態是dba日常職責之一,我們可以通過toad、object browser等這些工具辦到,也可以用如下的語句:

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

oracle 9i 臨時表空間問題

摘自 正常來說,在完成select語句 create index等一些使用temp表空間的排序操作後,oracle是會自動釋放掉臨時段a的。但有些時候我們則會遇到臨時段沒有被釋放,temp表空間幾乎 滿的狀況,甚至是我們重啟了資料庫仍沒有解決問題。這個問題在論壇中也常被問到,下面我總結一下,給出幾種...

ORACLE 9I 重建 TEMP 表空間

oracle 9i 重建 temp 表空間 oracle 9i 重建 temp 表空間 1.startup 啟動資料庫 2.create temporary tablespace temp2 tempfile home2 oracle oradata sysmon temp02.dbf size 5...

Oracle9i 自己管理undo表空間

建立undo表空間 create undo tablespace undo tbs datafile size 500m 切換undo表空間 alter system set undo tablespace undo tbs scope both 求教 關於估算undo表空間 在資料上看到估算und...