ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Temporary tablespace group on 11g

Temporary tablespace group on 11g

原创 Linux操作系统 作者:jiuniang012 时间:2009-07-12 02:16:09 0 删除 编辑
临时表空间保存了会话中临时的数据信息, 临时表空间能提高不适合于在内存里进行的并发的排序操作,和提高排序时的空间管理操作.

临时表空间用于存储:
  • Intermediate sort results

  • Temporary tables and temporary indexes

  • Temporary LOBs

  • Temporary B-trees

临时表空间的空间分配:
V$SORT_SEGMENT:查看临时表空间排序段里已分配(allocated)和未分配/释放(deallocated)的空间情况.
当排序操作完成后,被分配的空间并不会被释放,而是被标记为free并且可重新利用.
DBA_TEMP_FREE_SPACE:该视图显示临时表空间里已分配的和未分配的空间情况.
SQL> SELECT * from DBA_TEMP_FREE_SPACE;

TABLESPACE_NAME TABLESPACE_SIZE ALLOCATED_SPACE FREE_SPACE
----------------------------------- --------------- --------------- ----------
TEMP 250609664 250609664 249561088
创建临时表空间:
SQL>create temporary tablespace lmtemp
           tempfile '/data/oradata/orcl/lmtemp.dbf' size 10M
           EXTENT MANAGEMENT LOCAL UNIFORM. SIZE 2M;
以上实例创建了一个临时表空间,每个extent盘区大小为2M(2M表示数据文件bitmap里的一个bit)
Each 2M extent (which is the equivalent of 1000 blocks when the standard block size is 2K) is represented by a bit in the bitmap for the file.

创建临时表空间组:
并没有哪个命令显式地创建临时表空间组,而是在第一次给组添加成员时自动创建,在删除最后一个成员是自动删除.
1. 可以在CREATE TEMPORARY TABLESPACE里创建组或给组添加成员
     SQL> CREATE TEMPORARY TABLESPACE lmtemp2 TEMPFILE '/u02/oracle/data/lmtemp201.dbf'
       
SIZE 50M
       
TABLESPACE GROUP group1;

2. 可以用ALTER TABLESPACE创建组或添加成员.
     SQL> ALTER TABLESPACE lmtemp TABLESPACE GROUP group2;

3. 删除组成员
    SQL> ALTER TABLESPACE lmtemp3 TABLESPACE GROUP '';
   
4. 设置临时表空间组为数据块默认的临时表空间
    SQL> alter database default temporary tablespace group1;

5. 查看临时表空间组
    SQL> select * from dba_tablespace_groups;

    GROUP_NAME                     TABLESPACE_NAME
    ------------------------------ ------------------------------
    GROUP1                         TEMP
    GROUP1                         LMTEMP
  
压缩临时表空间:
正如前面所说,当排序操作完成后,分配的空间并不会立即被释放,而是被标记为free可被重新使用. 因此,一个大的排序操作可能会产生大量的unused空间.可以利用shrink来释放那些空间.
可以在数据库打开的状态下shrink临时表空间或临时数据文件,并不会影响正在排序的操作,也可以执行新的排序操作.
例如:
SQL> ALTER TABLESPACE lmtemp1 SHRINK SPACE KEEP 20M;
(optional KEEP clause defines a minimum size for the tablespace or tempfile.)

SQL> ALTER TABLESPACE lmtemp2 SHRINK TEMPFILE '/u02/oracle/data/lmtemp02.dbf';
由于这个SQL语句中没有指定KEEP选项,则压缩到最小.

    注: 1.每个组至少要一个成员,理论上可以有无限个成员.
          2. 当删除组里的最后一个成员后,该组自动删除(除了第三点提到的情况)
          3. 当表空间组设为数据库默认的临时表空间时,不能删除该组的仍一成员.如需删除则必须先把该成员从该组删除,再删除表空间.但要保证该组至少有一个成员.

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9466564/viewspace-608911/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-07-02

  • 博文量
    126
  • 访问量
    245626