Oracle-临时表空间和临时表空间组

简介: Oracle数据库中的临时表空间

1 临时表空间

      临时表空间存储只在会话期间保存的临时数据。当排序操作不能再内存中完成时,临时表空间可以提高它们的并发性,同时也能提高操作排序期间的空间管理效率。

      临时表空间用来存储下面四类对象:

  •        中间的排序结果
  •        临时表和临时索引
  •        临时LOB
  •        临时B-tree

      临时表空间可以在实例之间共享,一个临时表空间内,一个实例的所有排序操作共享一个排序分段。第一个使用临时表空间排序的sql语句创建排序分段,这个排序分段在创建后一直存在,在实例关闭时,Oracle会释放排序分段。

    从Oracle 12.2开始,用户可以创建本地管理的临时表空间。本地管理的临时表空间不能在实例间共享,只能用于sql语句的临时结果,比如排序,hash聚合,以及连接。这些结果只能在一个实例中访问。说到临时表空间,一般指的是共享临时表空间,如果是RAC,临时表空间通常创建在共享磁盘上。

    数据库安装时默认会创建一个默认的临时表空间,名称为temp,这个表空间是所有用户的临时表空间。

SQL> select distinct TABLESPACE_NAME from dba_temp_files;
TABLESPACE_NAME
------------------------------TEMP

     临时表空间可以在用户级设置,也可以在数据库级设置

SQL>alter database default temporary tablespace TBS_TEMP1;  Database altered.
SQL>selectdistinct TEMPORARY_TABLESPACE from dba_users;  TEMPORARY_TABLESPACE
------------------------------  TBS_TEMP1

也可以在用户级设置

SQL>alter user test temporary tablespace TBS_TEMP2;  User altered.
SQL>select USERNAME,TEMPORARY_TABLESPACE from dba_users where username='TEST';  USERNAME                       TEMPORARY_TABLESPACE
------------------------------ ------------------------------  TEST                           TBS_TEMP2

2 临时表空间组

     表空间组使一个用户能够使用多个表空间内的临时空间。表空间组可能只用于临时表空间。一个表空间不足以存储排序结果的时,可以使用表空间组,特别是在一个表有很多分区的时候这种情况容易发生。表空间则也使一个单一并行操作的多个并行执行服务器使用不同的临时表空间。当一个用户有多个会话同时登录时,不同的会话也会使用不同的临时表空间。

     表空间组不需要单独创建,在创建临时表空间时可以指定表空间组,后面创建的临时表空间也可以指定相同的组。表空间组在组内的最后一个临时表空间删除后被删除。

SQL>create temporary tablespace tbs_temp1 tempfile size 10M tablespace group tbg1;  Tablespace created.
SQL>create temporary tablespace tbs_temp2 tempfile size 10M tablespace group tbg1;  Tablespace created.
--创建了一个临时表空间组,里面有两个临时表空间,查询一个当前的表空间组SQL>select*from DBA_TABLESPACE_GROUPS;GROUP_NAME                     TABLESPACE_NAME
------------------------------ ------------------------------TBG1                           TBS_TEMP1
TBG1                           TBS_TEMP2

用PL SQL dev连接至数据库

屏幕截图(1337).png

另一个会话

屏幕截图(1338).png

这两个会话的id分别是197和131,查询这两个会话使用的临时表空间

SQL>select username, session_num, tablespace from v$sort_usage;USERNAME                       SESSION_NUM TABLESPACE
------------------------------ ----------- -------------------------------TEST                                    23 TBS_TEMP2
TEST                                    23 TBS_TEMP2
TEST                                    53 TBS_TEMP1

这里的session_num 对应v$session中的serial#,查询一下这两个会话的sid

SQL>select sid, serial#  from v$session where serial# in(23,53);       SID    SERIAL#
---------- ----------1315319723





相关文章
|
SQL Oracle 关系型数据库
Oracle 数据库利用sql语句判断某个表是否是临时表实例演示,达梦数据库查询出所有临时表
Oracle 数据库利用sql语句判断某个表是否是临时表实例演示,达梦数据库查询出所有临时表
445 0
Oracle 数据库利用sql语句判断某个表是否是临时表实例演示,达梦数据库查询出所有临时表
|
2月前
|
SQL Oracle 关系型数据库
Oracle临时表详解
Oracle临时表详解
|
9月前
|
Oracle 关系型数据库 数据库
一篇文章教你学会使用Oracle 数据库中、WITH 临时表名 AS ()语法
一篇文章教你学会使用Oracle 数据库中、WITH 临时表名 AS ()语法
78 0
|
Oracle 关系型数据库 5G
Oracle 12C rman备份占用大量临时表空间
Oracle 12C rman备份占用大量临时表空间
394 0
|
12月前
|
SQL 存储 Oracle
Oracle-临时表空间(组)解读
Oracle-临时表空间(组)解读
441 0
|
SQL Oracle 关系型数据库
Oracle 临时表空间 SQL语句
以下总结了关于 Oracle 数据库临时表空间的相关 SQL 语句:
|
Oracle 关系型数据库 PostgreSQL
PostgreSQL Oracle 兼容性之 - 全局临时表 global temp table
标签 PostgreSQL , 临时表 , 全局临时表 , unlogged table , advisory lock 背景 PostgreSQL 暂时不支持类似Oracle风格的临时表。 PostgreSQL 临时表结构是会话级别的,而在Oracle中,临时表的结构是全局有效的,只是数据会话之间独立。
6865 0
|
SQL 存储 Oracle
Oracle临时表空间总结
Oracle临时表空间总结http://www.bieryun.com/3338.html 临时表空间概念 临时表空间用来管理数据库排序操作以及用于存储临时表、中间排序结果等临时对象,当ORACLE里需要用到SORT的时候,并且当PGA中sort_area_size大小不够时,将会把数据放入临时表空间里进行排序。
1289 0
|
Oracle 关系型数据库 测试技术
[20180105]oracle临时表补充.txt
[20180105]oracle临时表补充.txt --//昨天对临时表做一些测试,今天做一些补充: 1.环境: SCOTT@book> @ &r/ver1 PORT_STRING         VERSION    BANNER -------...
779 0

推荐镜像

更多