oracle数据库的存储结构

☆数据库----存储数据的容器
 数据库的主要功能是保存数据。
 数据库的存储结构---数据库存储数据的方式

☆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每隔一段时间才会将数据操作修改的结果成批写回数据文件中,但是数据修改操作所生成的重做记录是随时被写入重做日志文件的。

你可能感兴趣的:(oracle,oracle,数据库,存储,system,table,sql)