有几个建议,但是要慎重考虑:
1、drop temp表空间及其数据文件并重新建立
2、用oem或命令行来shrink temp首先要保证在temp表空间你没有建立表或索引。

解决方案 »

  1.   

    先将temp表空间及其数据文件删除,然后CREATE TABLESPACE TEMP DATAFILE 'D:\Oracle\oradata\weldb\temp01.dbf' SIZE 200M 可以限制他的容量
      

  2.   

    temp表空间作为数据库缺省的临时表空间,是无法直接drop的。必须按如下步骤进行:1.先建立另外一个临时表空间
    2.修改数据库缺省的临时表空间
    3.drop temp表空间例子如下:
    SQL> drop tablespace temp;drop tablespace tempORA-12906: 不能删除默认的临时表空间SQL> create temporary tablespace temp1 tempfile '%oracle_home%\ora902\temp1_0.dbf' size 10m;Tablespace created
    SQL> alter tablespace temp1 add tempfile '%oracle_home%\ora902\temp1_1.dbf' size 10m;Tablespace alteredSQL> alter database default temporary tablespace temp1;Database alteredSQL> drop tablespace temp;Tablespace dropped
      

  3.   

    楼上面的是一种办法:
    还可以,减小空间的大小sql>alter database datafile 'D:\Oracle\oradata\weldb\TEMP01.DBF' resize 500m;
    这种方法比较简便。
      

  4.   

    to lgqducky:临时表空间用的数据文件是tempfile(不同于正常的datafile),对tempfile进行resize是无效的。logfile也是如此。或者你试一试看看是否能成功。
      

  5.   

    改成alter database tempfile 'D:\Oracle\oradata\weldb\TEMP01.DBF' resize 500m 应该可以
      

  6.   

    To drabit(square)
    我日,我太爱你了。
    困扰我多日的问题竟然解决了。多谢,牛人!
      

  7.   

    To drabit(square)
    方法我已经试验过了,可以改变临时表空间的大小。
    可是这样是不是会改变数据库里面的已有数据呢?好像数据库里的有些表数据丢失了。
      

  8.   

    不会,因为临时表空间是temporary类型,不可能拥有永久段(表、索引等),但是临时表的数据会丢失(不重要吧?)。在有,drop/resize临时表空间的时候,如果表空间拥有永久段,它会提示你要用including contents方式drop.