oracle临时表空间组

Oracle临时表空间章节,我们了解到临时表空间主要存储数据库进行数据操作时的中间临时数据的存储,实际应用当中,经常多用户进行大数据量关联查询时或排序查询时,我们的临时表空间经常会不够用,导致查询中断。

Oracle10g之前,我们只能通过扩充临时表空间,因为,Oracle10g之前每个用户只能指定一个临时表空间。但是在Oracle11g中Oracle数据提供了Oracle临时表空间组的概念。应许把多个临时表空间组成一个组,然后把用户指定到这个临时表空间组,从而达到一个用户可以同时使用多个临时表空间的目的。


Oracle临时表空间组中至少得有一个临时表空间,并且同组下的表空间不能有重名。Oracle临时表空间组不用显式的创建,在创建临时表空间的时候为他指定一下临时表空间组即可,实际上创建临时表空间组就是为表空间设定组。创建的方式有如下两种:

1、创建临时表空间时指定临时表空间组:这种创建的方式和创建表空间的语法很相似,语法如下:

create temporary  tablespace tempname
tempfile 'filename'
size m
tablespace group groupname;

下面,我们就在创建临时表空间temp2的同时,为它指定一个临时表空间组tempgroup。代码如下:

create temporary  tablespace temp2
tempfile 'E:\APP\ADMIN\ORADATA\ORCL\temp2.DBF'
size 50m
tablespace group tempgroup;

然后,我们通过数据字典dba_tablespace_groups临时表空间组的创建情况:

oracle临时表空间组

2、把原有的临时表空间转移到创建好的临时表空间组当中,下面把临时表空间temp1转移到tempgroup组中,代码如下:

alter tablespace temp1
tablespace group tempgroup;

然后,我们通过数据字典dba_tablespace_groups查询下临时表空间组的创建情况:

oracle临时表空间组

创建好临时表空间组,可以把数据库的默认临时表空间设置为表空间组,也可以把对应的用户的临时表空间替换成临时表空间组,从而达到优化临时表空间的目的,代码如下:

--修改数据库默认临时表空间
alter database default temporary tablespace tempgroup;
--修改用户默认临时表空间
alter user student temporary tablespace tempgroup;
oracle临时表空间组

如图所示:已经用户student的临时表空间指向了tempgroup临时表空间组。