问题如标题,我的情况是执行一个SQL查询,left join的东西比较多,结果时间稍微长一些,然后就报错了。
1.遇到这种问题,先检查数据库所在服务器的磁盘空间够不够,很有可能是这个原因。
2.如果是够的,那么有可能是表空间已经占满了。
现在用SQL查询一下:
select property_name,property_value from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';
SELECT D.TABLESPACE_NAME,SPACE "SUM_SPACE(M)",BLOCKS SUM_BLOCKS,
USED_SPACE "USED_SPACE(M)",ROUND(NVL(USED_SPACE,0)/SPACE*100,2) "USED_RATE(%)",
NVL(FREE_SPACE,0) "FREE_SPACE(M)"
FROM
(SELECT TABLESPACE_NAME,ROUND(SUM(BYTES)/(1024*1024),2) SPACE,SUM(BLOCKS) BLOCKS
FROM DBA_TEMP_FILES
GROUP BY TABLESPACE_NAME) D,
(SELECT TABLESPACE_NAME,ROUND(SUM(BYTES_USED)/(1024*1024),2) USED_SPACE,
ROUND(SUM(BYTES_FREE)/(1024*1024),2) FREE_SPACE
FROM V$TEMP_SPACE_HEADER
GROUP BY TABLESPACE_NAME) F
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+)
看下总共多少,用了多少,还剩多少,这是调之后的,之前已经占满了。
select * from dba_temp_files where tablespace_name='TEMP'; 看下文件名
最后执行(我是调到100M 具体情况看个人)
ALTER DATABASE TEMPFILE '/data/oracle/oradata/orcl11g/temp01.dbf' RESIZE 100M;