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





相关文章
|
7月前
|
存储 Oracle NoSQL
Oracle 表空间、数据文件、schema的关系
Oracle 表空间、数据文件、schema的关系
197 2
|
SQL 监控 Oracle
Oracle创建和管理表空间
Oracle创建和管理表空间
101 1
|
Oracle 关系型数据库 数据库
9-4 Oracle管理表空间和数据文件
9-4 Oracle管理表空间和数据文件
126 0
|
4月前
|
Oracle 关系型数据库 数据库
[oracle]拆分多用户的公共表空间
[oracle]拆分多用户的公共表空间
|
5月前
|
存储 监控 Oracle
关系型数据库Oracle空间不足
【7月更文挑战第15天】
65 6
|
5月前
|
存储 Oracle 关系型数据库
关系型数据库Oracle 空间不足
【7月更文挑战第16天】
62 2
|
7月前
|
存储 数据库
发现oracle10gSYSAUX空间没有了进行处理
发现oracle10gSYSAUX空间没有了进行处理
43 0
|
7月前
|
SQL Oracle 关系型数据库
Oracle 数据泵导出导入(映射表空间、Schema)
Oracle 数据泵导出导入(映射表空间、Schema)
|
7月前
|
Oracle 关系型数据库 数据库
Oracle 11gR2学习之三(创建用户及表空间、修改字符集和Oracle开机启动)
Oracle 11gR2学习之三(创建用户及表空间、修改字符集和Oracle开机启动)
|
7月前
|
存储 Oracle 关系型数据库
Oracle表空间:数据王国的疆域规划
【4月更文挑战第19天】Oracle中的表空间是逻辑存储结构,用于存放数据库对象的物理数据,是数据库性能优化和备份恢复的基础。表空间类型多样,如永久和临时表空间,需根据业务需求进行规划和管理。通过监控使用情况、利用自动扩展功能,可有效管理表空间,提高数据访问速度和可靠性。深入理解表空间有助于优化数据库存储和管理。