今天发现一Oracle的SQL语句执行超过了2分钟,因为本人从事的项目数据量都不大,还没遇到过2分钟以上不出结果的时候。因此十分疑惑。执行了一段时间之后,发觉Oracle无法连接出现异常。此时登录Oracle安装服务器,sqlplus无法连接。查看硬盘空间,发现硬盘已满。。。。
经过仔细查看,发现Oracle临时表空间-temp表空间,居然已经有4.2G。于是怀疑之前执行的SQL是否有问题。说实话,这也够夸张的,一个SQL高出4G左右的数据?接下来,重启了Oracle,发现已经不能通过Oracle的SMON进行清理了。于是手工 清空Oracle临时表空间。
//启动数据库 startup //创建另一个临时表空间 create temporary tablespace TEMP2 TEMPFILE '/opt/ora10/oradata/XE/temp02.dbf' SIZE 10M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED; //改变缺省临时表空间为刚刚创建的新临时表空间temp2 alter database default temporary tablespace temp2; //删除原来临时表空间 drop tablespace temp including contents and datafiles; //重新创建临时表空间temp create temporary tablespace TEMP TEMPFILE '/opt/ora10/oradata/XE/temp01.dbf' SIZE 512M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED; //重置缺省临时表空间为新建的temp表空间 alter database default temporary tablespace temp; //删除中转用临时表空间 drop tablespace temp2 including contents and datafiles; //重新指定用户表空间为重建的临时表空间 alter user scott temporary tablespace temp;
另外当临时表空间数据量不是很大的时候可以使用eygle推荐的方法:
alter tablespace temp permanent; alter tablespace temp coalesce; alter tablespace temp temporary;
[ad#468-60]