天天看点

临时表空间组

临时表空间组概述  
在 oracle 10g 中,可以创建多个临时表空间,并把它们组成一个临时表空间组,这样应用数据用于排序时可以使用组里的多个临时表空间,一个临时表空间组至少有一个临时表空间,其最大个数没有限制,组的名字不能和其中某个表空间的名字相同。
 临时表空间组是在创建临时表空间时通过指定group字句创建的,如果删除组中的全部临时表空间,那么这个组也将消失。 
 我们将可以将一个表空间从一个组移动另一个组,或是从一个组中删除临时表空间,或是往组里添加新的表空间。
 使用临时表空间组,有如下的优点:    
 1.数据库层面可以同时指定多个临时表空间,避免当临时表空间不足时所引起的磁盘排序问题;    
 2.当一个用户同时有多个会话时,可以使得它们使用不同的临时表空间;
 3.并行操作中,不同的从属进程可以使用不同的临时表空间
使用临时表空间组 
 创建临时表空间组: 
 SQL> create temporary tablespace tempts1 tempfile
           2  '/home/oracle/temp1_02.dbf' size 2M tablespace group group1; 
           Tablespace created             
 SQL> create temporary tablespace tempts2 tempfile
           2  '/home/oracle/temp2_02.dbf' size 2M tablespace group group2;
          Tablespace created 
 查询临时表空间组 
 SQL> select * from dba_tablespace_groups;
 GROUP_NAME                     TABLESPACE_NAME
 ------------------------------ ------------------------------
 GROUP1                         TEMPTS1
 GROUP2                         TEMPTS2 
 将表空间从一个临时表空间组移动到另外一个临时表空间组:  
 SQL> alter tablespace tempts1 tablespace group GROUP2 ;
 Tablespace altered
 SQL> select * from dba_tablespace_groups;
 GROUP_NAME                     TABLESPACE_NAME
 ------------------------------ ------------------------------
 GROUP2                         TEMPTS1
 GROUP2                         TEMPTS2 
 把临时表空间组指定给用户 SQL> select username, temporary_tablespace from dba_users;
 SQL>  alter user scott temporary tablespace GROUP2;
 User altered 
 在数据库级设置临时表空间 SQL> select * from database_properties where property_name = 'DEFAULT_TEMP_TABLESPACE';
 SQL>  alter database <db_name> default temporary tablespace GROUP2;  
 Database altered.  
 删除临时表空间组 (删除组成临时表空间组的所有临时表空间)  
 SQL> drop tablespace tempts1 including contents and datafiles;
 Tablespace dropped
 SQL>  select * from dba_tablespace_groups;
 GROUP_NAME                     TABLESPACE_NAME
 ------------------------------ ------------------------------
 GROUP2                         TEMPTS2
 SQL> drop tablespace tempts2 including contents and datafiles;
 Tablespace dropped
 SQL>  select * from dba_tablespace_groups;
 GROUP_NAME                     TABLESPACE_NAME