`

少了64k

 
阅读更多

SQL> select tablespace_name,sum(bytes)/1024/1024 from dba_free_space where tablespace_n
ame like '%USER%' group by tablespace_name;

TABLESPACE_NAME SUM(BYTES)/1024/1024
------------------------------ --------------------
USERS 292.25

已选择 1 行。

SQL> select sum(bytes)/1024/1024 from dba_segments where tablespace_name like '%USER%';


SUM(BYTES)/1024/1024
--------------------
7.6875

已选择 1 行。

SQL> select file_name,tablespace_name,sum(bytes)/1024/1024 from dba_data_files where ta
blespace_name like '%USER%' group by file_name,tablespace_name;

FILE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME SUM(BYTES)/1024/1024
------------------------------ --------------------
C:/ORAHOME92/ORACLE/ORA10G/ORADATA/ORCL/USERS01.DBF
USERS 300


已选择 1 行。
******************************************************************************************

SQL> select file_name,tablespace_name,bytes from dba_data_fileS where tablespace_name l
ike '%USER%';

FILE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME BYTES
------------------------------ ----------
C:/ORAHOME92/ORACLE/ORA10G/ORADATA/ORCL/USERS01.DBF
USERS 314572800


已选择 1 行。

SQL> select sum(bytes) from dba_segments where tablespace_name like '%USER%';

SUM(BYTES)
----------
8060928

已选择 1 行。

SQL> select tablespace_name,sum(bytes) from dba_free_space where tablespace_name like '
%USER%' group by tablespace_name;

TABLESPACE_NAME SUM(BYTES)
------------------------------ ----------
USERS 306446336

已选择 1 行。


314572800-(306446336+8060928)=65536(64k)

answer:

from:http://www.itpub.net/viewthread.php?tid=1070404&pid=11827357&page=1&extra=

LMT的管理方式
LMT就是指Oracle不再利用数据字典表来记录Oracle表空间里面的区的使用状况,而是在每个表空间的数

据文件的头部加入了一个位图区,在其中记录每个区的使用状况。每个表文件头会有64K用于bit map。每

当一个区被使用,或者被释放以供重新使用时,Oracle都会更新数据文件头部的这个记录,反映这个变化

区大小的管理

extent_management_clause(表空间级参数)

AUTOALLOCATE(默认值)

区的大小由系统来管理,如果数据块小于16K.则默认是64K,如果大于16K,则默认是1M.然后再根据表的

情况分配区。大小是64K,1M,8M..

而系统表空间只能是autoallocate。

UNIFORM

规定了每个区的大小,而每个区至少包括5个数据库块大小

区属性的管理

segment_management_clause(表空间级参数)

MANUAL

用free lists来管理段空间

AUTO

这种段的管理方式也称为automatic segment- ace management.它是用位图来管理段空间,

会忽略对像的PCTUSED, FREELIST和FREELIST GROU 参数。oracle会自动管理表和索引的FREELISTS。对于

A M而言,INITIAL最小的值是三个块。

下面就详细的说说A M

传统的管理方式中。PCTUSED的设置影响着freelist的联接。如果我们想充分的利用disk。就会设一个大

大高于avg_row_len的value.相反,如果我们想提高i ert的性能,我们就要设一个低的PCTUSED,确保所

有的block有足够的空间来实现数据的更新。如果PCTUSED设置不合理,就会导致i ert性能的降低。如果

PCTUSED设置过大。使得新的数据无法在当前的块中更新,就必需去freelist中获取的别的。从而提高了

I/O的争用。如果经过5次获取都无法i ert这个数据,那oracle就会将HWM提高5块的空间。把这5个块分配

给这个I ert使用。

用A M管理方式。oracle就会根据dba_tables.avg_row_Len来调整PCTUSED的大小。从而使性能提高。使用

A M的最大的好处就是减少缓冲忙的等待。在oracle9i以前的版本中,缓冲忙的等待是最主要的问题。如

果是用单个freelist的时候。oracle会在表头用一个块来管理表中空闲的块。如果多个用户向同一个表i

ert数据,oracle会向table的freelist申请空闲的块,每次只能处理一个请求。这样就会造成等待。

由于A M使用位图来管理空闲的块。一个对像中,文件头会占三个块,其中有一个是位图信息。打个比方

,在一个表中,如果区大小是64K,那么前面16个块由第一个位图块管理,然后第17个块又是位图块,来

管理17到31个数据块。以此类推。

如果是64K/区,那么,一个位图块管理16个数据块

如果是1M/区,那么,一个位图块管理64个数据块

如果是8M/区,那么,一个位图块管理256个数据块

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics