应用系统不能运行,告警日志报告临时表空间不能扩展,估计是业务sql存在大量排序,只能增加临时表空间缓解这个问题。
另外还可能要清理临时段重整临时表空间释放空间:
查看一下认谁在用临时段:
SQL> SELECT /*+ rule */ se.username,se.sid,se.serial#,se.sql_address,se.machine,se.program,
su.tablespace,su.segtype, su.contents
FROM v$session se,v$sort_usage su
WHERE se.saddr=su.session_addr;
USERNAME SID SERIAL# SQL_ADDR MACHINE PROGRAM TABLESPACE SEGTYPE CONTENTS
-------- ---------- ---------- -------- ---------------- ---------------- ---------------- ---------
SYS 154 12 257A8240 WORKGROUP/LENOVO sqlplusw.exe TEMP SORT TEMPORARY
-94B4B86F
杀掉这个会话:
SQL> Alter system kill session '154,12';
回缩 TEMP表空间
确定TEMP表空间的ts#
SQL> select ts#, name FROM v$tablespace;
TS# NAME
---------- --------------------------------------------------
0 SYSTEM
1 UNDOTBS1
2 SYSAUX
4 USERS
6 EXAMPLE
7 DNA
8 INDEXA
9 STREAMS_TBS
10 TEST
3 TEMP
11 PREF
11 rows selected.
执行清理操作
SQL> alter session set events 'immediate trace name DROP_SEGMENTS level 4';
Session altered.
level 4 是ts#+1
回收临时表空间过度扩展占用的系统空间
SQL> select max(segblk#) from v$sort_usage;
MAX(SEGBLK#)
------------
91017
SQL> select 91017*8192/1024/1024 from dual;
91017*8192/1024/1024
--------------------
711.070313
SQL> select file#,ts#,name from v$tempfile;
FILE# TS# NAME
---------- ---------- --------------------------------------------------
1 3 D:/ORACLE/10.2/DB_1/ORADATA/ORCL/TEMP01.DBF
SQL> alter database tempfile 'D:/ORACLE/10.2/DB_1/ORADATA/ORCL/TEMP01.DBF' resize 700m;
Database altered.
现在查看系统空间,空间已经被回收。