oracle 表空间

物理结构



逻辑结构

数据库 -> 表空间 -> 段 -> 区 -> 块

先通过一个简单的例子,形象的展示一下上面这几个逻辑结构的关系

1、创建表空间:
SQL> create tablespace tb1 datafile '/ora/ora10g/data/tab_data1.dbf' size 100m;
Tablespace created.

2、已经看到了表空间TB1
SQL> select ts#,name from v$tablespace;

       TS# NAME
---------- ------------------------------
     0 SYSTEM
     1 UNDOTBS1
     2 SYSAUX
     4 USERS
     3 TEMP
     6 EXAMPLE
     7 TB1

3、再创建表,观察段与表空间的关系
SQL> create table status
  2  (no varchar2(5) primary key,
  3  name varchar2(10) null)
  4  tablespace tb1;

4、此时查看dba_segments,很直接的就看到上面创建的表与主键索引的段

SQL> col owner for a10;
SQL> col segment_name for a12;
SQL> col segment_type for a12;
SQL> col tablespace_name for a15;
SQL> select owner,segment_name,segment_type,tablespace_name from dba_segments
  2  where tablespace_name='TB1';

OWNER       SEGMENT_NAME  SEGMENT_TYPE TABLESPACE_NAME
---------- ------------  ------------ ----------
SYS       STATUS        TABLE          TB1
SYS       SYS_C005425   INDEX          TB1

由此可看到:
a) 表空间可包含多个段,即 表空间 -> 段
b) 段有所有者、名称、类型等属于,而且从后面的情况来看,这些属性都跟他对应的对象相同
c) 所以有时段与对象概念可互换


5、同时也可查到段所对应的对象,可以对象名称、类型、所有者与段相同

SQL> col object_type for a12;
SQL> col object_name for a12;
SQL> col object_id for a12;
SQL> col data_object_id for a12;

SQL> select object_type,object_name,object_id,data_object_id from user_objects 
where object_name in ('STATUS','SYS_C005425');

OBJECT_TYPE  OBJECT_NAME   OBJECT_ID DATA_OBJECT_ID
------------ ------------ ---------- --------------
TABLE         STATUS       52593     52593
INDEX         SYS_C005425   52594     52594

区间的定义: 磁盘在使用过程中,IO对磁盘的写不仅只有数据库,还有其他程序,所以无法保证
            所有数据地址都是连续的,所以便有了区间这个逻辑集合,它将不连续的数据地址
            用连续的区间来存储,因为区间分配的连续性是oracle所能保证的,

6、通过dba_extents可看到段与区间的关系
a) 由于只是创建的测试表,也没任何数据,空间需求很小,所以这里看到段只有一个区间
   但实际上段与区间是一对多的包含关系,但一个区间只能属于一个段

SQL> SELECT owner,segment_name,extent_id,file_id,block_id,bytes,blocks FROM DBA_EXTENTS where tablespace_name='TB1';

OWNER       SEGMENT_NA  EXTENT_ID    FILE_ID   BLOCK_ID        BYTES     BLOCKS
---------- ---------- ---------- ---------- ---------- ---------- ----------
SYS       STATUS           0      6         9        65536       8
SYS       SYS_C005425           0      6        17        65536       8

 

posted on 2013-06-18 01:48  doclaim  阅读(305)  评论(0编辑  收藏  举报