oracle 数据库空间急速增长 RT!这两天突然发现,数据库的空间急速增长,昨天才腾出来8G空间,今天一天就满了,个人估计跟做debug有关!但是不知道怎么解决。请教各位达人:如何才能让数据库占的空间变小? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 是undo,temp还是system表空间增长过快?? 最好看看哪个表空间增加的比较快,再看看Log 你得查一下到底是执行什么应用出现的问题,另外是哪个表空间,temp?如果是temp,那肯定是因为执行了大排序引起,最好的方法就是优化SQL 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 ; 表空间已丢弃。解决! temp01.DBF增大,怀疑是debug有关。我debug的时候,开始了好多的事务。 数据增长这么快的可能性不大,肯定是temp表空间,清理掉就可以了 楼主首先要确定是什么表空间突然如此增长如果是temp可以将其大小固定。。最好是先优化有问题的sql语句。做个statpack... 固定后,就会发生temp空间不够的错误。归根结底,还是sql的问题,同样的SQL放到另一个数据比较少的数据库中执行,就没有问题。SQL文中有一个and的连接条件,去掉后,就可以执行,加上就会有temp空间不足的问题。感谢各位热心的网友! ORACLE11g 我做了Create pfile from spfile;操作后,就无法找到SID了,我该如何做? 索引覆盖问题 请教一个sql,造成相同id下的name最长的数据出来 哪里可以下载Microsoft office visio 2003画图软件 window2000 profession 能安装oracle9i 企业版吗? 如何在查询多列的同时,汇总其中的一列或几列 如何从oracle中导出"序列"? ORA-03113通信同道的文件结束 汉字数字转换??? 咨询!MCSE,JAVA和Orcale 的认证考试! DELETE会造成I/O操作吗 索引也需要建同义词吗?
如果是temp,那肯定是因为执行了大排序引起,最好的方法就是优化SQL
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 ; 表空间已丢弃。
解决!
temp01.DBF增大,怀疑是debug有关。我debug的时候,开始了好多的事务。
SQL文中有一个and的连接条件,去掉后,就可以执行,加上就会有temp空间不足的问题。
感谢各位热心的网友!