ITPub博客

首页 > Linux操作系统 > Linux操作系统 > TEMPORARY表空间和文件(转)

TEMPORARY表空间和文件(转)

原创 Linux操作系统 作者:grjsj 时间:2008-12-18 15:02:58 0 删除 编辑

TEMPORARY表空间是用来排序操作的,比如你操作几个大表,ORACLE没有足够的内存(sort_area_size)来排序,那么 ORACLE就会分配TEMPORARY表空间来排序。一些涉及排序的操作有CREATE INDEX, ANALYZE, Select DISTINCT, ORDER BY, GROUP BY, UNION, INTERSECT, MINUS, Sort-Merge joins等。

 

DBA应该给每个用户都设置一个默认TEMPORARY TABLESPACE,以防止用SYSTEM表空间排序。TEMPORARY TABLESPACE不包括永久性表空间,因此不需要备份。

 

TEMPORARY FILE也和其他数据文件不同,ORACLE在建立TEMPORARY FILE的时候只是标记文件的头和尾,这就是为什么建立TEMPORARY FILE比数据文件快的原因。

 

和数据文件的区别1

STANDBY结构下甚至PERMANENTSTANDBY数据库可以有不同的TEMPFILERAC结构下也可以每个节点配置各自的TEMPFILE

 

和数据文件的区别2

一个DATA表空间包含多个DATA FILE的情况下,不能单独删除其中的一个DATA FILE。但TEMPFILE可以。

SQL> select file_name||' '||tablespace_name from dba_temp_files
  2  /

FILE_NAME||''||TABLESPACE_NAME
--------------------------------------------------------------------------------
D:\ORACLE\ORADATA\SVW\TEMP01.DBF TEMP

SQL> create temporary tablespace temptest tempfile 'D:\ORACLE\ORADATA\SVW\TEMPtest.dmp' size 10M
  2  /

Tablespace created.

 

  1* alter tablespace temptest add tempfile 'D:\ORACLE\ORADATA\SVW\TEMPTEST01.DMP' SIZE 10m
SQL> /

Tablespace altered.

SQL>  select file_name||' '||tablespace_name from dba_temp_files
  2  /

FILE_NAME||''||TABLESPACE_NAME
----------------------------------------------------------------
D:\ORACLE\ORADATA\SVW\TEMP01.DBF TEMP
D:\ORACLE\ORADATA\SVW\TEMPTEST.DMP TEMPTEST
D:\ORACLE\ORADATA\SVW\TEMPTEST01.DMP TEMPTEST

 

SQL> ALTER DATABASE TEMPFILE '/oradata/temp02.dbf' DROP INCLUDING DATAFILES;

SQL> ALTER DATABASE TEMPFILE 'D:\ORACLE\ORADATA\SVW\TEMPTEST01.DMP' DROP INCLUDING DATAFILES;

Database altered.

SQL> select file_name||' '||tablespace_name from dba_temp_files
  2  /

FILE_NAME||''||TABLESPACE_NAME
--------------------------------------------------------------------------------
D:\ORACLE\ORADATA\SVW\TEMP01.DBF TEMP
D:\ORACLE\ORADATA\SVW\TEMPTEST.DMP TEMPTEST

 

甚至你可以删除TEMPORARY TABLESPACE下的所有 TEMPFILE

SQL> ALTER DATABASE TEMPFILE 'D:\ORACLE\ORADATA\SVW\TEMPTEST.DMP' DROP INCLUDING DATAFILES;

Database altered.

SQL> select file_name||' '||tablespace_name from dba_temp_files
  2  /

FILE_NAME||''||TABLESPACE_NAME
--------------------------------------------------------------------------------
D:\ORACLE\ORADATA\SVW\TEMP01.DBF TEMP

再增加TEMPFILE  

SQL> alter tablespace temptest add tempfile 'D:\ORACLE\ORADATA\SVW\TEMPTEST.DMP' size 10M;

Tablespace altered.

 

各版本语句的比较

      CREATE TABLESPACE temp DATAFILE ...; -

Oracle 7.3 & 8.0 

      CREATE TABLESPACE temp DATAFILE ... TEMPORARY;

>Oracle 8i and above

      CREATE TEMPORARY TABLESPACE temp TEMPFILE ...;

 

注意,如果加UNIFORM. SIZE参数的话那么需要设置成SORT_AREA_SIZE 才能达到最高性能.

 

相关语句

CREATE USER scott DEFAULT TABLESPACE data TEMPORARY TABLESPACE temp;

ALTER USER scott TEMPORARY TABLESPACE temp

 

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp;

 

SELECT * FROM DATABASE_PROPERTIES where PROPERTY_NAME='DEFAULT_TEMP_TABLESPACE';

 

select TABLESPACE_NAME, BYTES_USED, BYTES_FREE from V$TEMP_SPACE_HEADER;

CREATE TEMPORARY TABLESPACE temp
      TEMPFILE '/oradata/mytemp_01.tmp' SIZE 20M
      EXTENT MANAGEMENT LOCAL UNIFORM. SIZE 16M;

 

相关表

V$TEMPFILE     

DBA_TEMP_FILES    

V$SORT_SEGMENT

V$SORT_USAGE

V$TEMP_SPACE_HEADER

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

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

注册时间:2008-12-18

  • 博文量
    21
  • 访问量
    22550