11g临时表空间的几个数据字典视图含义
1、DBA_TEMP_FILES:描述了数据库的所有临时文件
Column | Datatype | NULL | Description |
---|---|---|---|
FILE_NAME | VARCHAR2(513) | Name of the database temp file | |
FILE_ID | NUMBER | File identifier number of the database temp file | |
TABLESPACE_NAME | VARCHAR2(30) | NOT NULL | Name of the tablespace to which the file belongs |
BYTES | NUMBER |
|
Size of the file (in bytes) |
BLOCKS | NUMBER |
|
Size of the file (in Oracle blocks) |
STATUS | CHAR(9) |
File status:
|
|
RELATIVE_FNO | NUMBER | Tablespace-relative file number | |
AUTOEXTENSIBLE | VARCHAR2(3) | Indicates whether the file is autoextensible (YES) or not (NO) | |
MAXBYTES | NUMBER |
|
maximum size of the file (in bytes) |
MAXBLOCKS | NUMBER |
|
Maximum size of the file (in Oracle blocks) |
INCREMENT_BY | NUMBER | Default increment for autoextension (in Oracle blocks) | |
USER_BYTES | NUMBER | Size of the useful portion of the file (in bytes) | |
USER_BLOCKS | NUMBER | Size of the useful portion of the file (in Oracle blocks) |
这是联机文档展示的视图字段
select * from dba_temp_files;
结合实际我们看下所有字段含义:FILE_NAME临时文件的名字包含路劲的;FILE_ID临时文件的识别号从1往下排;TABLESPACE_NAME数据文件所属的表空间名如:temp;
BYTES此文件的大小以byte计算;BLOCKS此文件的大小以块计算;BYTES=BLOCKS*BD_BLOCK_SIZE;
select value from v$parameter t where t.NAME='db_block_size';
VALUE
--------------------------
8192
34358689792=4194176*8192
STATUS代表临时文件的状态,在11g里包含三个状态OFFLINE,ONLINE,UNKNOWN;AUTOEXTENSIBLE是否支持自动扩展,YES和NO两个状态,自动扩展的就有最大值和最小值;MAXBYTES文件的最大大小以byte计算;MAXBLOCKS文件的最大大小以块计算;二者之间的关系和刚才的BYTES和BLOCKS一样的;INCREMENT_BY每次自动扩展的块数;USER_BYTES可用的文件大小以byte计算;USER_BLOCKS可用的文件大小以块计算;
临时文件中有一部分是被系统占用的,像文件头信息等,这一部分的大小就等于(BYTES-USER_BYTES)/8192=BLOCKS-USER_BLOCKS=128;
2、V$SORT_SEGMENT:显示给定实例的每个排序段的信息,只有发生在临时表空间的操作才会更新该视图。这里不仅仅记载排序动作,只要在临时表空间操作就会记录;而排序发生在内存,也不会更新该视图的。
Column | Datatype | Description |
---|---|---|
TABLESPACE_NAME | VARCHAR2(31) | Name of the tablespace |
SEGMENT_FILE | NUMBER | File number of the first extent |
SEGMENT_BLOCK | NUMBER | Block number of the first extent |
EXTENT_SIZE | NUMBER | Extent size |
CURRENT_USERS | NUMBER | Number of active users of the segment |
TOTAL_EXTENTS | NUMBER | Total number of extents in the segment |
TOTAL_BLOCKS | NUMBER | Total number of blocks in the segment |
USED_EXTENTS | NUMBER | Extents allocated to active sorts |
USED_BLOCKS | NUMBER | Blocks allocated to active sorts |
FREE_EXTENTS | NUMBER | Extents not allocated to any sort |
FREE_BLOCKS | NUMBER | Blocks not allocated to any sort |
ADDED_EXTENTS | NUMBER | Number of extent allocations |
EXTENT_HITS | NUMBER | Number of times an unused extent was found in the pool |
FREED_EXTENTS | NUMBER | Number of deallocated extents |
FREE_REQUESTS | NUMBER | Number of requests to deallocate |
MAX_SIZE | NUMBER | Maximum number of extents ever used |
MAX_BLOCKS | NUMBER | Maximum number of blocks ever used |
MAX_USED_SIZE | NUMBER | Maximum number of extents used by all sorts |
MAX_USED_BLOCKS | NUMBER | Maximum number of blocks used by all sorts |
MAX_SORT_SIZE | NUMBER | Maximum number of extents used by an individual sort |
MAX_SORT_BLOCKS | NUMBER | Maximum number of blocks used by an individual sort |
RELATIVE_FNO | NUMBER | Relative file number of the sort segment header |
select t.EXTENT_SIZE,
t.CURRENT_USERS,
t.TOTAL_EXTENTS,
t.TOTAL_BLOCKS,
t.USED_EXTENTS,
t.USED_BLOCKS,
t.FREE_EXTENTS,
t.FREE_BLOCKS
from v$sort_segment t;
EXTENT_SIZE为区的块数,128个块也就是1M;CURRENT_USERS当前使用临时表空间的用户数为5个;TOTAL_EXTENTS总共有116658个区;TOTAL_BLOCKS总共有的块数=TOTAL_EXTENTS*EXTENT_SIZE=116658*128=14932224;USED_EXTENTS已经使用的区数为5;USED_BLOCKS已经使用的块数=5*128=640;FREE_EXTENTS=TOTAL_EXTENTS-USED_EXTENTS;
3、V$TEMPSEG_USAGE:显示了临时段的使用
Column | Datatype | Description |
---|---|---|
USERNAME | VARCHAR2(30) | User who requested temporary space |
USER | VARCHAR2(30) | This column is obsolete and maintained for backward compatibility. The value of this column is always equal to the value inUSERNAME. |
SESSION_ADDR | RAW(4 | 8) | Address of shared SQL cursor |
SESSION_NUM | NUMBER | Serial number of session |
SQLADDR | RAW(4 | 8) | Address of SQL statement |
SQLHASH | NUMBER | Hash value of SQL statement |
SQL_ID | VARCHAR2(13) | SQL identifier of SQL statement |
TABLESPACE | VARCHAR2(31) | Tablespace in which space is allocated |
CONTENTS | VARCHAR2(9) | Indicates whether tablespace is TEMPORARY or PERMANENT |
SEGTYPE | VARCHAR2(9) |
Type of sort segment:
|
SEGFILE# | NUMBER | File number of initial extent |
SEGBLK# | NUMBER | Block number of the initial extent |
EXTENTS | NUMBER | Extents allocated to the sort |
BLOCKS | NUMBER | Extents in blocks allocated to the sort |
SEGRFNO# | NUMBER | Relative file number of initial extent |
select t.USERNAME,t.SESSION_NUM,t.SQL_ID,t.TABLESPACE,t.CONTENTS,t.SEGTYPE,t.EXTENTS,t.BLOCKS from v$tempseg_usage t;
查询出的数据正如V$SORT_SEGMENT查询出的结果,5个用户在使用临时段(USERNAME),使用了5个EXTENTS。此视图就体现了哪些用户在使用临时段,使用了多少。至于SQL_ID体现的是不是正在消耗临时段的语句有待考证。
4、DBA_TEMP_FREE_SPACE:描述了表空间级别的临时表空间使用的信息
Column | Datatype | NULL | Description |
---|---|---|---|
TABLESPACE_NAME | VARCHAR2(30) | NOT NULL | Name of the tablespace |
TABLESPACE_SIZE | NUMBER | Total size of the tablespace, in bytes | |
ALLOCATED_SPACE | NUMBER | Total allocated space, in bytes, including space that is currently allocated and used and space that is currently allocated and available for reuse | |
FREE_SPACE | NUMBER | Total free space available, in bytes, including space that is currently allocated and available for reuse and space that is currently unallocated |
TABLESPACE_SIZE:表空间总的大小;ALLOCATED_SPACE:已分配的总的表空间,包含当前分配的使用的空间以及当前分配的可以重用的空间;
FREE_SPACE:当前未分配的空间以及已分配可以重用的空间;
select * from dba_temp_free_space;