数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

Oracle10g临时表空间组


发布日期:2021年07月27日
 
Oracle10g临时表空间组

Oracle g 引进了临时表空间组(temporary tablespace group)的概念它允许用户在不同的会话中同时利用多个临时表空间

临时表空间组的主要特征

&#; 一个临时表空间组必须由至少一个临时表空间组成并且无明确的最大数量限制

&#; 如果删除了一个临时表空间组的所有成员该组也自动被删除

&#; 临时表空间的名字不能与临时表空间组的名字相同

&#; 在给用户分配一个临时表空间时可以使用临时表空间组的名字代替实际的临时表空间名;在给数据库分配默认临时表空间时也可以使用临时表空间组的名字

临时表空间组的有点

使用临时表空间组而非普通的临时表空间有如下好处

&#; 由于SQL查询可以并发使用几个临时表空间进行排序操作因此SQL查询很少会出现排序空间超出避免当临时表空间不足时所引起的磁盘排序问题

&#; 可以在数据库级指定多个默认临时表空间

&#; 一个并行操作的并行服务器将有效地利用多个临时表空间

&#; 一个用户在不同会话中可以同时使用多个临时表空间

管理 临时表空间组

临时表空间组是在创建临时表空间时通过指定GROUP字句创建的可以将一个表空间从一个组移动另一个组或是从一个组中删除临时表空间或是往组里添加新的表空间

创建临时表空间组

创建临时表空间时指定GROUP

CREATESMALLFILE

TEMPORARYTABLESPACETEMP

TEMPFILE

/u/app/oracle/oradata/orcl/temp_tbs_adbfSIZEMREUSE

AUTOEXTENDONNEXTKMAXSIZEUNLIMITED

EXTENTMANAGEMENTLOCAL

UNIFORMSIZEM

TABLESPACEGROUPTBS_GROUP_

GO

CREATESMALLFILE

TEMPORARYTABLESPACETEMP

TEMPFILE

/u/app/oracle/oradata/orcl/temp_tbs_adbfSIZEMREUSE

AUTOEXTENDONNEXTKMAXSIZEUNLIMITED

EXTENTMANAGEMENTLOCAL

UNIFORMSIZEM

TABLESPACEGROUPTBS_GROUP_

GO

CREATESMALLFILE

TEMPORARYTABLESPACETEMP

TEMPFILE

/u/app/oracle/oradata/orcl/temp_tbs_adbfSIZEMREUSE

AUTOEXTENDONNEXTKMAXSIZEUNLIMITED

EXTENTMANAGEMENTLOCAL

UNIFORMSIZEM

TABLESPACEGROUPTBS_GROUP_

GO

CREATESMALLFILE

TEMPORARYTABLESPACETEMP

TEMPFILE

/u/app/oracle/oradata/orcl/temp_tbs_adbfSIZEMREUSE

AUTOEXTENDONNEXTKMAXSIZEUNLIMITED

EXTENTMANAGEMENTLOCAL

UNIFORMSIZEM

TABLESPACEGROUPTBS_GROUP_

GO

查询临时表空间组

SELECT*FROMDBA_TABLESPACE_GROUPS

GROUP_NAMETABLESPACE_NAME

TBS_GROUP_TEMP

TBS_GROUP_TEMP

TBS_GROUP_TEMP

TBS_GROUP_TEMP

临时表空间的移动

可以将未分组已分组的临时表空间移动到指定的 临时表空间中或者是移出

&#;将未分组的临时表空间TEMP_加入分组TBS_GROUP_

ALTER TABLESPACE TEMP_ TABLESPACE GROUP TBS_GROUP_

&#;将已分组的临时表空间TEMP_加入分组TBS_GROUP_

ALTER TABLESPACE TEMP TABLESPACE GROUP TBS_GROUP_

&#;将已分组的临时表空间TEMP移除分组TBS_GROUP_

ALTER TABLESPACE TEMP TABLESPACE GROUP

查看结果

SELECT*FROMDBA_TABLESPACE_GROUPS

GROUP_NAMETABLESPACE_NAME

TBS_GROUP_TEMP

TBS_GROUP_TEMP_

TBS_GROUP_TEMP

TBS_GROUP_TEMP

把临时表空间组指定给用户

&#;查看用户的默认表空间

SELECTUSERNAMEDEFAULT_TABLESPACETEMPORARY_TABLESPACE

FROMDBA_USERS

&#;创建用户时指定

CREATEUSERzhangzjIDENTITYBYzhangzj

DEFAULTTABLESPACEusers

TEMPORARYTABLESPACEtbs_group_

&#;修改已有用户

ALTERUSERZHANGZJTEMPORARYTABLESPACETBS_GROUP_

设置数据库临时表空间组

ALTERDATABASEORCLDEFAULTTEMPORARYTABLESPACETBS_GROUP_

同一个用户的不同session使用不同的临时表空间

首先用sys用户查询

SELECTUSERNAMESESSION_NUMTABLESPACEFROMV$SORT_USAGE

测试过程

新开session执行

SQL>connzhangzj/zhangzj

已连接

SELECTATABLE_NAMEBTABLE_NAME

FROMDICTADICTBORDERBYATABLE_NAME

新开session执行

SQL>connzhangzj/zhangzj

已连接

SELECTATABLE_NAMEBTABLE_NAMEFROMDICTADICTB

sys查询

SQL>SELECTUSERNAMESESSION_NUMTABLESPACEFROMV$SORT_USAGE;

USERNAMESESSION_NUMTABLESPACE

ZHANGZJTEMP

ZHANGZJTEMP

可以发现同一个用户ZHANGZJ的两个session分别使用了两个不同的临时表空间

删除临时表空间组

删除组成临时表空间组的所有临时表空间

先查看要删除的 临时表空间组包含哪些 临时表空间

SELECT*FROMDBA_TABLESPACE_GROUPS

然后删除 这些临时表空间即可

DROPTABLESPACETEMPINCLUDINGCONTENTSANDDATAFILES

GO

DROPTABLESPACETEMPINCLUDINGCONTENTSANDDATAFILES

GO

上一篇:Oracle 常用功能函数汇总

下一篇:在oracle中限制返回结果集的大小