• 1. 1第2章 Oracle数据库体系结构 数据库的体系结构是从某一角度来分析数据库的组成和工作过程,以及数据库如何管理和组织数据。因此,在开始对Oracle进行操作之前,用户还需要理解Oracle数据库的体系结构。了解Oracle的体系结构不仅可以使用户对Oracle数据库有一个从外到内的整体认识,而且还可以对以后的具体操作具有指导意义。特别是对Oracle的初学者,对Oracle体系结构的掌握将直接影响到以后的学习。
  • 2. 2本章学习目标: 理解什么是Oracle的物理存储结构,以及其组成 理解Oracle体系的逻辑存储结构 理解Oracle体系的逻辑存储结构与物理结构的关系 了解Oracle体系的内存管理方式 了解什么是数据库实例 了解数据库实例的主要后台进程的作用 理解Oracle数据库中数据字典的作用
  • 3. 32.1 物理存储结构 物理存储结构是指从物理角度分析数据库的构成,即Oracle数据库创建后所使用的操作系统文件。从物理存储结构上分析:每一个Oracle数据库是主要由三种类型的文件组成:数据文件、日志文件和控制文件,另外还包括一些参数文件。其中:数据文件的扩展名为.DBF;日志文件的扩展名为.LOG;控制文件的扩展名为.CTL。
  • 4. 42.2.1 数据文件 数据文件(Data File)用于存储数据库数据的文件,如表中的记录,索引,数据字典信息等都存储于数据文件中。在存取数据时,Oracle数据库系统首先从数据文件中读取数据,并存储在内存中的数据缓冲区中。当用户查询数据时,如果所要查询的数据不在数据缓冲区中,则这时Oracle数据库进行启动相应的进程从数据文件中读取数据,并保存到数据缓冲区中。当用用户修改数据时,用户对数据的修改保存在数据缓冲区中,然后由Oracle的相应后台进程将数据写入到数据文件中。这样的存取方式减少了磁盘的I/O操作,提高了系统的响应性能。
  • 5. 52.2.2 日志文件 在Oracle中,日志文件也叫做重做日志文件或重演日志文件(Redo Log Files)。日志文件用于记录对数据库的修改信息,对数据库所作的修改信息都被记录在日志中。这包括用户对数据库中数据的修改和数据库管理员对数据库结构的修改。如果,只是对数据库中的信息进行查询操作,则不会产生日志信息。由于日志文件记录的对数据库的修改信息,如果用户对数据的操作由于出现的故障,而使修改的数据没有保存到数据文件中,那么就可以利用日志文件找到数据的修改,这样以前所做的工作就不会因为故障而丢失。
  • 6. 62.2.3 控制文件 控制文件(Control Files)是一个很小的二进制文件,它用于描述数据库的物理结构。数据控制文件一般在安装Oracle系统时自动创建,并且其存放路径由服务器参数文件SPFILEsid.ora的CONTROL_FILES参数值来确定。
  • 7. 72.2.4 参数文件 除了构成Oracle数据库物理结构的三类主要文件外,Oracle数据库还具有另外一种重要的文件:参数文件。参数文件记录了Oracle数据库的基本参数信息,主要包括数据库名、控制文件所在路径、进程等。与旧版本的初始化参数文件INITsid.ora不同,在Oracle10g中还可以使用二进进制服务器参数文件,并且该服务器参数文件在安装Oracle数据库系统时由系统自动创建,文件的名称为SPFILEsid.ora,sid为所创建的数据库实例名。
  • 8. 2.2 逻辑存储结构 数据库的逻辑结构是从逻辑的角度分析数据库的构成,即创建数据库后形成的逻辑概念之间的关系。Oracle在逻辑上将保存的数据划分成一个个小单元进行存储和管理,高一级的存储单元由一个或多个低一级的存储单元组成。Oracle的逻辑存储凌单元从大到小依次为:数据块(DATA BLOCKS)、盘区(EXTENT)、段(SEGMENTS)和表空间(TABLE SPACES)。
  • 9. 2.3.1 数据块 数据块是Oracle用来管理存储空间的最基本单元,也是最小的逻辑存储单元。Oracle数据库在进行输入输出操作时,都是以块为单位进行逻辑读写操作的。数据块的大小由初始化参数DB_BLOCK_SIZE确定,在创建数据库之后不可以修改。
  • 10. 2.3.2 盘区 盘区是由一系列物理上连续的数据块所构成的存储结构,它也是磁盘空间分配的最小单元。一个或从个数据块组成一个盘区,而一个或多个盘区组成一个段。当一个段中的所有空间被使用完后,系统将自动为该段分配一个新的盘区。
  • 11. 2.3.3 段 段是不再是存储空间的分配单位,而是一个独立的逻辑存储结构。段存于表空间中并且由盘区组成。按照段中据存数据的特征,可以将段分为四种类型:数据段、索引段、回退段、LOB段和临时段。 1.数据段 2.索引段 3.临时段 4.LOB段 5.回退段
  • 12. 2.3.4 表空间 表空间是在Oracle中用户可以使用的最大的逻辑存储结构,用户在数据库中建立的所有内容都被存储在表空间中。Oracle使用表空间将相关的逻辑结构组合在一起,表空间在物理上与数据文件相对应,每一个表空间是由一个或多个数据文件组成的,一个数据文件只可以属于一个表空间,这是逻辑与物理的统一。所以存储空间在物理上表现为数据文件,而在逻辑上表现为表空间。
  • 13. 2.3 内存结构 内存结构是Oracle数据库体系结构中最为重要的部分之一,内存也是影响数据库性能的主要因素。在Oracle数据库中,服务器内存的大小将直接影响数据库的运行速度,特别是多个用户连接数据库时,服务器必须有足够的内存支持,否则有的用户可能连接不到服务器,或查询速度明显下降。
  • 14. 2.3.1 系统全局区 系统全局区(SGA)是一组为系统分配的共享的内存结构,可以包含一个数据库实例的数据或控制信息。如果多个用户连接到同一个数据库实例,则在实例的SGA中数据可为多个用户共享。在数据库实例启动时,SGA的内存被自动分配;当数据库实例关闭时,SGA被回收。SGA按其作用不同,可以分为数据缓冲区、日志缓冲区和共享池。
  • 15. 2.3.2 程序全局区 程序全局区(PGA)是包含单独用户或服务器数据和控制信息的内存区域。PGA是在用户连接到Oracle数据库,并创建一个会话时,由Oracle自动分配的。与SGA不同,PGA是非共享区,只有服务进程本身才能访问它自己的PGA区,每个服务进程都有它自己的PGA区。各个服务进程在各自的PGA区中保存自身所使用到的各种数据。PGA的内容与结构和数据库的操作模式有关,在专用服务器模式下和共享服务器模式下,PGA有着不同的结构和内容。
  • 16. 2.3.3 排序区 排序区用于为排序显示的SQL语句提供内存空间,系统使用专门的内存区域进行数据的排序,这部分空间称为排序区。在Oracle数据库中,用户数据的排序有两个区域,一个是内存排序区,另一个是磁盘临时段。在排序区能够满足要求的情况下,系统将优先使用排序区,如果内存不够,Oracle将自动使用磁盘临时表空间进行排序。使用排序区可以显著提高排序操作的速度。排序区的大小由参数SORT_AREA_SIZE设置。
  • 17. 2.3.4 大池 大池是数据库管理员能够配置的可选内存空间,可以用于不同类型的内存存储。在执行某些特定类型的操作时,可能需要在内存中使用大量的缓存,这些特定类型的操作包括: 数据库的备份或恢复操作。 执行具有大量排序操作的SQL语句。 执行并行化的数据库操作。
  • 18. 2.3.5 Java池 由于Oracle提供了对Java语言的支持,所以系统提供了Java池。Java池主要用于为Java语言提供语法分析区。Java池的大小由参数JAVA_POOL_SIZE确定。
  • 19. 2.4 实例的进程结构 当数据库启动时,首先启动实例,系统将自动分配SGA,并启动Oracle的多个后台进程,内存区域和后台进程合称为一个Oracle实例。 进程是操作系统中的一种机制,它可以执行一系列的操作步骤。Oracle实例有两种类型:单进程实例和多进程实例。