11G的新视图DBA_TEMP_FREE_SPACE

11G的新视图DBA_TEMP_FREE_SPACE
Kevin Zou
2011-9-27

在11G引入了一个新的视图DBA_TEMP_FREE_SPACE,可以更加高效的管理临时表空间。
SQL> select * from v$version where rownum < 2;

BANNER
--------------------------------------------------------------------------------

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

SQL> desc DBA_TEMP_FREE_SPACE
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------

 TABLESPACE_NAME                           NOT NULL VARCHAR2(30)
 TABLESPACE_SIZE                                    NUMBER
 ALLOCATED_SPACE                                    NUMBER
 FREE_SPACE                                         NUMBER

SQL> SELECT * FROM dba_temp_free_space;

TABLESPACE_NAME                TABLESPACE_SIZE ALLOCATED_SPACE FREE_SPACE
------------------------------ --------------- --------------- ----------
TEMP                                 524288000         5242880  522190848


在我这个的环境里,临时表空间的大小为524M,已经分配的空间是5M,还有522M 空闲的空间。这里为啥FREE+ALLOCATED的值大于总值呢?

可以在线缩小临时表空间:
SQL> alter tablespace temp shrink space keep 200m;

Tablespace altered.

SQL> SELECT * FROM dba_temp_free_space;

TABLESPACE_NAME                TABLESPACE_SIZE ALLOCATED_SPACE FREE_SPACE
------------------------------ --------------- --------------- ----------
TEMP                                 210763776         2097152  208666624

也可以直接缩小某个临时文件:
SQL> select name from v$tempfile;

NAME
L:\ORADATA\TEST\TEMP11\TEMP01.DBF

SQL> alter tablespace temp shrink tempfile 'L:\ORADATA\TEST\TEMP11\TEMP01.DBF' keep 100M;

Tablespace altered.


SQL> SELECT * FROM dba_temp_free_space;

TABLESPACE_NAME                TABLESPACE_SIZE ALLOCATED_SPACE FREE_SPACE
------------------------------ --------------- --------------- ----------
TEMP                                 105897984         3137536  103809024

Keep语句指定了需要保留的最小值;如果忽略该语句,那直接将TABLESPACE和TEMPFILE缩小到最小。
SQL> alter tablespace temp shrink space;

Tablespace altered.

SQL> SELECT * FROM dba_temp_free_space;

TABLESPACE_NAME                TABLESPACE_SIZE ALLOCATED_SPACE FREE_SPACE
------------------------------ --------------- --------------- ----------
TEMP                                   2088960         2088960          0

-THE END-

请使用浏览器的分享功能分享到微信等