ITPub博客

首页 > 数据库 > Oracle > oracle临时表空间满的问题

oracle临时表空间满的问题

原创 Oracle 作者:baojian322 时间:2011-04-12 17:24:39 0 删除 编辑
Oracle 临时表空间慢是因为有大量的排序数据或其他临时数据占用造成的,也就是说如果一个有上千万天的记录你的临时空间又很小这个时候你只要select * 也许马上就就会满掉!解决此类问题的办法是为临时表空间增加临时文件,但是有时候你的临时表空间足够大但是仍然让频繁的查询占用满那怎么办?修改SQL语句呗!呵呵临时解决就是把目前的临时表空间替换掉![@more@]

1.查看临时文件的使用/剩余空间col tablespace_name format a10
select * from v$temp_space_header;

TABLESPACE FILE_ID BYTES_USED BLOCKS_USED BYTES_FREE BLOCKS_FREE RELATIVE_FNO
---------- ---------- ---------- ----------- ---------- ----------- ------------
TEMP 1 1048576 128 156237824 19072 1

2.查看当前用户所属的临时表空间 
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行。

3.查看当前有那些临时文件。 
SQL>
select name from v$tempfile;    NAME
   ----------------------------------------
   /opt/oracle/oradata/ictest/temp1_01.dbf
  

4.重新建立一个临时表空间:
SQL>
create temporary tablespace temp
  2
tempfile '/opt/oracle/oradata/ictest/temp01.dbf' size 1000M ;
临时表空间已创建  
SQL>
alter tablespace temp add tempfile '/opt/oracle/oradata/ictest/temp02.dbf' size 1000M;

5.将建好的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行。

6.DROP掉旧的TEMP1的表空间: 

SQL> drop tablespace temp1 including contents and datafiles;
表空间已丢弃。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25484232/viewspace-1048537/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-04-12

  • 博文量
    3
  • 访问量
    3050