Oracle 释放临时表空间常用方法
正常来说,在完成所送select语句、createindex等一些使用TEMP表空间的排序操作后,Oracle是会自动释放掉临时段的。但有些有侯我们则会遇到临时段没有被释放,TEMP表空间几乎满的状况,网上方法众多, 选取常用的两种方法。
方法一、重启库
库重启时,smon进程会完成临时段释放,TEMP表空间的清理操作,不过很多的时侯我们的库是不允许down的,所以这种方法缺少了一点的应用机会,不过这种方法还是很好用的。
方法二、shrink
从Oracle Database11g 版本1 开始,可使用ALTER TABLESPACE SHRINK SPACE 命令收缩临时表空间,也可以使用ALTER TABLESPACE SHRINKTEMPFILE 命令收缩临时文件。对于这两个命令,可以指定可选的KEEP 子句,该子句定义了表空间/临时文件可收缩到的下限。
SQL>alter tablespace temp shrink space;
清理临时表空间后
1、验证收缩结果
SQL>select file#,name,bytes/1024/1024 MB from v$tempfile;
2、临时表空间大小重置
ALTER DATABASE TEMPFILE '/u01/app/oracle/oradata/temp01.dbf' RESIZE 100M;
3、查询临时表空间的扩展属性
SQL>select * from dba_temp_files where tablespace_name='TEMP';
4、临时表空间设置为自动扩展并设置datafile的大小上限,最高不超过32G
SQL>alter database tempfile '/u01/app/oracle/oradata/temp01.dbf' autoextend on next 50m maxsize=10000M;
5、亦可以增加数据文件
SQL>alter tablespace temp add tempfile '/u01/app/oracle/oradata/temp02.dbf' size 500m autoextend on next 50m maxsize=10000M;