oracle处理temp表空间爆长的问题
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 &nbs