Oracle10g临时表空间组
来源:优易学  2011-12-26 11:52:28   【优易学:中国教育考试门户网】   资料下载   IT书店
  Oracle 10g 引进了临时表空间组(temporary tablespace group)的概念,它允许用户在不同的会话中同时利用多个临时表空间。
  1. 临时表空间组的主要特征
  一个临时表空间组必须由至少一个临时表空间组成,并且无明确的最大数量限制。
  如果删除了一个临时表空间组的所有成员,该组也自动被删除。
  临时表空间的名字不能与临时表空间组的名字相同。
  在给用户分配一个临时表空间时,可以使用临时表空间组的名字代替实际的临时表空间名;在给数据库分配默认临时表空间时也可以使用临时表空间组的名字。
  2. 临时表空间组的有点
  使用临时表空间组而非普通的临时表空间,有如下好处:
  由于SQL查询可以并发使用几个临时表空间进行排序操作,因此SQL查询很少会出现排序空间超出,避免当临时表空间不足时所引起的磁盘排序问题。
  可以在数据库级指定多个默认临时表空间。
  一个并行操作的并行服务器将有效地利用多个临时表空间。
  一个用户在不同会话中可以同时使用多个临时表空间。
  3. 管理 临时表空间组
  临时表空间组是在创建临时表空间时通过指定GROUP字句创建的。可以将一个表空间从一个组移动另一个组,或是从一个组中删除临时表空间,或是往组里添加新的表空间。
  a. 创建临时表空间组
  创建临时表空间时指定GROUP:
  CREATE SMALLFILE
  TEMPORARY TABLESPACE "TEMP01"
  TEMPFILE
  ’/u01/app/oracle/oradata/orcl/temp_tbs_01a.dbf’ SIZE 5M REUSE
  AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED
  EXTENT MANAGEMENT LOCAL
  UNIFORM. SIZE 1M
  TABLESPACE GROUP TBS_GROUP_1
  GO
  CREATE SMALLFILE
  TEMPORARY TABLESPACE "TEMP02"
  TEMPFILE
  ’/u01/app/oracle/oradata/orcl/temp_tbs_02a.dbf’ SIZE 5M REUSE
  AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED
  EXTENT MANAGEMENT LOCAL
  UNIFORM. SIZE 1M
  TABLESPACE GROUP TBS_GROUP_1
  GO
  CREATE SMALLFILE
  TEMPORARY TABLESPACE "TEMP03"
  TEMPFILE
  ’/u01/app/oracle/oradata/orcl/temp_tbs_03a.dbf’ SIZE 5M REUSE
  AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED
  EXTENT MANAGEMENT LOCAL
  UNIFORM. SIZE 1M
  TABLESPACE GROUP TBS_GROUP_2
  GO
  CREATE SMALLFILE
  TEMPORARY TABLESPACE "TEMP04"
  TEMPFILE
  ’/u01/app/oracle/oradata/orcl/temp_tbs_04a.dbf’ SIZE 5M REUSE
  AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED
  EXTENT MANAGEMENT LOCAL
  UNIFORM. SIZE 1M
  TABLESPACE GROUP TBS_GROUP_2
  GO
  b. 查询临时表空间组
  SELECT * FROM DBA_TABLESPACE_GROUPS
  GROUP_NAME TABLESPACE_NAME
  TBS_GROUP_1 TEMP01
  TBS_GROUP_1 TEMP02
  TBS_GROUP_2 TEMP03
  TBS_GROUP_2 TEMP04
  c. 临时表空间的移动
  可以将“未分组”或“已分组”的临时表空间移动到指定的 临时表空间中,或者是移出:
  •将未分组的临时表空间TEMP_01加入分组TBS_GROUP_1
  ALTER TABLESPACE TEMP_01 TABLESPACE GROUP TBS_GROUP_1
  •将已分组的临时表空间TEMP_01加入分组TBS_GROUP_2
  ALTER TABLESPACE TEMP01 TABLESPACE GROUP TBS_GROUP_2
  •将已分组的临时表空间TEMP04移除分组TBS_GROUP_2
  ALTER TABLESPACE TEMP04 TABLESPACE GROUP ’’
  查看结果:
  SELECT * FROM DBA_TABLESPACE_GROUPS
  GROUP_NAME TABLESPACE_NAME
  TBS_GROUP_1 TEMP02
  TBS_GROUP_1 TEMP_01
  TBS_GROUP_2 TEMP01
  TBS_GROUP_2 TEMP03
  d. 把临时表空间组指定给用户
  •查看用户的默认表空间
  SELECT USERNAME, DEFAULT_TABLESPACE, TEMPORARY_TABLESPACE
  FROM DBA_USERS
  •创建用户时指定
  CREATE USER zhangzj IDENTITY BY zhangzj
  DEFAULT TABLESPACE users
  TEMPORARY TABLESPACE tbs_group_1
  •修改已有用户
  ALTER USER ZHANGZJ TEMPORARY TABLESPACE TBS_GROUP_1
  e. 设置数据库临时表空间组
  ALTER DATABASE ORCL DEFAULT TEMPORARY TABLESPACE TBS_GROUP_1
  f. 同一个用户的不同session使用不同的临时表空间
  首先用sys用户查询:
  SELECT USERNAME, SESSION_NUM, TABLESPACE FROM V$SORT_USAGE
  测试过程:
  新开session1执行 
  SQL> conn zhangzj/zhangzj
  已连接。
  SELECT A.TABLE_NAME, B.TABLE_NAME
  FROM DICT A, DICT B ORDER BY A.TABLE_NAME
  新开session2执行
  SQL> conn zhangzj/zhangzj
  已连接。
  SELECT A.TABLE_NAME, B.TABLE_NAME FROM DICT A, DICT B
  sys查询:
  SQL> SELECT USERNAME, SESSION_NUM, TABLESPACE FROM V$SORT_USAGE;
  USERNAME SESSION_NUM TABLESPACE
  ZHANGZJ 35743 TEMP01
  ZHANGZJ 25683 TEMP02
  可以发现,同一个用户ZHANGZJ的两个session分别使用了两个不同的临时表空间。
  g. 删除临时表空间组
  即:删除组成临时表空间组的所有临时表空间
  先查看要删除的 临时表空间组包含哪些 临时表空间
  SELECT * FROM DBA_TABLESPACE_GROUPS
  然后删除 这些临时表空间,即可
  DROP TABLESPACE TEMP01 INCLUDING CONTENTS AND DATAFILES
  GO
  DROP TABLESPACE TEMP02 INCLUDING CONTENTS AND DATAFILES
  GO

责任编辑:小草

文章搜索:
 相关文章
热点资讯
热门课程培训