6.4.2 临时表空间组

在数据库中只有一个默认临时表空间,所有用户都是用这个临时表空间。如果在数据库中有大量的排序、创建索引,或者以并发方式向表中写入大量数据,这时可以创建多个临时表空间,为每个用户指定不同的临时表空间,每个用户都使用自己的临时表空间,这样做的好处是可以将磁盘I/O分布在不同的磁盘上,减少了磁盘I/O的冲突,从总体上可以提高数据库的性能。例如,下面的ALTER为用户指定临时表空间:


SQL>ALTER USER scott TEMPORARY TABLESPACE tts2;


由于不同用户对数据库的访问是不同的,因而对这些临时表空间的使用频率也是不同的。如果能使所有用户平均地使用数据库中的多个临时表空间,就能进一步提高数据库的性能。临时表空间组是解决这个问题的最佳途径。

临时表空间组是一组临时表空间的逻辑集合,当为用户指定临时表空间组时,用户可以平均地使用其中的所有临时表空间。临时表空间组不需要创建,只要在创建或修改临时表空间时为临时表空间组指定一个名称即可。例如:


SQL>ALTER TABLESPACE tts1 TABLESPACE GROUP group1;

SQL>ALTER TABLESPACE tts2 TABLESPACE GROUP group1;


然后将这个临时表空间组作为数据库的默认临时表空间,或者作为某个用户的默认临时表空间。例如:


SQL>ALTER DATABASE DEFAULT TEMPORARY TABLESPACE group1;


从临时表空间组中删除临时表空间的操作也很简单,只要为临时表空间指定一个空的临时表空间组即可。临时表空间虽然在逻辑上不再属于任何临时表空间组,但它在数据库中依然存在,还可以作为数据库或者某个用户的默认临时表空间。下面的语句用于将临时表空间TTS1从临时表空间组中删除。


SQL>ALTER TABLESPACE tts1 TABLESP ACE GROUP'';


临时表空间组的信息可以从数据字典视图dba_tablespace_groups中获得。例如,下面的语句用于查询一个临时表空间组中所包含的临时表空间:


SQL>SELECT tablespace_name FROM dba_tablespace_groups

WHERE GROUP_NAME='GROUP1';