Oracle 临时表、临时表空间、临时表空间组用法、区别及表空间组优点

Oracle 临时表、临时表空间、临时表空间组用法、区别及表空间组优点

临时表

Oracle中的临时表是全局的,需要在数据库设计时创建完成,而不是程序使用时。每个登陆用户都使用这一个相同的临时表,但互相之间看不到彼此的数据,也就是说临时表是会话独立的。并且不产生日志。
Oracle 的临时表分为事务型和会话型。
事务型临时表就是指在事务处理过程中插入的记录只在事务提交或回滚之前有效,一旦事务完成,表中的记录便被自动清除。
会话型临时表指临时表中的数据在本次会话期间一直有效,直到会话结束。会话结束后表中针对此次会话的数据会自动清空。

创建:
CREATE GLOBAL TEMPORARY TABLE  tmp_test1 (id int,name varchar2(10)) ON COMMIT PRESERVE(DELETE) ROWS ;

临时表空间
temporary tablespace是用户在做数据排序都操作时临时存放的表空间
查询 v$tempfile\ dba_temp_file

每个用户都有一个默认临时表空间,在创建用户时如果没指定将使用oracle 数据库设置的默认临时表空间,查询方法是:
select property_name,property_value from database_properties where property_value=‘TEMP’

创建例子:
create temporary tablespace test2 tempfile ‘/u01/app/oracle/oradata/ORCL/datafile/temp2.tmp’ size 50m autoextend on;

设为数据库默认:

SQL> aLTER DATABASE DEFAULT TEMPORARY TABLESPACE test2;

Database altered.

设置后以前未指定的用户临时表空间都为最新


临时表空间组

在oracle11g以后,用户可以创建临时表空间组,一个临时表空间组中可以包含一个或多个临时表空间。
临时表空间组中必须由至少一个临时表空间组成,并且无明确的最大数量限制。
如果删除一个临时表空间组的所有成员,该组也自动被删除。
临时表空间的名字不能与临时表空间组的名字相同。
在给用户分配的一个临时表空间时,可以使用临时表空间组的名字代替实际的临时表空间名;在给数据库分配默认临时表空间时,也可以使用临时表空间组的名字。

创建临时表空间组:
临时表空间组不需要特别创建,只需要在创建临时表空间时,
使用teblespace group语句为其指定一个组即可。

查看临时表空间组信息:
数据字典dba_tablespace_grops

移动临时表空间:
使用alter tablespace语句

临时表空间组是在创建临时表空间时通过指定group字句创建的,如果删除组中的全部临时表空间,那么这个组也将消失。

创建例子:
SYS@PROD1 > select * from dba_tablespace_groups;
GROUP_NAME                     TABLESPACE_NAME
------------------------------ ------------------------------
GROUP01                        TEMP2

SYS@PROD1 > alter tablespace temp tablespace group group01;
Tablespace altered.
SYS@PROD1 > select * from dba_tablespace_groups;
GROUP_NAME                     TABLESPACE_NAME
------------------------------ ------------------------------
GROUP01                        TEMP
GROUP01                        TEMP2

SYS@PROD1 > select * from dba_temp_files;
FILE_NAME                                             FILE_ID TABLESPACE_NAME                  BYTES     BLOCKS STATUS  RELATIVE_FNO AUT   MAXBYTES   MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS
-------------------------------------------------- ---------- ------------------------------ ---------- ---------- ------- ------------ --- ---------- ---------- ------------ ---------- -----------
/u01/app/oracle/oradata/PROD/temp01.dbf                     1 TEMP                             20971520       2560 ONLINE           1 YES 3.4360E+10    4194302           80   19922944     2432
/u01/app/oracle/oradata/PROD/temp02.dbf                     2 TEMP2                            20971520       2560 ONLINE           1 NO           0          0            0   19922944     2432

SYS@PROD1 > /

FILE_NAME                                             FILE_ID TABLESPACE_NAME                     BYTES     BLOCKS STATUS  RELATIVE_FNO AUT   MAXBYTES  MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS
-------------------------------------------------- ---------- ------------------------------ ---------- ---------- ------- ------------ --- ---------- ---------- ------------ ---------- -----------
/u01/app/oracle/oradata/PROD/temp01.dbf                     1 TEMP                             20971520       2560 ONLINE            1 YES 3.4360E+10     4194302           80   19922944        2432
/u01/app/oracle/oradata/PROD/temp02.dbf                     2 TEMP2                            20971520       2560 ONLINE            1 NO            0          0            0   19922944        2432

使用临时表空间组,有如下的优点:
1.避免当临时表空间不足时所引起的磁盘排序问题;
2.当一个用户同时有多个会话时,可以使得它们使用不同的临时表空间;
3.使得并行的服务器在单节点上,能使用多个临时表空间 .
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值