Oracle-Mysql:dba_segments数据库对象介绍

一、dba_segments查看数据库对象所分配的物理存储空间

Oracle 逻辑结构的相关数据字典:

SELECT * FROM DBA_TABLESPACES -- 记录各个表空间的详细信息
SELECT * FROM DBA_TABLESPACE_USAGE_METRICS -- 记录各个表空间的使用状况
SELECT * FROM DBA_DATA_FILES -- 记录各个数据文件的详细信息
SELECT * FROM DBA_SEGMENTS -- 记录各个段的详细信息,与 DBA_TABLES,DBA_INDEXES,DBA_LOBS,DBA_PART_TABLES,DBA_PART_INDEXES,DBA_PART_LOBS,DBA_OBJECTS 搭配使用
SELECT * FROM DBA_LOBS    --BLOB 字段所对应的字段名称
SELECT * FROM DBA_INDEXES -- 分区索引需要通过 DBA_INDEXS 来找到对应的表名
SELECT * FROM DBA_EXTENTS -- 记录各个区间对象的详细信息 

二、dba_segments下个字段的含义

SEGMENT_TYPE:段的类型,可能是table,index,logindex,lobsegment等。
header_file:表示这个段的头在哪个数据文件里,因为段可以跨数据文件。
header_block:表示这个段的头在数据文件的第几个block里。
bytes:段的大小(目前占用的大小?)
blocks:段占用了多少个block
extents:分配了多少个extent。
initial_extent:初始分配的extent大小(以byte计)。
next_extent:下一个分配的extent大小(以byte计)。如果为空表示是自动分配。(每个extent可以有不同大小,如果设置为uniform的话,每个extent就一样大小了)
min_extents:最少分配多少个extent(以个数计)。
max_extents:最多分配多少个extent(以个数计)。
pct_increase:percent increase表示第三个或后续的extent的大小比前一个增加的百分比,如第一个extent是64K,第二个是64K,pct_increase=50%,则第三个extent是64K*1.5=96K,第四个96K*1.5=144K,依次类推。
freelists:这个字段在字典管理的表空间中才有意义。
fresslist_groups:这个字段在字典管理的表空间中才有意义。
relative_fno:这个段所在数据文件的relative fno
buffer_pool:这个段的数据将被读取到哪一个buffer pool里

三、dba_data_files,dba_segments,dba_free_space的区别

在没有drop表的时候:dba_data_files bytes = (dba_segments bytes + dba_free_space bytes)

Select sum(bytes)/1024/1024/1024 from dba_segments;

SUM(BYTES)/1024/1024/1024
-------------------------
           1.58441162

select sum(bytes)/1024/1024/1024 from dba_free_space;

SUM(BYTES)/1024/1024/1024
-------------------------
           .323669434

select sum(bytes)/1024/1024/1024 from dba_data_files;

SUM(BYTES)/1024/1024/1024
-------------------------
        1.9140625

delete表数据,对上述3个视图查询没有任何变化,满足上述相等原则.
truncate表数据,表空间一次性回收,dba_free_space增加,dba_segments减少,让满足上述相等原则.
drop表,表空间一次性回收,但dba_segment会多出个回收站,
但实际上dba_free_segment也把回收站的那部分空间计算在内了,
所以回收站的内容实际也是可以使用的部分,表面上看这个等式不成立了,
但实质上做了些改变,改为(有drop时):
dba_data_files bytes = (dba_segments bytes + dba_free_space bytes- dba_segment回收站部分)

 

你可能感兴趣的:(Oracle-Mysql:dba_segments数据库对象介绍)