其实这是从网上学来的,算不上很高深,怕自己忘记了,记下来。
为什么要修改oracle临时表空的大小呢?因为临时表空所在的文件系统没有空间了。本来设置的是2G的临时表空
针对这种情况,本来想用:ALTER DATABASE TEMPFILE '/ORADATA/TEMP01.DBF' RESIZE 1024M进行改变大小的。但在TOAD中看了一下Minimum Size,说最小也只能缩到2048M,也就是不能直接缩小了,上网查到一个曲线救国的方法:
1.在其它有空间的地方新建一个中转的临时表空
2.用ALTER DATABASE DEFAULT TEMPORARY TABLESPACE 语句把临时表空指向新的临时表空。
3.用DROP TABLESPACE把旧的临时表空删除
4.在原来的文件系统上新建一个小一点的临时表空
5.再用ALTER DATABASE DEFAULT TEMPORARY TABLESPACE把临时表空指向这个小一点的临时表空。
6..用DROP TABLESPACE把中转的临时表空删除。
实际方法如下:
1.新建一个用于中转的临时表空:
CREATE TEMPORARY TABLESPACE temp2 TEMPFILE
'/setup/temp02.dbf' SIZE 2048M AUTOEXTEND OFF
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;
2.把临时表空指向中转表空:
alter database default temporary tablespace temp2;
3.删除原来的临时表空:
drop tablespace temp including contents and datafiles;
4.在原来的文件系统新建一个小一点的临时表空
CREATE TEMPORARY TABLESPACE temp TEMPFILE
'/oradata/temp01.dbf' SIZE 1024M AUTOEXTEND OFF
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;
5.把临时表空再指向新建好的表空:
alter database default temporary tablespace temp;
6.删除用于中转的表空:
drop tablespace temp2 including contents and datafiles;
以上在oracle9i环境中通过。
如果想看看临时表空的表文件放在哪里,可以在Tablespace中看,也可以在sys用户的视图v_$tempfile(或者是v$tempfile)中看。