版本为hp-ux平台的10.2.0.2
数据库存在表空间:
SQL> select tablespace_name, extent_management, segment_space_management from dba_tablespaces;
TABLESPACE_NAME EXTENT_MANAGEMENT SEGMENT_SPAC
------------------------------------------------------------ -------------------- ------------
SYSTEM LOCAL MANUAL
UNDOTBS1 LOCAL MANUAL
SYSAUX LOCAL AUTO
TEMP LOCAL MANUAL
TEST LOCAL MANUAL
用用户test在TEST表空间建一个表:
SQL> create table t(id number) tablespace test;
Table created.
查看extent分布情况:
SQL> select extent_id, file_id, block_id, blocks, bytes/1024 from dba_extents where segment_name='T';
EXTENT_ID FILE_ID BLOCK_ID BLOCKS BYTES/1024
---------- ---------- ---------- ---------- ----------
0 6 265 8 64
然后手动分配extent:
SQL> alter table t allocate extent (size 1m);
Table altered.
再次查看extent分布情况:
SQL> /
EXTENT_ID FILE_ID BLOCK_ID BLOCKS BYTES/1024
---------- ---------- ---------- ---------- ----------
16 6 393 128 1024
15 6 385 8 64
14 6 377 8 64
13 6 369 8 64
12 6 361 8 64
11 6 353 8 64
10 6 345 8 64
9 6 337 8 64
8 6 329 8 64
7 6 321 8 64
6 6 313 8 64
EXTENT_ID FILE_ID BLOCK_ID BLOCKS BYTES/1024
---------- ---------- ---------- ---------- ----------
5 6 305 8 64
4 6 297 8 64
3 6 289 8 64
2 6 281 8 64
1 6 273 8 64
0 6 265 8 64
17 rows selected.
为什么分配这么多extent?1到15的都是64K的,只有最后一个是1m,正是我分配的大小,中间这些是怎么多出来的?
db_block_size=8k,TEST表空间上只有这一个表
而在9204上同样的案例是:
SQL> select extent_id, file_id, block_id, blocks, bytes/1024 from dba_extents where segment_name='T';
EXTENT_ID FILE_ID BLOCK_ID BLOCKS BYTES/1024
---------- ---------- ---------- ---------- ----------
0 4 9 8 64
1 4 137 128 1024
高手解答一下