oracle处理temp表空间爆长的问题(一)

2014-11-24 16:14:06 · 作者: · 浏览: 1
oracle处理temp表空间爆长的问题
首先看temp ts,以下操作会使用temp表空间:
- build index.
- ORDER BY or GROUP BY
- DISTINCT.
- UNION & INTERSECT & MINUS
- Sort-Merge joins.
- Analyze
正常来说,在完成Select语句、create index等一些使用TEMP表空间的排序操作后,Oracle是会自动释放掉临时段a的。
但有些有侯我们则会遇到临时段没有被释放,TEMP表空间几乎满的状况,甚至是我们重启了 数据库仍没有解决问题
在v$sort_segment字典中,我们可能看到temp的详细的使用情况,
SQL> desc v$sort_segment
名称 是否为空 类型
-------------------------------------- --------------- -------- ------------
TABLESPACE_NAME VARCHAR2(31)
SEGMENT_FILE NUMBER
SEGMENT_BLOCK NUMBER
EXTENT_SIZE NUMBER
CURRENT_USERS NUMBER
TOTAL_EXTENTS NUMBER
TOTAL_BLOCKS NUMBER
USED_EXTENTS NUMBER
USED_BLOCKS NUMBER
FREE_EXTENTS NUMBER
FREE_BLOCKS NUMBER
ADDED_EXTENTS NUMBER
EXTENT_HITS NUMBER
FREED_EXTENTS NUMBER
FREE_REQUESTS NUMBER
MAX_SIZE NUMBER
MAX_BLOCKS NUMBER
MAX_USED_SIZE NUMBER
MAX_USED_BLOCKS NUMBER
MAX_SORT_SIZE NUMBER
MAX_SORT_BLOCKS NUMBER
RELATIVE_FNO NUMBER
而v$sort_usage将会提供目前操作的会话.
SQL> desc v$sort_usage;
名称 是否为空 类型
----------------------------------------------------- -------- -------------
USERNAME VARCHAR2(30)
USER VARCHAR2(30)
SESSION_ADDR RAW(4)
SESSION_NUM NUMBER
SQLADDR RAW(4)
SQLHASH NUMBER
TABLESPACE VARCHAR2(31)
CONTENTS VARCHAR2(9)
SEGTYPE VARCHAR2(9)
SEGFILE# NUMBER
SEGBLK# NUMBER
EXTENTS NUMBER
BLOCKS NUMBER
SEGRFNO# NUMBER
sql>select tablespace_name,current_users,total_blocks,used_blocks,free_blocks from v$sort_segment;
TABLESPACE_NAME CURRENT_USERS TOTAL_BLOCKS USED_BLOCKS FREE_BLOCKS
------------------------------ ------------- ------------ ----------- -----------
TEMP 1 13696 13440 256
SQL> /
TABLESPACE_NAME CURRENT_USERS TOTAL_BLOCKS USED_BLOCKS FREE_BLOCKS
------------------------