ITPub博客

首页 > 数据库 > Oracle > 本地管理表空间(6)

本地管理表空间(6)

原创 Oracle 作者:jss001 时间:2009-03-12 19:22:53 0 删除 编辑
六、其它留给大家讨论的地方
我这里的文章仅仅是抛一个砖头,也写的很仓促,难免可能有错误,欢迎大家继续讨论,我会继续整理相关内容并返回给大家。
大家还可以从多个方面讨论,如
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

[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/18921899/viewspace-1016986/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: EXPLAIN结果含义
请登录后发表评论 登录
全部评论
  • 博文量
    306
  • 访问量
    871796