1、问题:
执行sql 报一下错误:
ORA-12801 ORA-01652
可以查到临时表空间不足
2、处理:
释放temp临时表空间
--查看临时被哪些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;
--查看谁在使用临时表空间
SELECT se.username,
sid,
serial#,
sql_address,
machine,
program,
tablespace,
segtype,
contents
FROM v$session se, v$sort_usage su
WHERE se.saddr = su.session_addr
order by 7, 1;
--然后查看用户的状态是active还是inactive,如果是inactive,直接kill即可
select * from v$session where sid=‘1042’;
alter system kill session ‘1042,48682’;
--查看临时表空间剩余
select tablespace_name,
tablespace_size / 1024 / 1024,
allocated_space / 1024 / 1024,
free_space / 1024 / 1024
from dba_temp_free_space;
--查看临时数据文件
select * from dba_temp_files
--查找用户表空间和临时表空间
select username,default_tablespace,temporary_tablespace from user_users;
--创建一个临时表空间
create temporary tablespace O_PRO_SB_TEMP1 tempfile '+DATA' size 20480M autoextend on;
--修改用户默认表空间
alter user O_PRO_SB temporary tablespace O_PRO_SB_TEMP1;
--确定旧的临时表空间没有在被使用,直接删除即可
drop tablespace O_PRO_SB_TEMP including contents and datafiles;
--修改数据库默认临时表空间
alter database default temporary tablespace temp1;
有问题感谢批评指正