2012年(11)
分类: Oracle
2012-10-25 16:35:23
oracle的逻辑结构由一个或多个的表空间(tablespace)组成
一个表空间由一个或多个的段(segment)组成
一个段由一个或多个的范围(extent)组成
一个范围由一个或多个的数据库块(database Block)组成
一个数据库块由一个或多个的物理块(OS Block)组成
1.数据库块:
①数据块是Oracle逻辑分配空间的最底层,又称逻辑块,Oracle块或页
是使用和分配空间的最小单元,也可以说是使用的最小I/O单元
一个数据库块与磁盘上指定的物理空间大小一致
一个数据库块由一个或多个物理块组成,大小由db_block_size决定
②数据块控制空间管理参数:
PCTFREE和PCTUSED。可以用来控制数据块中插入和更新数据的空闲空间的大小。
说明:这两个参数只能在创建、修改表和聚簇(数据段)时指定。
在创建、修改(索引段)时,只能用PCTFREE参数。
PCTFREE:设置数据块为以后更新对象而保持的空间的百分比
PCTUSED:当数据块中使用空间达到PCTUSED时,不能插入数据,只能修改和删除
PCTFREE及PCTUSED的选择:
l 经常做查询(select)的表,应使PCTFREE小些,尽量减少存储空间浪费。
l 经常做插入(insert)的表,应使PCTUSED大一些。
l 经常做更新(update)的表,应使PCTFREE大一些,给更新留出更大的空间,减少行移动。
经常做插入的表使用实例:
create table stu(id varchar2(20),name varchar2(20));
pctfree 10
pctused 90 –使pctused大些
经常做查询的表的使用实例:
create table auth(id NUMBER(10) not null,desc varchar2(20))
pctfree 10
pctused 40
2.范围(extent)
①范围是存储空间逻辑分配的基本单元,一个范围由一组数据块组成
范围是由段分配的,分配的第一个范围叫初始范围,以后的叫增量范围
②范围分配控制(存储参数字句storage)
每个段在定义时有许多参数来控制区的分配:
INITIAL:分配给段的第一个范围的字节数,缺省为5个数据块
NEXT:分配给下一个增量范围的字节数,缺省为5个数据块
MAXEXTENTS:最大扩展次数
PCTINCREASE:每个增量范围都在最新分配的增量范围上增长这个百分数,建表时通常设置为0,表空间通常设置为1%。
③范围分配方式
初始创建时,分配INITIAL指定大小区域
空间不够时,按照NEXT大小分配区域
再不够时,按NEXT+NEXT*PCTINCREASE大小分配区域
④范围可以对下面实体设置存储参数:表、表空间、索引、回滚段
3.段(segment)
①段是表空间中指定类型的逻辑存储结构,他由一个或多个范围组成,段将占用并增长表空间,Oracle中有数据段、索引段、临时段、回滚段和自举段(包含打开数据库时要装入的数据字典表)
执行建表命令时,系统将自动创建一个段,如果没有指定存储参数字句storage,则系统会用相应表空间的storage。
创建表空间实例:
create tablespace abc datafile ‘c:/a.dbf’ size 200M default storage(inatial 50K next 50k minextents 1 maxextents 20 pctincrease 1)