说明:大家知道ORACLE表空间的最小分配单元是区,当进行文件空间划分的时候每次增加的大小都是按区来进行的,且ORACLE在创建表空间的时候,关于EXTENT MANAGEMENT的管理会有两个选项:1、LOCAL AUTOALLOCATE(本地自动管理)
2、 LOCAL UNIFORM SIZE(本地统一大小);
问题:对于LOCAL UNIFORM SIZE的方式进行表空间的每次划分磁盘的时候都是固定的大小;但是对于LOCAL AUTOALLOCATE方式的表空间每次数据库对象需要扩展区的时候,大小又是怎样的了?
测试:刚好在数据库的系统中存在着一个大小为577G的存储对象,通过可以数据字典dba_extents可以查看整个对象的区分配情况,dba_extents的结构如下
OWNER
SEGMENT_NAME
PARTITION_NAME
SEGMENT_TYPE
TABLESPACE_NAME
EXTENT_ID ------------分配区的ID,有先后顺序
FILE_ID
BLOCK_ID
BYTES
BLOCKS ------------分配块的数量,每个block大小8KB
RELATIVE_FNO
实验脚本如下:select EXTENT_ID,BLOCKS from dba_extents where segment_name='MKPF';
实验结果:通过观察几个表皆发现以下规律:
EXTENT_ID BLOCKS SIZE
0-15(16个) 8 64K
16-78(63个) 128 1M
79-198(120个) 1024 8M
199--- 8192 64M
毕竟还是测试,最终的还是得找相应的官方文档(matelink上获取),具体如下:
16 extents of
64K
63 extents of
1m
120 extents of
8m
Additional extents are
64m
很高兴,通过测试证明猜测是正确的;
..........................................................................................................................................................................................................................
本文作者:JOHN
ORACLE技术博客:ORACLE
猎人笔记 数据库技术群:367875324 (请备注ORACLE管理 )
...........................................................................................................................................................................................................................