☆数据库----存储数据的容器
数据库的主要功能是保存数据。
数据库的存储结构---数据库存储数据的方式
☆oracle数据库的存储结构:
逻辑存储结构:oracle内部的组织和管理数据的方式
物理存储结构:oracle外部(操作系统)组织和管理数据的方式
oracle对逻辑存储结构和物理存储结构的管理是分别进行的。
☆逻辑存储结构:
oracle在逻辑上将保存的数据划分为一个个小单元来进行存储和维护,更高一级的逻辑存储结构都是由这些基本的小单元组成的。
逻辑结构类型:从小到大 快-->区-->段-->表空间
快:Oracle用来管理存储空间的最基本单元,也是最小的逻辑存储结构。
Oracle数据库在进行输入输出时,都是以快为单位进行逻辑读写操作的。
快---->操作系统 快的 整数倍(1、2、4等)
oracle快的大小在数据库创建的时候决定的,以后不能修改。
区:比快高一级的逻辑存储结构 由连续的快组成
oracle在进行存储空间的分配和回收是以区为基本单位的
段:多个区组成 这些区可以是连续的,也可以是不连续的。当用户在数据库中创建各种具有实际存储结构的对象时(保存有数据的对象),比如表、索引等,Oracle将为这些对象创建“段”。 一般一个对象只拥有一个段
表空间:最高级的逻辑存储结构 每个数据库都是由一个或多个表空间组成,在创建数据库时会自动创建一个默认的SYSTEM表空间。
通过使用表空间---Oracle将所有相关的逻辑结构和对象组合在一起。
逻辑结构关系:
块--->一张张白纸 区--->白纸组成的本子 段--->多个本子放到一个文件袋中
表空间--->文件柜(存放多个文件袋)
☆ 块的管理 : 块的可用存储空间进行管理
块结构:
块的头部信息区
快头部:包含块的一般属性信息 如块的物理地址、块所属的段的类型
表目录:如果快中存储的数据是表数据 则在表目录中保存这个表的相关信息
行目录:行记录的相关信息 如ROWID
块的存储区:
空闲空间 行空间
块的存储空间管理:
PCTFREE参数:指定块中必须保留的最小空闲空间比例。当块中的空闲存储空间减少到PCTFREE所设置的比例后,Oracle将块标记为不可用状态
PCTUSED参数:制定一个百分比,当块中已经使用的存储空间降低到这个百分比只下时,这个块才被重新标记为可用状态。
这两个参数适用于表空间和段。
☆ 区的管理:oracle利用区进行存储空间分配的工作机制
在创建具有独立段结构的数据库对象时,比如创建表时,Oracle将为表创建一个数据段,并为数据段分配一个‘初始区’。
STORAGE:后续区的分配方式
也可以在创建表空间的时候--为表空间设置一个默认的STORAGE:DEFAULT STORAGE
本地管理方式表空间 自动 位图
字典管理方式表空间 手动 可用快列表
用户能够通过执行下面的命令来回收表、索引等对象中未使用的区:
alter table table_name deallocate unused;
☆ 段的管理:独立的逻辑存储结构
一个段只属于一个特定的数据库对象(表、索引等)。每当创建一个具有独立段的数据库对象时,Oracle将为它创建一个段。在创建段时,可以为它指定PCTFREE、PCTUSED等参数来控制其中的快的存储空间管理方式,也可以为它指定INITIAL、NEXT、PCTINCREASE等存储参数,以指定其中区的分配方式。如果没有为段指定这些参数,段将自动继承表空间的相应参数。
不同类型的数据库对象拥有不同类型的段:
段的类型:
数据段:保存表中的记录
索引段:索引中的索引条目
临时段:在执行查询等操作时,Oracle可能会需要使用到一些临时存储空间,用于临时保存解析过的查询语句以及在排序过程中产生的临时数据。
在执行下面几种类型的算SQl语句时,Oracle都会需要用到临时段:
create index
select .....order by
select distinct
select ......group by
select ......union
.......
如果经常需要执行上面类型的语句,建议调整SORT_AREA_SIZE初始化参数类增大排序区,使排序操作尽量能在内存中完成,提高性能
回退段:
☆表空间:oracle数据库是由一个或多个表空间组成 SYSTEM表空间
特殊类型的表空间:
除了用于存储用户数据的普通表空间外,在一个数据库中还可能会存在三种特殊类型的表空间:SYSTEM表空间、撤销表空间、临时表空间
SYSTEM表空间:一个默认的表空间
SYSTEM表空间中保存的信息:
* 数据库数据字典(数据字典是一组保存数据库自身信息的内部系统表和视图,及用于Oracle内部使用的其他一些对象);
* 存储所有PL/SQL程序的源代码和解析代码,包括存储过程和函数、包、数据库触发器等。在需要保存大量的PL/SQL程序的数据库中,应当设置足够大的SYSTEM表空间
* 存储数据库对象(表、视图、序列)的定义。
撤销表空间:自动撤销管理方式下 撤销段
每个实例最多只能使用一个撤销表空间
临时表空间:存储SQL执行过程中产生的临时数据
表空间的存储管理方式:各种存储参数的设置实际上都是针对段的,但是Oracle仍然建议尽量在表空间级对存储参数进行设置。
oracle物理存储结构
从整体上看,Oracle的数据逻辑上存储在表空间中,而物理上存储在表空间所对应的数据文件中。
Oracle数据库逻辑上由一个或多个表空间组成,每个表空间在物理上由一个或多个数据文件组成。
数据库物理存储结构一共包括如下三种类型的物理文件:
* 数据文件
* 控制文件 数据库的基本信息 至少一个 告诉数据库到哪里找到数据文件和重做日志文件等。对数据库的成功启动和正常运行是很重要的
* 重做日志文件 至少两个 Oracle以循环方式来使用日志文件
在Oracle中,用户对数据库所做的所有修改实际上都是在内存中进行的,Oracle每隔一段时间才会将数据操作修改的结果成批写回数据文件中,但是数据修改操作所生成的重做记录是随时被写入重做日志文件的。