一、Oracle体系结构

浅析理解Oracle数据库体系结构和存储结构_第1张图片

个人比喻帮助理解:类似于图书馆,去图书馆的客户(用户进程和服务进程等)需要调取资料,求助于图书管理员(实例)进入图书分区(数据库)进行资料查找。【如果比喻不当,欢迎指正,尽请谅解】

-


第一部分是实例部分(为用户提供服务,管理数据库):

浅析理解Oracle数据库体系结构和存储结构_第2张图片

主要理解分成两个主要部分:

(1)内存结构:
浅析理解Oracle数据库体系结构和存储结构_第3张图片
(2)后台进程:与数据库进行交互

-

第二部分是数据库部分物理结构:(为实例提供服务,处理数据文件)

  • 主要文件:数据文件,控制文件,重做日志文件
  • 其他文件:归档日志文件,参数文件,口令文件等

二、Oracle数据库的存储结构

Oracle数据库的存储结构分为物理结构和逻辑结构,这两种存储结构既相互独立,又相互联系。

-

浅析理解Oracle数据库体系结构和存储结构_第4张图片

物理结构包括有:

主要文件:数据文件,重做日志文件,控制文件

其他文件:参数文件,归档日志文件

-

主要文件:

  • 数据文件:包含数据库的用户或应用程序数据以及元数据和数据字典

  • 重做日志文件:用于进行数据库的实例恢复。如果数据库服务器发生崩溃,但未丢失任何数据文件,那么实例便可使用这些文件中的信息恢复数据库。

  • 控制文件:包含与数据库本身相关的数据,即物理数据库结构信息。这些文件对数据库至关重要。没有这些文件,就无法打开数据文件以访问数据库中的数据。

-

其他文件:

  • 参数文件:用于定义实例启动时的配置
    参数文件( Parameter File)也被称为初始化参数文件,用于存储SGA、可选的 Oracle特性和后台进程的配置参数。当数据库启动,并在创建例程或读取控制文件之前,会先按其中的参数进行例程的配置。
    1)遗留的参数文件 init.ora:可以转换成 SPFILE,需要手工修改
    文件名约定默认为
    $SORACLE_ HOME/dbs/init$ORACLE_SID.ora
    2)服务器参数文件目前使用,通过命令修改
    文件名约定默认为:
    $SORACLE_HOME/dbs/spfile#$ORACLE_SID.ora

注意:建议不要修改服务器参数文件存储的默认位置,否则必须要告诉 Oracle到哪里去找这个文件。

  • 口令文件:允许 sysdba、 sysoper和 Issas远程连接到实例并执行管理任务
  • 归档日志文件:使用这些文件和数据库备份可以恢复丢失的数据文件。也就是说,归档日志能够恢复还原的数据文件

逻辑结构包括有:表空间,数据块,区,段等

浅析理解Oracle数据库体系结构和存储结构_第5张图片

从大到小的顺序依次为:数据库—>表空间—>段—>区—>Oracle数据块

  • :构成表空间的逻辑存储结构,段由一组区组成。按照段所存储数据的特征,将段分为四种类型,即数据段,索引段,回退段和临时段
  • :区为段分配空间,它由连续的数据块组成。当段中的所有空间已完全使用时,系统自动为该段分配一个新区。区不能跨数据文件存在,只能存在于一个数据段中。
  • :数据块是Oracle服务器所能分配,读取或者写入的最小存储单元。Oracle 服务器以数据块为单位管理数据文件的存储空间。
  • 模式:模式是数据库用户拥有的数据库对象的集合。模式对象包括表,视图,索引,同义词,序列,过程和程序包等。

表空间

  • 是数据库中最大的逻辑单位, SYSTEM和SYSAUX表空间是在创建数据库时创建的必须存在的表空间,还会有TEMP, USERS等
  • 每个表空间是由一个或多个数据文件组成的,一个数据文件只能与一个表空间相关联
  • 表空间的大小等于构成该表空间的所有数据文件大小之和
    浅析理解Oracle数据库体系结构和存储结构_第6张图片

安装完 Oracle后自动创建的表空间主要包括:

  • SYSTEM系统表空间,存放关于表空间名称、控制文件、数据文件等管理信息,它属于sys、 system模式。不能删除或重命名。
  • SYSAUX辅助系统表空间,用于减少系统表空间的负荷,提高效率
  • TEMP临时表空间,存放临时表和临时数据,用于排序
  • USERS用户表空间,存放永久性用户对象及私有信息,也称数据表空间。注意:每一个数据库都应该有一个用户表空间,以便在创建用户时分配给用户,否则用户的数据将会使用SYSTEM表空间。
  • UNDO重做表空间,用来帮助回退未提交的事物数据

-

举例:

浅析理解Oracle数据库体系结构和存储结构_第7张图片
上面的图有:

  • 一个表空间
  • 两个数据文件:/do1/user_data01.dbf 和 /do1/user_data02.dbf
  • 段有三个:两个数据段【×××和T2】,一个索引段【I1】
  • 四个区
  • 16个块
    PS:段是可以跨数据文件的。区是不可以跨数据文件的。