Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103109
  • 博文数量: 25
  • 博客积分: 1724
  • 博客等级: 上尉
  • 技术积分: 260
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-09 10:55
文章分类
文章存档

2014年(1)

2010年(1)

2008年(23)

分类: Oracle

2008-06-23 09:20:49

上一节了解到了ORACLE的存储结构,这节讲一讲块的大小与数据存放之间的关系。

大家都知道了在ORACLE环境中,所有的对象都是存放在块中,这个块大小与存放的记录之间到底存在怎样的关系呢?

做一个实验看看:

创建一个表空间test

create tablespace test datafile '/oracle/oradata/test.dbf' size 100m;

创建一个用户

create user test identified by test default tablespace test;

创建一个表

create table test.t1 (a1 number,a2 varchar2(100));

检查段,可以发现在这个视图中出现了名称为T的段,段类型为TABLE,这个段里面分配了1个区,其中包含8个块,大小为64K字节。

select segment_name,blocks,extents,bytes,segment_type,tablespace_name from dba_segments where owner='TEST';

SEGMENT_NAME     BLOCKS    EXTENTS      BYTES SEGMENT_TYPE       TABLESPACE_NAME

---------- ---------- ---------- ---------- ------------------ ----------
T                   8          1      65536 TABLE              TEST

检查区,可以发现在这个视图中出现了一个区,区号为0,包含8个块,大小为64K字节。

select segment_name,segment_type,extent_id,blocks,bytes from dba_extents where owner='TEST';

SEGMENT_NAME SEGMENT_TYPE        EXTENT_ID     BLOCKS      BYTES
---------- ------------------ ---------- ---------- ----------
T          TABLE                       0          8      65536      

检查块,可以发现这里没有载入到内存的块,由此断定,在数据未写入的时候,内存中并没有存放数据的块。

select file#,block#,class#,status,xnc,objd from v$bh where ts#=12;

 未选定行

插入10行数据,进行测试。

SQL> declare
  2  i number
  3  ;
  4  begin
  5  for i in 1..10 loop
  6  execute immediate 'insert into test.t values (:x,:y)' using i,i;
  7  end loop;
  8  end;
  9  /

PL/SQL 过程已成功完成。

再次查看v$bh视图,检查内存中是否使用到了块。

select file#,block#,class#,status,xnc,objd from v$bh where ts#=12;

     FILE#     BLOCK#     CLASS# STATU        XNC       OBJD
---------- ---------- ---------- ----- ---------- ----------
         1      28089          4 xcur           0      11038
         1      28090          1 xcur           0      11038

哈哈,果然出现了数据,说明在数据插入的表的时候在内存中已经载入了分配的块,同时在这些块中写入了数据,这里占用了两个块,块号分别为28089,28090,其中我们可以根据CLASS#来判断出他们属于不同类型。

 

 

阅读(1621) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~