我这里的文章仅仅是抛一个砖头,也写的很仓促,难免可能有错误,欢迎大家继续讨论,我会继续整理相关内容并返回给大家。
大家还可以从多个方面讨论,如
1、 在实际使用中,本地管理表空间带来的好处
2、 本地管理表空间的bug,如8i中在临时,回滚中使用本地管理表空间
3、 关于本地管理表空间其他看法
……
……s
若 db_block-size 为 16k和16k以下,数据文件头是 64k 保留空间
若是32k的block size ,则是 保留 128k
/******************************************/
SQL> create tablespace test datafile 'e:test.dbf' size 10M
2 extent management local uniform size 32k;
表空间已创建。
SQL> select * from user_tablespaces where tablespace_name = 'TEST';
TABLESPACE_NAME BLOCK_SIZE INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS
------------------------------ ---------- -------------- ----------- -----------
MAX_EXTENTS PCT_INCREASE MIN_EXTLEN STATUS CONTENTS LOGGING FOR EXTENT_MAN
----------- ------------ ---------- --------- --------- --------- --- ----------
ALLOCATIO SEGMEN
--------- ------
TEST 8192 32768 32768 1
2147483645 0 32768 ONLINE PERMANENT LOGGING NO LOCAL
UNIFORM MANUAL
SQL> create table test (id number(3)) tablespace test;
表已创建。
SQL> insert into test values (1);
已创建 1 行。
SQL> commit;
提交完成。
SQL> select table_name, tablespace_name, initial_extent, next_extent
2 from user_tables where table_name ='TEST';
TABLE_NAME TABLESPACE_NAME INITIAL_EXTENT
------------------------------ ------------------------------ --------------
NEXT_EXTENT
-----------
TEST TEST 32768
32768
SQL> execute show_space('TEST');
PL/SQL 过程已成功完成。
SQL> set serverout on
SQL> execute show_space('TEST');
Free Blocks.............................1
Total Blocks............................4
Total Bytes.............................32768
Unused Blocks...........................2
Unused Bytes............................16384
Last Used Ext FileId....................15
Last Used Ext BlockId...................9
Last Used Block.........................2
PL/SQL 过程已成功完成。
文件头好像只用了32k
为什么total block是4?
而且插入数据可以发现,第一个block不会存放数据。
total -unused =2,说明使用了2个block,freelist中只有一个。另一个不会存放数据,当其他三个block写满,会重新分配新的block。
从Last Used Block.........................2也可以看出,是从第二个block开始使用的。
我认为,第一个block存放的是表头消息
/*****************************************/
uniform size 32k; -------- extent 都是 32k
所以你的这个表空间的extent 大小是 32k
32k/8k = 4
total = 4
Last Used Ext BlockId...................9
该表的 extent 的起始 block_id ,为9 ,前面 1---8 为数据文件头
Last Used Block.........................2
在该表的最近分配的extent 中使用到了第二个block,第一个block is segment header
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/18921899/viewspace-1016986/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/18921899/viewspace-1016986/