Oracle体系结构

        Oracle体系结构 主要用来分析数据库的组成、工作过程与原理,以及数据在数据库中的组织与管理机制。Oracle数据库是一个逻辑概念,而不是物理概念上安装了Oracle数据库管理系统的服务器。

  在Oracle数据库管理系统中有3个重要的概念需要理解,那就是实例(Instance)、数据库(Database)和数据库服务器(Database Server)。其中,实例是指一组Oracle后台进程以及在服务器中分配的共享内存区域;数据库是由基于磁盘的数据文件、控制文件、日志文件、参数文件和归档日志文件等组成的物理文件集合;数据库服务器是指管理数据库的各种软件工具(比如,sqlplus、OEM等)和实例及数据库三个部分。从实例与数据库之间的辩证关系来讲,实例用于管理和控制数据库;而数据库为实例提供数据。一个数据库可以被多个实例装载和打开;而一个实例在其生存期内只能装载和打开一个数据库。

逻辑存储结构

  Oracle的逻辑结构是一种层次结构。主要由:表空间、段、区和数据块等概念组成。逻辑结构是面向用户的,用户使用Oracle开发应用程序使用的就是逻辑结构。数据库存储层次结构及其构成关系,结构对象也从数据块到表空间形成了不同层次的粒度关系。

        从上图可以看到,Oracle数据库由多个表空间组成(数据库自身也属于逻辑概念),而表空间又由多个段组成,段由多个数据区组成,数据区又由多个数据块组成。 

数据块

  数据块是Oracle逻辑存储结构中最小的逻辑单位,也是执行数据库输入输出操作的最小存储单位。数据块中可以存放表数据、索引数据和簇数据,无论存放那种类型的数据,其结构都是相同的。数据块有数据头、表目录、行目录、空余空间和行数据组成。

 

        块头、表目录、行目录三部分为头部信息区,头部信息区不存放数据,它存放整个块的引导信息,引导系统读取系统数据。若头部信息遭到破坏,则Oracle系统将无法读取此数据块数据。空余空间和行数据共同构成块的存储区,用于存储数据记录。

头部信息区:

  块头存放块的基本信息,块的物理地址、所属段的类型等;表目录存放表相关的信息;行目录存放行信息。

存储区:

  空余空间是一块未被使用的区域,该区域用于新行的插入以及已经存在的行的更新;行数据用于存放表数据和索引数据。

数据区(Extent)

  数据区(也可称作数据扩展区)是由一组连续的Oracle数据块所构成的Oracle存储结构,一个或多个数据块组成一个数据区,一个或多个数据区再组成一个段(Segment)。当一个段中的所有空间被使用完后,Oracle系统将自动为该段分配一个新的数据区,这也正符合Extent这个单词所具有的“扩展”的含义,可见数据区是Oracle存储分配的最小单位,Oracle就以数据区为单位进行存储空间的扩展。

  使用数据区的目的是用来保存特定数据类型的数据,也是表中数据增长的基本单位。在Oracle数据库中,分配存储空间就是以数据区为单位的。一个Oracle对象包含至少一个数据区。设置一个表或索引的存储参数包含设置它的数据区大小。

段(Segment)

  段由一个或多个数据区构成的,它不是存储空间的分配单位,而是一个独立的逻辑存储结构,它用于存储表、索引或簇等占用空间的数据对象,Oracle也把这种占用空间的数据对象统一称为段。一个段只属于一个特定的数据对象,每当创建一个具有独立段的数据对象时,Oracle将为它创建一个段。

  段是为特定的数据对象(如表、索引、回滚等)分配的一系列数据区。段内包含的数据区可以不连续,而且可以跨越多个文件,使用段的目的是用来保存特定对象。一个Oracle数据库通常有四种类型的段。

  1. 数据段:数据段中保存的是表中的数据记录。在创建数据表时,Oracle系统将为表创建数据段。当表中的数据量增大时,数据段的大小自然也随着变大,数据的增大过程是通过向其添加新的数据区来实现的。当创建一个表时,系统自动创建一个以该表的名字命名的数据段。
  2. 索引段:索引段中包含用于提高系统性能的索引。一旦建立索引,系统自动创建一个以该索引的名字命名的索引段。
  3. 回滚段:也叫撤销段,回滚段保存了回滚条目,Oracle将修改前的旧值保存在回滚条目中。利用这些信息,可以撤销未提交的操作,以便为数据库提供读入一致性和回滚未提交的事务,即用来回滚事务的数据空间。
  4. 临时段:当执行创建索引、查询等操作时,Oracle可能会使用一些临时存储空间,用于暂时性的保存解析过的查询语句以及在排序过程中产生的临时数据。Oracle系统将在专门用于存储临时数据的表空间中为操作分配临时段。

