Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1891094
  • 博文数量: 606
  • 博客积分: 9991
  • 博客等级: 中将
  • 技术积分: 5725
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-17 19:07
文章分类

全部博文(606)

文章存档

2011年(10)

2010年(67)

2009年(155)

2008年(386)

分类:

2008-10-28 19:50:33

ORACLE数据库的存储结构分为逻辑存储结构和物理存储结构
逻辑结构:

数据库是数据文件以及用于处理这些数据文件的程序的集合。

oracle为数据库的所有数据分配逻数据库空间,数据库空间分配的单元是 数据块、数据区和段

  • 数据块(data block)

          数据库块也称逻辑块,它对应磁盘特定数量的物理存储空间,是一组连续的操作系统块。是ORACLE管理数据文件中存储空间的单位,为Oracle读写的基本单位,其大小可不同于操作系统的标准I/O块大小,但一般是操作系统块大小的整数倍。,数据块的大小由初始化参数DB_BLOCK_SIZE指定。

  • 数据区(Extent)

     数据区是oracle数据库分配空间的基本单位,由连续的数据块组成,它的主要作用是存储特定数据类型的数据。每一个段都是由一个或多个数据区组成。在Oracle数据库中,分配空间就是以数据区为单位的,它是表中数据增长的基本单位。一个Oracle对象包含至少一个数据区。设置一个表或索引的存储参数包含设置它的数据区大小。每个数据区只能包含来自一个数据文件的数据,因为它由连续的数据块组成。

  • 段(Segment)

     段包含表空间中一种指定类型的逻辑存储结构,段是数据区的集合,每个段都分配给特定的数据结构,存储在相同的表空间中。Oracle以数据区为单位为段分配空间,当段的数据区已满的时候,Oracle为段分配另一个数据区,段的数据区在磁盘上可能是不连续的。段和它所有的数据区都存储在一个表空间中。在表空间中,一个段包含来自多个文件的数据区,段可以跨越数据文件。

      一个Oracle数据库有4种类型的段:

  1. 数据段:对于每一个非聚集的表有一数据段,表的所有数据存放在该段。每一聚集有一数据段,聚集中每一个表的数据存储     该段中。当创建一个表时,系统自动创建一个以该表的名字命名的数据段。
  2. 索引段:每一个索引有一个索引段,存储索引数据。一旦建立索引,系统自动创建一个以该索引的名字命名的索引段。
  3. 回滚段:由DBA建立,用于临时存储要撤销的信息,这些信息用于生成一致性数据库信息、在数据库恢复时使用,回滚未提交 的事务。当一个事务开始处理时,系统为之分配回滚段,回滚段可以动态创建和撤销。系统有个默认的回滚段,其管理方式既可以是自动的,也可以是手工的。
  4. 临时段:当一个sql语句需要临时工作区时,由oracle建立。当语句执行完毕,临时段的范围退还给系统
  • 表空间

     表空间是数据库的逻辑划分,每个数据库至少有一个表空间(称作SYSTEM表空间),一个表空间只能属于一个数据库。一个表空间对应一个或多个数据文件。我们要存储的数据信息以及相关的记录,实际是存储到Oracle的数据文件当中,但是在逻辑上是将这些表和表中的数据存储到表空间中,表空间和物理的映射文件有个一对多映射关系。

总之,因为Oracle是数据文件的集合,所以理解oracle如何组织数据文件很重要,oracle正是通过表空间来完成此项工作的。

物理结构:

1、物理存储结构

1.1数据文件
数据文件用于存放所有的数据。将数据放在多个数据文件中,再将数据文件分放在不同的硬盘中,可以提高存取速度。


1.2记录文件

记录文件也称为重做日志(事务)文件。重做日志在中以循环的方式工作。有归档日志模式和非归档日志模式。


1.3参数文件
每一个和实例都有它自己唯一的init.ora文件。Init.ora文件中的值决定着数据库和实例的特性。


1.4控制文件每个数据库中至少要有一个控制文件,但是建议用户使用两个或者更多的控制文件,并存放在不同的磁盘上。控制文件是一个非常小的文件,其中存放一些与Oracle数据库所有文件相关的关键信息。Oracle系统通过控制文件保持数据库的完整性,以及决定恢复数据时使用哪些重做日志。在丢失所有数据库控制文件的情况下,Oracle提供了一个建立控制文件的命令,大多数情况下可以用来重建控制文件。

物理结构与逻辑结构关系:

逻辑存储结构主要描述ORACLE数据库的内部存储结构,物理存储结构主要描述数据库的外部存储结构
从物理上看数据库由控制文件、数据文件、重做日志文件、初始化参数文件等操作系统文件组成。
从逻辑上看数据库是由表空间组成的、表空间是最大的逻辑单位,块是最小的逻辑单位。逻辑结构包括
表空间、段、区、块他们之间的关系是:多个块组成区、多个区组成段、多个段组成表空间、多个表空间组成逻辑数据库。


