人的头脑太复杂,时间过得久,有时候连自己也被自己骗了,记下来才是最真实的......开源技术博客,记录开源技术应用的点点滴滴。 注册 | 登陆

Oracle 临时表空间的管理

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

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;
     表空间已丢弃。

« 上一篇 | 下一篇 »

Trackbacks

点击获得Trackback地址,Encode: UTF-8

发表评论

评论内容 (必填):