使用RESIZE方法解决临时表空间(TEMP)过大问题

SQL> select * from v$version where rownum<2;

BANNER
--------------------------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod

--1.查看临时表空间及大小
SQL> col FILE_NAME for a40
SQL> col TABLESPACE_NAME for a10
SQL> select tablespace_name,file_name,bytes/1024/1204 m  from dba_temp_files;

TABLESPACE FILE_NAME                                         M
---------- ---------------------------------------- ----------
TEMP       +DATA/racdb/tempfile/temp.263.771474633  25.5149502

--2.resize临时表空间文件
SQL> alter database tempfile '+DATA/racdb/tempfile/temp.263.771474633' resize 10m;

数据库已更改。

--3.确认文件修改成功
SQL> select tablespace_name,file_name,bytes/1024/1204 m  from dba_temp_files;

TABLESPACE FILE_NAME                                         M
---------- ---------------------------------------- ----------
TEMP       +DATA/racdb/tempfile/temp.263.771474633  8.50498339

--4.查看系统文件大小,已经修改成功
+ASM1@rac1 /home/oracle$ export ORACLE_SID=+ASM1
+ASM1@rac1 /home/oracle$ asmcmd
ASMCMD> ls -ls +DATA/racdb/tempfile/temp.263.771474633
Type      Redund  Striped  Time             Sys  Block_Size  Blocks     Bytes     Space  Name
TEMPFILE  UNPROT  COARSE   SEP 12 22:00:00  Y          8192    1281  10493952  11534336  temp.263.771474633

如果要增大临时表空间文件的大小,也可以使用该命令:
alter database tempfile '+DATA/racdb/tempfile/temp.263.771474633' resize 50m;