表空间:是最大的逻辑单位,一个数据库由多个表空间组成、一个表空间可以包含多个数据文件但一个数据文件只能属于一个表空间。


ORACLE自动创建的表空间有SYSTEM系统表空间用来存放表空间名称、控制文件、数据字典、数据文件等信息;SYSAUX表空间是新引进的用来存储与ORACLE供给特性有关的方案对象;TEMP表空间临时表空间存放临时表和临时数据用于排序。


段:用于存储表空间中某一种特定的、具有独立存储结构的数据库对象的数据,它是由一个或多个连续的区组成。段随着数据的增加而不断变大,段的增大过程是通过增加区的个数而实现的,每个区的大小是块的整数倍。下面是段类型:


1.表段:存储表的所有数据,当用户创建表时就会在该用户默认的表空间中为该表分配一个与表名相同的表段,以便将来存储该表的所有数据,显然在一个表空间中创建了几个表在该表空间中就有几个表段。SELECT SEGMENT_NAME,TABLESPACE_NAME,BYTES,BLOCKS FROM USER_EXTENTS;查询数据字典USER_EXTENTS得到


2.表分区段:用于存储分区表的所有数据,当用户创建分区表时,就会在该用户默认的表空间中为该表的每个分区分配一个表分区段,通过将一个大表的数据分散到不同的表分区段中,就能降低I/O次数、提高性能。


3.索引段:存储索引的所有数据,当用户使用CREATE INDEX命令创建索引或在定义约束而自动创建索引时,就会在该用户的默认表空间中为该索引分配一个与索引名相同的索引段。
SELECT INDEX_NAME,TABLE_OWER,TABLE_NAME,TABLESPACE_NAME FROM USER_INDEXS;查询数据字典USER_INDEXS得到。


4.索引分区段:如果为分区表创建分区索引则会为每个分区索引分配一个索引分区段,功能与表分区段相同。


5.临时段:用于存储排序操作所产生的临时数据,临时数据首先会被暂存到排序区(PGA)中,当排序区不足以暂存这些临时数据时,则会在该用户的临时表空间中自动创建一个临时段用于暂存这些临时数据排序结束时临时段会自动消除。


6.回退段:存储数据修改之前的位置和值,利用这些信息可以回退未提交的事务,维护数据库的读一致性,并能从例程的崩溃中进行恢复。


7.撤销段:也是存储数据修改之前的位置和值。


8.二进制大对象段:用于存储LOB数据类型列中的数据如文档、图像、音频、视频数据。


区:由物理上连续存放的块组成,一个区只能属于一个数据文件通过查询DBA_EXTENTS就可以知道已分配的区,查询DBA_FREE_SPACE就可以知道表空间中的空闲区。


块:最小的数据管理单位即数据管理中输入输出的最小单位物理存储结构由控制文件、数据文件、重做日志文件组成。

物理存储结构与逻辑存储结构在操作上的一个区别是逻辑存储结构只有创建、删除的操作而物理存储结构除了创建、删除外还有一个将其移动到另一个位置的操作这样可以实现多路复用和将他们安排到不同磁盘位置并更改名称的功能了。


ORACLE 10G装完后自动创建的3个控制文件如下:
C:\oracle\product\10.2.0\oradata\orcl\control01.ctl
C:\oracle\product\10.2.0\oradata\orcl\control02.ctl
C:\oracle\product\10.2.0\oradata\orcl\control03.ctl
数据文件是实际存储插入到数据库表中的实际数据的操作系统文件,自动创建的6个表空间都有其对应的数据文件


C:\oracle\product\10.2.0\oradata\orcl\example01.dbf
C:\oracle\product\10.2.0\oradata\orcl\sysaux01.dbf
C:\oracle\product\10.2.0\oradata\orcl\system01.dbf
C:\oracle\product\10.2.0\oradata\orcl\temp01.dbf
C:\oracle\product\10.2.0\oradata\orcl\undotbs01.dbf
C:\oracle\product\10.2.0\oradata\orcl\users01.dbf
重做日志文件是当用户对数据进行修改时ORACLE实际上是先在内存中进行修改过段时间后再集中将内存中的修改结果写入到上面的数据文件中。重做日志文件就是随时保存这些修改结果为了丢失的时候恢复。ORACLE是以循环方式使用重做日志文件的所以每个数据库至少需要2个重做日志文件当第一个写满后就会写入第二个,第二个满后又会开始写第一个,以此类推。此时还可以启用自动归档功能将被覆盖的重做日志文件的内容存储到另外的归档文件中,安装完ORACLE后自动创建的3个重做日志文件:


C:\oracle\product\10.2.0\oradata\orcl\redo01.log
C:\oracle\product\10.2.0\oradata\orcl\redo02.log
C:\oracle\product\10.2.0\oradata\orcl\redo03.log

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