临时表空间占用大量空间(新建)
因为创建索引,原TEMP表空间空间不够,临时增加4个数据文件。导致temp占用太多的磁盘空间。因此新建TEMP2表空间,删除原先TEMP表空间。
查看temp空间信息:
Select * from dba_temp_files;
新建表空间:
CREATE TEMPORARY TABLESPACE temp2 TEMPFILE '/fkdata1/yxfk/temp201.dbf' size 1g autoextend on;
修改数据库默认表空间:
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp2;
修改用户默认表空间:
select 'alter user '||username||' TEMPORARY TABLESPACE TEMP2;' from dba_users where TEMPORARY_TABLESPACE='TEMP'
删除temp表空间
drop tablespace TEMP including contents and datafiles;
删除过程中,长时间未响应,等待事件enq:ts-connection,源头阻塞进程为smon。
select * from v$sort_usage where tablespace_name=’TEMP’;
使用sql查询还有哪些会话正在使用TEMP表空间
Kill相关会话。
操作系统看看磁盘
df -h
如果磁盘空间未减少,查看还在占用temp文件的进程。
lsof -n|grep temp
得到相关的pid
ps -ef|grep pid
查看进程,判断是否可kill.
Kill后将释放磁盘空间。