Chinaunix首页 | 论坛 | 博客
  • 博客访问: 97488
  • 博文数量: 11
  • 博客积分: 271
  • 博客等级: 二等列兵
  • 技术积分: 135
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-23 16:34
文章分类
文章存档

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决定

 

②数据块控制空间管理参数:

PCTFREEPCTUSED。可以用来控制数据块中插入和更新数据的空闲空间的大小。

说明:这两个参数只能在创建、修改表和聚簇(数据段)时指定。

在创建、修改(索引段)时,只能用PCTFREE参数。

PCTFREE:设置数据块为以后更新对象而保持的空间的百分比

PCTUSED:当数据块中使用空间达到PCTUSED时,不能插入数据,只能修改和删除

PCTFREEPCTUSED的选择:

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)

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