表空间(TableSpace)

  Oracle使用表空间将相关的逻辑结构(如段、数据区)组合在一起,表空间是数据库最大的逻辑划分区域,通常用来存放数据表、索引、回滚段等数据对象,任何数据对象在创建时都必须被指定存储在某个表空间中。表空间(属逻辑存储结构)与数据文件(属物理存储结构)相对应,一个表空间由一个或多个数据文件组成,一个数据文件只能属于一个表空间;Oracle数据的存储空间在逻辑上表现为表空间,而在物理上表现为数据文件。表空间类似于操作系统中的文件夹,而数据文件就相当于文件夹中的文件。每个数据库至少有一个表空间(SYSTEM表空间),表空间的大小等于所有从属于它的数据文件大小的总和。

  在创建数据库时,Oracle会自动创建多个默认的表空间,这些表空间除了管理用于管理用户数据的表空间之外,还包括用于管理Oracle系统内部数据的表空间。Oracle11g默认创建的主要表空间:

  SYSTEM表空间:存放Oracle系统内部表和数据字典的数据。Oracle本身不赞成将用户创建的表、索引等存放到系统表空间。表空间中的数据文件不是固定不变的,可以根据需要向表空间中追加新的数据文件。

  SYSAUX表空间:此表空间是Oracle 11g新增的表空间,是随着数据库的创建而创建,它充当SYSTEM的辅助表空间,降低SYSTEM表空间的负荷,主要存储数据字典以外的其他数据对象。此表空间一般不存储用户数据,由Oracle系统内部自动维护。

  UNDO表空间:撤销表空间,用于存储撤销信息的表空间。

  USERS表空间:用户表空间,Oracle建议用户使用的表空间,可以在这个表空间上创建各种数据对象(创建表、索引、用户等数据对象)。(除了Oracle系统默认创建的表空间外,用户可以根据应用系统的实际情况及其所要存放的对象类型创建多个自定义的表空间,以区分用户数据与系统数据。不同的数据应存放在不同的表空间,而不同的表空间的文件应该存放在不同的盘上,从而减少IO冲突,提高应用系统的操作性能)

物理存储结构

  物理存储结构描述了Oracle数据库中数据在操作系统中的组织和管理,它是指存储在磁盘上的物理文件,包括数据文件、控制文件、重做日志文件、初始化参数文件、跟踪文件、归档文件等。

       数据文件

  数据文件是用于保存用户应用程序数据和Oracle系统内部数据的文件,这些文件在操作系统中就是普通的操作系统文件,Oracle在创建表空间的同时会创建数据文件。Oracle数据库在逻辑上由表空间组成,每个表空间可以包含一个或多个数据文件,一个数据文件只能隶属于一个表空间。

       控制文件

  控制文件是一个二进制文件,它记录了数据库的物理结构,其中主要包含数据库名、数据文件与日志文件的名字和位置、数据库建立日期等信息。控制文件一般在Oracle系统安装时或创建数据库时自动创建,控制文件所存放的路径由服务器参数文件spfileorcl.ora的control_files参数值来指定。

      由于控制文件存放有数据文件、日志文件等的相关信息,因此,Oracle实例在启动时必须访问控制文件。如果控制文件正常,实例才能加载并打开数据库;但若控制文件中记录了错误的信息,或者实例无法找到一个可用的控制文件,则实例无法正常启动。

       日志文件

  日志文件的主要功能是记录对数据所作的修改,对数据库所作的修改几乎都记录在日志文件中。在出现问题时,可以通过日志文件得到原始数据,从而保障不丢失已有操作成果。Oracle的日志文件包括重做日志文件(Redo Log File)和归档日志文件(Archive Log File),它们是Oracle系统的主要文件之一,尤其是重做日志文件,它是Oracle数据库系统正常运行所不可或缺的。

       服务器参数文件

  服务器参数文件SPFILE(Server parameter File)是二进制文件,用来记录了Oracle数据库的基本参数信息(如,数据库名、控制文件所在路径、日志缓冲大小等)。数据库实例在启动之前,Oracle系统首先会读取SPFILE参数文件中设置的这些参数,并根据这些初始化参数来配置和启动实例。比如,设置标准数据块的大小(即参数db_block_size的值)、设置日志缓冲区的大小(即参数log_buffer的值)等等,所以SPFILE参数文件非常重要。服务器参数文件在安装Oracle数据库系统时由系统自动创建,文件的名称为SPFILEsid.ora,sid为所创建的数据库实例名。

      与早期版本的初始化参数文件INITsid.ora不同的是,SPFILE中的参数由Oracle系统自动维护,如果要对某些参数进行修改,则尽可能不要直接对SPFILE进行编辑,最好通过企业管理器(OEM)或ALTER SYSTEM命令来修改,所修改过的参数会自动写到SPFILE中。

       密码文件、警告文件和跟踪文件

  Oracle系统运行时,除了必须的数据文件、控制文件、日志文件及服务器参数文件外,还需要一些辅助文件,如,密码文件、警告文件和跟踪文件(一般称之为外部文件)。

数据字典

Oracle数据字典的名称由前缀和后缀组成,使用下划线“_”连接,其代表的含义如下:

  1. DBA_:包含数据库实例的所有对象信息。
  2. V$_:当前实例的动态视图,包含系统管理和系统优化等所使用的视图。
  3.  USER_:记录用户的对象信息。
  4. GV_:分布式环境下所有实例的动态视图,包含系统管理和系统优化使用的视图。
  5.  ALL_:记录用户的对象信息机被授权访问的对象信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值