Oracle体系结构研究

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Oracle体系结构研究

摘要:阐述了Oracle数据库的基本架构和Oracle数据库理论中的主要概念。Oracle体系结构由存储结构、内存结构和进程结构组成,其中,存储结构由物理存储结构及逻辑存储结构组成;内存结构由SGA和PGA组成;进程结构由用户进程和Oracle进程组成。

关键词:ORACLE体系结构;存储结构;内存结构;进程结构

1 Oracle的存储结构

Oracle的存储结构分为物理存储结构和逻辑存储结构。

1.1 物理存储结构

主要由数据文件、控制文件、联机日志文件及数据库实例构成。

Oracle数据库中有许多初始化参数,这些参数用于对整个数据库进行设置或调整,如设置数据库名、数据库块大小、控制文件的名称和位置、数据库实例数等信息。Oracle 把这些参数存放在一个文件中,这个文件就叫初始化参数文件。启动数据库时,Oracle会读取参数文件中的值,并根据这些值对数据库实例

(instance)进行设置。具体说是Oracle先从初始化参数文件中获得控制文件的名称及位置,打开控制文件,然后再从控制文件中读取数据文件和联机日志文件的名称和位置,打开它们,因为表、索引等对象的数据就存放在数据文件中,从而就打开了数据库。

1.1.1 控制文件

Oracle启动数据库时会访问控制文件,控制文件是在创建数据库的时候创建的,它是一个很小的二进制文件,记录了数据库的名称、创建数据库的时间、数据文件的名称和位置、联机日志文件的名称和位置及表空间等信息。

所以说一个数据库的控制文件是相当重要的,一旦被损坏,数据库将不能正常启动和运行。所以DBA应该镜像控制文件,把每个镜像的控制文件分布到不同的物理磁盘上,发生灾难时既使其中一个控制文件被损坏,也不会使整个数据库限于瘫痪。

1.1.2 数据文件

当用户在Oracle中创建数据库的时候,就创建了一个或多个数据文件,表和索引等对象的数据就物理地存放在数据文件中。一个表的数据可能会存储在多个数据文件中,但一个数据文件只能属于一个数据库。用户查询一个表时,如果所需数据不在内存中,Oracle会读取该表所在的数据文件,并把数据调入内存中,也就是说访问表实际上就是对数据文件进行读写操作。创建数据

文件时可以指定其初始大小,当其空间耗尽时,也可自动或手动扩展其大小。

1.1.3 联机日志文件

当用户在内存中对数据库做了修改时(如插入、删除、修改),如果数据还没有来得及写入数据文件中就发生断电,用户的修改就会丢失。为了防止这种情况的发生,Oracle运行过程中会在内存中产生日志条目,这些日志条目反应了用户所做的修改,并每隔一段时间把日志条目写到物理的联机日志文件中。重启数据库时,Oracle会从联机日志文件中找回丢失的修改数据并重新把它写到数据文件中。由此可见,联机日志文件主要用于对数据库实例(Instance)的恢复。当用户提交一个事务或每隔3秒钟或日志缓冲区被填满1/3时,产生的日志信息就会被写到联机日志文件中。

1.2 逻辑存储结构

Oracle 的逻辑存储结构由数据块、区、段和表空间构成。

1.2.1 表空间

一个数据库被分成一个个的逻辑单元,这些逻辑单元叫“表空间”。表空间用于在逻辑上存放数据库对象如表、索引等。一个数据库逻辑上由一个或多个表空间组成。表空间又由一个或多个数据文件物理地支持着,表空间中的数据库对象(如表)的数据实际上是存储在数据文件中的。表空间的大小是组成表空间的所有数据文件的大小之和。但表和数据文件却不是一一对应的,

一个表的数据可以存放在一个或多个数据文件中。每个数据库用户都要有一个默认表空间,当用户创建对象(如表)时,如果没有指定这个对象放在哪个表空间中,则这个对象将被存放在默认表空间中。

1.2.2 数据块

数据块简称块,是Oracle存取数据的最小单位。Oracle数据存放在块中,一个块占用一定的磁盘空间。这里的“块”是Oracle 的数据块,而不是操作系统的“块”。Oracle每次读写数据的时候都以块为单位,如果读写的数据不到一块,Oracle也会读写整个块。Oracle块的大小一般是操作系统块大小(512bytes)的整数倍,如2k,4k。块大小由初始化参数文件中的DB_BLOCK_SIZE 参数指定。

1.2.3 区

区是数据库中的一个逻辑存储单元,由连续的数据块组成。特别强调的是区是一段连续的存储空间。当段中的空间耗尽时,Oracle会分配一个新区给这个段。

段由一系列的区组成,也是存放数据的逻辑单元。

表由段组成,一个表由一个或多个段组成。普通表由一个段组成,分区表由多个段组成。

创建表的时候实际上就创建了段,Oracle会给表的段分配一个初始区。随着数据的插入,初始区被填满,Oracle会再分配一

个新区给表的数据段,这个区叫做“递增区”。如果递增区用完,Oracle还会分配另外的递增区。

1.2.4 段

段由一系列的区组成,也是存放数据的逻辑单元。表由段组成,一个表由一个或多个段组成。普通表由一个段组成,分区表由多个段组成。创建表的时候实际上就创建了段,Oracle会给表的段分配一个初始区。随着数据的插入,初始区被填满,Oracle 会再分配一个新区给表的数据段,这个区叫做“递增区”。如果递增区用完,Oracle还会分配另外的递增区。

2 内存结构

在Oracle中,“数据库”是指物理地存储在磁盘上的数据库文件。而数据库的启动和运行,是需要一定的内存空间和后台进程的,我们把这些内存空间和后台进程称为Oracle数据库实例(Instance).也就是说一个数据库实例是由一块大的内存空间和一系列的后台进程构成。对于第一次接触“实例”这个概念的朋友来说,容易把“实例”和“数据库”这两个概念混淆。实例是“内存”和“后台进程”的总称,“数据库”是数据的物理存储。一个数据库可以由一个或多个实例驱动,二者之间的关系是一对多的关系。

数据库实例所占用的内存空间分为两部分,一部分叫系统全

相关文档
最新文档