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.使得并行的服务器在单节点上,能使用多个临时表空间 .
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle数据库中的临时空间(Temporary Tablespace)主要用于存储SQL语句执行过程中生成的临时结果集和排序中间结果。它在数据库运行过程中起到了重要的作用。 Oracle数据库中的临时空间使用历史可以追溯到早期版本的Oracle数据库。在Oracle 7中,临时空间的引入就大大提高了数据库的性能和可伸缩性。在早期版本的Oracle数据库中,排序和临时结果集的存储通常是通过使用数据库内部的排序区(Sort Area)和排序段(Sort Segment)来完成的,这种方式对内存的需求较大,并且容易导致性能瓶颈。为了解决这个问题,Oracle引入了临时空间的概念。 临时空间的引入提供了一种从磁盘读取和写入排序结果的方法,从而减轻了内存的压力,并改善了排序操作的性能。临时空间可以由系统管理员在数据库中手动创建,或者可以由自动管理的空间管理(Automatic Storage Management)来创建和管理。 临时空间的使用方式通常是在SQL语句执行之前,临时空间会被分配给用户会话。当SQL语句执行期间需要排序或者产生临时结果集时,数据被写入临时空间。一旦排序或者查询结束,临时空间会被释放,以便其他会话使用。 临时空间的大小通常需要根据系统的负载和需求来决定,过小的临时空间可能导致临时空间不足的错误,而过大的临时空间则会占用过多的磁盘空间。因此,管理者需要根据实际情况来调整临时空间的大小。 总之,Oracle数据库中的临时空间在SQL语句的执行过程中起到了重要的作用,它提供了一种存储临时结果集和排序结果的方法,并提升了数据库的性能和可伸缩性。通过合理地设置临时空间的大小和管理,可以确保数据库的高效运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值