临时表空间
临时表空间:用来存放用户的临时数据,临时数据在需要时被覆盖,关闭数据库后自动删除,其中不能存放永久性数据。
用户进程和服务器进程是一对一的叫做专用连接。
任何一个用户连到oracle数据库,oracle都会开一个服务进程和其一一对应。

select * from a order by a.xxx;
非常多的数据进行排序的时候会占用PGA(内存)
列如:
用户对很多数据行进行排序时,排序在PGA中进行。但如果排序的数据过多,导致内存不足时,oracle会把会排序的数据分成多份,每次只取一份放到PGA中进行排序,其他的部分都放到临时表空间(硬盘上)中,同时再从临时表空间(硬盘上)中取一份没有排序的数据到PGA中进行排序,直到所有数据排序完成。
这种情况一旦发生系统性能降低很快!
临时表空间和临时表空间组
临时表空间组是一组由临时表空间组成的组,临时表空间组和临时表空间不能同名。
临时表空间不能显式的创建和删除;当把第一个临时表空间分配给某个临时表空间组时。
会自动创建这个临时表空间组,将临时表空间组的最后一个临时表删除时,会自动删除临时表空间组。
#查看系统表空间
select * from v$tablespace;

#查看系统表空间(详细)
select * from dba_tablespaces;
太长了就不截了
重点关注这里:
CONTENTS:TEMPORARY(临时表空间)
#查看数据文件
select * from dba_data_files;
为什么该查询下没有临时表空间?
#临时表空间是放到了其他地方
#查看临时文件信息
select * from dba_temp_files;
select * from v$tempfile;

#查看临时表空间组的信息
select * from dba_tablespace_groups;
SQL> select * from dba_tablespace_groups;
GROUP_NAME TABLESPACE_NAME
------------------------------ ------------------------------
查看默认的临时表空间
select *
from database_properties
where property_name= 'DEFAULT_TEMP_TABLESPACE';

创建临时表空间
创建临时表空间,不属于组:
create temporary tablespace temp2 tempfile
'G:\software\oracle\oradata\orcl\temp2a.dbf' size 10m autoextend on;

创建临时表空间,属于组temp_grp:
create temporary tablespace temp3 tempfile
'G:\software\oracle\oradata\orcl\temp3a.dbf' size 10m autoextend on
tablespace group temp_grp;

把temp2加入到temp-grp组中去:
alter tablespace temp2 tablespace group temp_grep;

把temp2移除temp-grp组:
alter tablespace temp2 tablespace group '';

给临时表空间添加一个临时文件:
select * from dba_temp_files;
SQL> select * from dba_temp_files;
#只有一个文件
FILE_NAME:G:\SOFTWARE\ORACLE\ORADATA\ORCL\TEMP2A.DBF
#添加一个临时文件
alter tablespace temp2 add tempfile 'G:\SOFTWARE\ORACLE\ORADATA\ORCL\TEMP2B.DBF' size 10m autoextend on;
#查看临时文件
FILE_NAME
G:\SOFTWARE\ORACLE\ORADATA\ORCL\TEMP2A.DBF
G:\SOFTWARE\ORACLE\ORADATA\ORCL\TEMP2B.DBF
修改系统默认临时表空间、
修改系统默认的临时表空间为一个组:
一个组可以包含一个或者多个临时表空间。
alter database default temporary tablespace temp_grp;
select *
from database_properties
where property_name= 'DEFAULT_TEMP_TABLESPACE';

修改系统默认的临时表空间为一个临时表空间:
alter database default temporary tablespace temp2;
select *
from database_properties
where property_name= 'DEFAULT_TEMP_TABLESPACE';




















