Oracle 建立临时表空间
通过在表空间中分配临时存储空间,Oracle能够使带有排序等操作的SQL语句获得更高的执行效率。如果创建了专门的临时表空间,Oracle就可以不必在其他的表空间中为排序操作分配临时空间,这样不仅可以实现临时数据的集中化管理,而且还不会影响到其他表空间的使用效率。
在数据库中创建用户时必须为用户指定一个表空间作为临时表空间使用,该用户所生成的所有临时表数据都将存储在这个表空间中。如果使用其他表空间作为临时表空间,这不仅会占用其中的存储空间,而且会在该表空间中生成许多存储碎片,从而影响整个数据库的性能。因此,最好为数据库创建一个专门的临时表空间。
一个临时表空间可以被多个数据库用户共享使用。在临时表空间中创建的段称为临时段。Oracle只会为一个实例创建一个临时段,这个临时段被实例中所有的排序操作共享使用,但是临时段中的每一个区只能由一个事务使用。
另外,如果在数据库运行过程中经常有大量并发排序操作,那么为了提高排序性能,可以建立多个临时表空间。建立临时表空间是使用CREATE TEMPORARY TABLESPACE命令完成的。
1.建立本地管理临时表空间
建立本地管理临时表空间时,使用UNIFORM选项可以指定区尺寸。需要注意,当建立临时表空间时,不能指定AUTOALLOCATE选项。
oracle11g 创建数据库例如,下面的语句在数据库中创建一个临时表空间temp01:
SQL> create temporary tablespace temp01
2 tempfile 'd:\oracledata\temp01.dbf' size 10m
3 extent management local
4 uniform size 256k;
表空间已创建。
上面创建的表空间其管理方式为本地化管理,并且区尺寸统一为256KB。需要注意,本地化管理临时表空间不使用数据文件,而使用临时文件,也就是说,在创建临时表空间时,必须
将表示数据文件的DATAFILE改为表示临时文件的TEMPFILE。
2.建立大文件临时表空间
在Oracle 11g中,允许使用CREATE BIFILE TEMPORARY TABLESPACE语句建立只包含一个临时文件的大文件临时表空间。例如:
SQL> create bigfile temporary tablespace big_temp02
2 tempfile 'd:\oracledata\temp02.dbf' size 10m;
表空间已创建。
上述语句创建了名为BIG_TEMP02的临时表空间,该表空间只能包含一个临时文件,并且其空间管理方式为本地管理。
3.使用临时表空间组
临时表空间组是多个临时表空间的集合,它使得一个数据库用户可以使用多个临时表空间。
临时表空间组具有如下特点:
● 临时表空间组至少要包含一个临时表空间。
● 临时表空间组不能与任何表空间同名。
● 当指定数据库的默认临时表空间或用户的临时表空间时,可以直接指定临时表空间。
使用临时表空间时,必须首先执行CREATE TEMPORARY TABLESPACE语句显式地建立临时表空间,而临时表空间组则是隐含建立的。当执行CREATE TEMPORARY TABLESPACE语句时,通过指定TABLESPACE GROUP选项,可以隐含地建立临时表空间组。例如,下面的语句将隐含建立临时表空间组GROUP1:
SQL> create bigfile temporary tablespace temp03
2 tempfile 'd:\oracledata\temp03.dbf' size 2m
3 tablespace group group1;
表空间已创建。
执行上述语句后,会显式建立临时表空间TEMP03,隐含建立临时表空间组GROUP1,并且将临时表空间TEMP03添加到临进表空间组GROUP1中。当执行ALTER TABLESPACE语句时,通过指定TABLESPACE GROUP选项,可以隐含建立临时表空间组。下面以隐含建立临时表空间组GROUP2为例,说明使用ALTER TABLESPACE隐含建立临时表空间组的方法。例如:
SQL> alter tablespace temp01 tablespace group group2;
表空间已更改。
上述语句将隐含地创建表空间组GROUP2,并将临时表空间TEMP01追加到该组中。
使用ALTER TABLESPACE语句不仅可以隐含建立临时表空间组,而且可以将已创建的临时表空间添加到临时表空间组中,或者从临时表空间组中删除其成员。例如,下面的语句将TEMP01、TEMP03添加到临时表空间组GROUP1:
SQL> alter tablespace temp01 tablespace group group1;
表空间已更改。
SQL> alter tablespace temp03 tablespace group group1;
表空间已更改。
当要从临时表空间组中删除成员时,也可以使用ALTER TABLESPACE语句。例如,下面的语句从临时表空间GROUP1中删除成员TEMP03:
SQL> alter tablespace temp03 tablespace group '';
表空间已更改。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论