Benjamin Zhang

目前就职于中科院计算机网络信息中心,主要兴趣集中在数据库,操作系统,中间件。

【Oracle】Oracle的temp表空间满问题的解决思路

17 Jun 2019 » Oracle

Oracle的temp表空间满的解决步骤

1.查看当前数据库默认的temp表空间:

SQL>select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';

2.查看目前临时表空间的大小:

SQL>select file_name,tablespace_name,bytes/1024/1024 "MB",autoextensible from dba_temp_files

3.创建新的临时表空间:

SQL>create temporary tablespace temp02 tempfile '/u01/oracle/oradata/temp/temp02.dbf'
size 512M autoextend on maxsize 15G;

4.新建的temp表空间换成数据库的默认临时表空间

SQL> alter database default temporary tablespace temp02;

5.确认目前数据库的默认临时表空间

SQL>select * from database_properties
where property_name='DEFAULT_TEMP_TABLESPACE';

确认temp02是默认表空间。

后续操作【可选】

6.在删除temp临时表空间之前,先把运行在temp临时表空间的sql语句kill掉 。

SQL>Select se.username,se.sid,se.serial#,su.extents,su.blocks*to_number(rtrim(p.value))as Space,
tablespace,segtype,sql_text
from v$sort_usage su,v$parameter p,v$session se,v$sql s
where p.name='db_block_size' and su.session_addr=se.saddr and s.hash_value=su.sqlhash
and s.address=su.sqladdr
order by se.username,se.sid;

KILL语句,举例如下:

SQL>alter system kill session '624,17778'; (SID624serial#17778)

7.删除表空间

SQL> drop tablespace temp including contents and datafiles;