TABLE &SEGMENT RELATIONSHIP:
一个表可以对应一个或者多个段,最简单的情况是一个表对应一个段。一般情况下创建一个表也就是创建一个表段,下面包含区,区下面又划分为块。这是一般的存储结构。也有例外情况。如:
会话1:
新建用户
SQL> create user user1 identified by user1;
User created.
SQL> grant connect,resource to user1;
Grant succeeded.
SQL> conn user1/user1;
Connected.
在新用户下查看段情况
SQL> select segment_name,segment_type from user_segments;
no rows selected
SQL> create table t (x int primary key,y clob,z blob);
Table created.
当创建完第一个表后在看一下段使用情况
SQL> col segment_name format a30
SQL> col segment_type format a10
SQL> select segment_name,segment_type from user_segments;
SEGMENT_NAME SEGMENT_TY
------------------------------ ----------
SYS_C006061 INDEX
SYS_IL0000053473C00003$$ LOBINDEX
SYS_LOB0000053473C00003$$ LOBSEGMENT
SYS_IL0000053473C00002$$ LOBINDEX
SYS_LOB0000053473C00002$$ LOBSEGMENT
T TABLE
6 rows selected.
SQL>
说明:在这里创建了一个表,但是是这个表不仅仅是对应一个段而是多个。表自己创建了一个段,主键索引创建了一个索引段,每个LOB列分别创建两个段,一个用来存放大对象所指的实际数据块,一个用来组织这些数据块。
LOB存储在LOGSEGMENT块中,LOGINDEX用来跟踪这些块在那里
如果创建一个空表什么也不加,没有主键,约束等。如:
SQL> create table user1(id int,name varchar2(50));
Table created.
SQL> select segment_name,segment_type from user_segments;
SEGMENT_NAME SEGMENT_TY
------------------------------ ----------
USER1 TABLE 【这里就是一个表对应一个段的情况】
SYS_C006061 INDEX
SYS_IL0000053473C00003$$ LOBINDEX
SYS_LOB0000053473C00003$$ LOBSEGMENT
SYS_IL0000053473C00002$$ LOBINDEX
SYS_LOB0000053473C00002$$ LOBSEGMENT
T TABLE
7 rows selected.