临时表空间用于存放用户的临时数据,允许被覆盖,关闭数据库后,临时表空间的数据会自动删除。在专有连接模式下,一个用户进程对应的一个服务器进程。临时表空间在硬盘中,SQL查询取出来的数据放在在PGA(程序全局区)中也是服务器内存中。例如在用户执行SQL进行排序时会用临时表空间进行排序。例如SQL语句: select * from a.b order by a.col1 ,b.col2 desc.
Oracle 会把查询出来的数据再PGA中进行排序,如果数据太多,服务器内存不足以支持排序,会把查询出来的数据分成多份,每份放到临时表空间中进行排序。所以如果PGA太小或者数据太大,可能会导致与外盘的交互变多从而导致效率下降
临时表空间组是有一个或者多个临时表空间组成的。临时表空间不能显式的新建或者删除。
查询表空间select * from dba_tablespaces. 。 只要字段 CONTENTS的值是TEMPORARY 就是临时表空间
查询所有数据文件: select * from dba_data_files; 可以查询到表空间存放的位置,临时表除外。
查询临时表数据文件: select * from dba_temp_files;
查询临时表空间组:select * from dba_tablespace_groups;;
查询默认临时表空间: select * from database_properties where PROPERTY_NAME='DEFAULT_TEMP_TABLESPACE';
创建临时表空间:
create temporary tablespace temp2 tempfile
'D:\ORACLE\ORADATA\ORCL\TEMP2_01.dbf' size 10m autoextend on
tablespace group temp_grp;
表空间更改组: alter tablespace <tablename> tablespace group <groupname>.. --当 groupname :='' 时为移除组.
给临时表空间分配临时文件: alter tablespace <spacename> add tempfile '<路径/文件名.dbf>' size [100m] autoextend on ;
修改默认临时表空间:
alter database default temporary tablespace [groupname or spacename]