RT!
这两天突然发现,数据库的空间急速增长,昨天才腾出来8G空间,今天一天就满了,
个人估计跟做debug有关!但是不知道怎么解决。请教各位达人:
如何才能让数据库占的空间变小?

解决方案 »

  1.   

    是undo,temp还是system表空间增长过快??
      

  2.   

    最好看看哪个表空间增加的比较快,再看看Log
      

  3.   

    你得查一下到底是执行什么应用出现的问题,另外是哪个表空间,temp?
    如果是temp,那肯定是因为执行了大排序引起,最好的方法就是优化SQL
      

  4.   


      Oracle9i为我们提供了一个全局的临时表空间。有的时候我们会发现在做了大量的排序操作后,temp表空间并没有去释放,而且在更大的程度上面占用了我们的磁盘空间,其实我们可以通过重建或者切换的手段来使我们的temp表空间得到重生。 
      首先我们可以先看一下,当前用户所属的临时表空间有那些        SQL> select username ,temporary_tablespace from dba_users; 
      USERNAME TEMPORARY_TABLESPACE 
      ------------------------------ ------------------------------ 
      SYS TEMP1 
      SYSTEM TEMP1 
      DBSNMP TEMP1 
      HUJINPEI TEMP1 
      ALAN1 TEMP1 
      PERFUSER TEMP1 
      ALAN2 TEMP1 
      MYUSER TEMP1 
      OUTLN TEMP1 
      WMSYS TEMP1   已选择10行。  查看当前有那些临时文件。        SQL> select name from v$tempfile; 
      NAME 
      -------------------------------------------------------------------------------- 
      D:\ORACLE\ORADATA\ICMNLSDB\TEMP1_01.DBF 
      D:\ORACLE\ORADATA\ICMNLSDB\TEMP1_02.DBF   为了切换这个临时文件,我们可以重新建立一个临时表空间        SQL> create temporary tablespace temp 
      2 tempfile 'D:\ORACLE\ORADATA\ICMNLSDB\TEMP01.DBF' size 10M ;   表空间已创建。       SQL> alter tablespace temp add tempfile 'D:\ORACLE\ORADATA\ICMNLSDB\TEMP02.DBF' size 10M;   表空间已更改。共2页。 1 2 :  这个时候我们就可以将刚刚建好的TEMP表空间设置为我们数据库默认的临时表空间:      SQL> alter database default temporary tablespace temp;   数据库已更改。        SQL> select username,temporary_tablespace from dba_users; 
      USERNAME TEMPORARY_TABLESPACE 
      ------------------------------ --------------------------- 
      SYS TEMP 
      SYSTEM TEMP 
      DBSNMP TEMP 
      HUJINPEI TEMP 
      ALAN1 TEMP 
      PERFUSER TEMP 
      ALAN2 TEMP 
      MYUSER TEMP 
      OUTLN TEMP 
      WMSYS TEMP   已选择10行。  当然我们还可以选择DROP掉以前旧的TEMP1的表空间:   SQL> drop tablespace temp1 including contents ;   表空间已丢弃。
    解决!
      

  5.   


    temp01.DBF增大,怀疑是debug有关。我debug的时候,开始了好多的事务。
      

  6.   

    数据增长这么快的可能性不大,肯定是temp表空间,清理掉就可以了
      

  7.   

    楼主首先要确定是什么表空间突然如此增长如果是temp可以将其大小固定。。最好是先优化有问题的sql语句。做个statpack...
      

  8.   

    固定后,就会发生temp空间不够的错误。归根结底,还是sql的问题,同样的SQL放到另一个数据比较少的数据库中执行,就没有问题。
    SQL文中有一个and的连接条件,去掉后,就可以执行,加上就会有temp空间不足的问题。
    感谢各位热心的网友!