Oracle数据库系统的组成

每一个Oracle数据库都一个Oracle实例相关联,一个数据库包含Oracle实例和数据库文件。

数据库是指一组位于操作系统磁盘上的文件,用于存储数据,独立于数据库实例而存在。

数据库实例是管理数据库文件的一组进程和内存结构,包含系统全局区(SGA)的内存组件和一系列的后台进程,可独立于数据库存在。

Oracle数据库系统的组成

实例启动:当数据库服务器启动时,先在内存中分配SGA系统全局区,并启动一系列的后台进程或线程。

数据库转载(MOUNT):当启动了数据库实例后,Oracle会将实例与特定的数据库进行关联。

 

Oracle中的每一个实例只能访问属于自己的物理数据库,但是在同一台计算机上可以并发地执行多个数据库实例。

Oracle实例结构有内存结构和进程结构组成,用来管理和访问数据库,应用程序连接到数据库时,实际上是连接到一个Oracle的实例,有其中的进程和内存来为应用程序提供服务。

Oracle的进程结构(Windows OS中也称为线程结构)包含以下几大类组成:

1. 客户端进程,主要用来运行应用程序或Oracle的工具

2. 后台进程,是Oracle保持数据库平稳运行的核心进程,整合了多种功能

3. 服务器进程,在用户建立到服务器的连接时启动,其进程与客户端进行通信,并与Oracle数据库实例进行交互以完成用户的请求

 

Oracle创建和使用内存结构的目的是用来在多个用户之间共享程序代码和书库的内存,并且每个已经连续的用户具有自己的私有数据区域:

1. 系统全局区(System Global Area,SGA):包含一个数据库实例的数据和控制信息。

2. 程序全局区(Program Global Area,PGA):专用于每一个服务器进程或后台进程,每一个进程使用一个PGA来存储器控制信息。

 

在Oracle中,实例是由一系列的集成和服务组成的,与数据库可以是一对一的关系,也可是多对一的关系,即多个实例可管理一个数据库,其中多个实例组成一个数据库的架构称为集群(Oracle Real Application Clusters,RAC)。但是一个实例不能管理多个数据库。