共计 2848 个字符,预计需要花费 8 分钟才能阅读完成。
表空间组能让用户使用来自多个临时表空间中的临时空间。使用表空间组,而不是单个临时表空间,可以减少由于一个临时表空间没有足够的空间来处理排序而引发的问题。表空间组能让单个并行操作的并行执行服务器进程使用多个临时表空间。表空间组有以下特性:
. 它包含至少一个临时表空间。对于一个表空间组可以包含的临时表空间数量没有限制。
. 它共享命名空间,所以表空间组的名字不能与任何表空间名相同。
. 当对数据库或用户指定缺省临时表空间时可以使用表空间组来代替。
我们不能显示创建一个表空间组,但可以在创建第一临时表空间时隐式来创建表空间组。当表空间组中的最后一个临时表空间被删除后,表空间组也会被删除。查询 dba_tablespace_groups 可以查看相关表空间组与相关的临时表空间。
创建表空间组
当执行 create temporary tablespace 或 alter tablespace 语句时通过指定 tablespace group 子句来隐式创建表空间组并且所指定的表空间组要在当前数据库中并不存在。例如,如果表空间组 group1,group2 不存在,那么下面的语句将会创建这两个表空间组,并且每个表空间组只有一个临时表空间存在。
SQL> create temporary tablespace temp2 tempfile '+DATA/JY/4B2C6373AE2547CCE053AB828A0A7CA3/TEMPFILE/temp2.dbf' size 50M tablespace group group1;
Tablespace created.
SQL> alter tablespace temp tablespace group group2;
Tablespace altered.
SQL> select * from dba_tablespace_groups;
GROUP_NAME TABLESPACE_NAME
------------------------------ ------------------------------
GROUP2 TEMP
GROUP1 TEMP2
更改表空间组成员
可以向现有表空间组增加临时表空间,这可以通过执行包含有 tablespace group 子句的 create temporary tablespace 或 alter tablespace 语句来完成。
下面的语句将向现有表空间组 group1 中增加一个临时表空间 temp3,因些表空间组 group1 包含临时表空间 temp2 与 temp3。
SQL> create temporary tablespace temp3 tempfile '+DATA/JY/4B2C6373AE2547CCE053AB828A0A7CA3/TEMPFILE/temp3.dbf' size 50M tablespace group group1;
Tablespace created.
SQL> select * from dba_tablespace_groups;
GROUP_NAME TABLESPACE_NAME
------------------------------ ------------------------------
GROUP2 TEMP
GROUP1 TEMP2
GROUP1 TEMP3
下面的语句将向现有表空间组 group2 中增加一个临时表空间 temp2,但因为临时表空间 temp2 已经存在,语句只是将临时表空间 temp2 从表空间组 group1 移到表空间组 group2 中。
SQL> select * from dba_tablespace_groups;
GROUP_NAME TABLESPACE_NAME
------------------------------ ------------------------------
GROUP2 TEMP
GROUP2 TEMP2
GROUP1 TEMP3
现在表空间组 group2 包含临时表空间 temp,temp2,表空间组 group1 只包含临时表空间 temp3。
下面的语句将从表空间组 group1 中删除临时表空间 temp3
SQL> alter tablespace temp3 tablespace group '';
Tablespace altered.
SQL> select * from dba_tablespace_groups;
GROUP_NAME TABLESPACE_NAME
------------------------------ ------------------------------
GROUP2 TEMP
GROUP2 TEMP2
临时表空间 temp3 不再属于任何表空间组。因此表空间组 group1 不包含任何临时表空间,因此隐式地删除了表空间组 group1。
指定表空间组作为数据库的缺省临时表空间
通过执行 alter database … default temporary tablespace 语句来指定一个表空间组作为数据库的临时表空间。
SQL> SELECT PROPERTY_NAME, PROPERTY_VALUE FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME='DEFAULT_TEMP_TABLESPACE';
PROPERTY_NAME PROPERTY_VALUE
-------------------------------------------------- --------------------------------------------------
DEFAULT_TEMP_TABLESPACE TEMP
SQL> alter database default temporary tablespace group2;
Database altered.
SQL> SELECT PROPERTY_NAME, PROPERTY_VALUE FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME='DEFAULT_TEMP_TABLESPACE';
PROPERTY_NAME PROPERTY_VALUE
-------------------------------------------------- --------------------------------------------------
DEFAULT_TEMP_TABLESPACE GROUP2
任何没有显示指定临时表空间的用户,将可以使用临时表空间 temp,temp2 中的空间。当表空间组被指定作为数据库的临时表空间时,不能删除表空间组中的任何成员。要删除临时表空间必须首先要删除表空间组。同样不能删除作为数据库的缺省临时表空间。
更多 Oracle 相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-06/144502.htm