欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Oracle体系结构

程序员文章站 2022-07-13 12:59:01
...
Oracle服务器
      Oracle服务器是一种对象关系数据库管理系统,由Oracle实例和Oracle数据库两部分组成。
实例
      在启动Oracle数据库服务器时,步骤:
      1、首先读取初始化参数文件;
      2、根据初始化参数文件中的内存参数分配系统全局区( SGA);
      3、然后启动后台进程。
SGA和后台进程合称为一个Oracle实例(instance)。
数据库 :Oracle数据库仅仅指的是存储于硬盘上的数据文件、控制文件和联机重做日志文件,



Oracle服务器:提供一个开放的、全面的、完整的信息管理平台(Oracle实例和Oracle数据库组成)

 

Oracle服务器(server)可以有以下3种安装方式。

1)基于主机方式:在此种配置下,用户直接在安装了数据库的计算机上登录Oracle数据库。

2)客户端-服务器(client-server)(两层模型)方式:数据库和客户终端分别安装在不同的计算机上,用户通过网络从个人计算机(客户端)*问数据库。

3)客户端-应用服务器-服务器(client- application server-server)(三层模型):用户首先从自己的个人计算机登录应用服务器,再通过应用服务器访问真正的数据库。

 

1.5  Oracle实例(instance

Oracle实例(instance)是一种访问数据库的机制,它是由内存结构和一些后台进程组成的。它的内存结构也称为系统全局区(system global areaSGA)。

Oracle 实例由 SGA 内存结构和用于管理数据库的后台进程组成。实例是通过使用对每个操作系统特定的方法来进行标识的。

 

系统全局区是实例的最基本的部件之一。实例的后台进程中有5个是必需的,即这5个后台进程中的任何一个没有启动,实例将自动关闭。

5个后台进程:SMONPMONDBWRLGWRCKPT。在OCP考题中有时可能会问哪些后台进程是可选的?除了这5个都是可选的。实例一启动就分配系统全局区和启动所需的后台进程。

每个实例只能操作一个数据库,而且它不可以操作其他的数据库。但是反过来是不成立的,因为一个数据库可以同时被几个实例操作(在Oracle集群中)。

系统全局区(SGA)包含内存结构:共享池(shared pool)、数据库高速缓冲区(database buffer cache)、重做日志缓冲区(redo log buffer)和其他的一些结构(如锁和统计数据)等。

 

系统全局区(SGA)



SGA 是用于存储数据库信息的内存区,该信息为数据库进程所共享。它包含Oracle 服务器的数据和控制信息。它是在 Oracle 服务器所驻留的计算机的虚拟内存中得以分配。

SGA 由几种内存结构组成:

• 共享池:用于存储最近执行的 SQL 语句和最近使用的数据字典数据。这些SQL 语句可以是用户进程提交的,也可以是从数据字典读取的(在存储过程的情况中)。

• 数据库缓冲区:高速缓存用于存储最近使用的数据。这些数据从数据文件读取,或者写入数据文件。

• 重做日志缓冲区:用于跟踪服务器和后台进程对数据库所做的更改。

 

在 SGA 中还有两种可选的内存结构:

• Java 池:用于存储 Java 代码

• 大型共享池:用于存储并不与 SQL 语句处理直接相关的大型内存结构。例如在备份和复原操作过程中复制的数据块。

后台进程

实例中的后台进程执行用于处理并行用户请求所需的通用功能,而不会损害系统的完整性和性能。它们把为每个用户运行的多个 Oracle 程序所处理的功能统一起来。后台进程执行 I/O 并监控其它 Oracle 进程以增加并行性,从而使性能和可靠性更加优越。

根据配置情况,Oracle 实例可以包括多个后台进程,但是每个实例都包括下面五个必需的后台进程:

• 数据库写入程序 (DBW0) 负责将更改的数据从数据库缓冲区高速缓存写入数据文件。

• 日志写入程序 (LGWR) 将重做日志缓冲区中注册的更改写入重做日志文件。

• 系统监控程序 (SMON) 检查数据库的一致性,如有必要还会在数据库打开时启动数据库的恢复。

• 过程监视器 (PMON) 负责在一个 Oracle 进程失败时清理资源

• 检查点进程 (CKPT) 负责在每当缓冲区高速缓存中的更改永久地记录在数据库中时,更新控制文件和数据文件中的数据库状态信息。

 

 

1.6  Oracle数据库

Oracle数据库是数据的一个集合,Oracle把这些数据作为一个完整的单位来处理。(主要目的是为了储存和读取信息)

Oracle 数据库可以分为逻辑(logical)结构和物理(physical)结构。

物理结构指数据库中的操作系统文件的集合,包含以下三种文件:

 

1)控制文件(control files):包含了维护和校验数据库一致性所需的信息。(例如:控制文件用来检验数据文件和重作日志文件.一个数据库需要至少一个控制文件)

2)重做日志文件(redo log files):包含了当系统崩溃后进行恢复所需记录的变化信息。一个数据需要至少两个重作日志文件。其放在一个重做日志组中。

3)数据文件(data files):包含了数据库中真正的数据。

 

数据包含在用户定义的表中,而且数据文件还包含数据词典(data dictionary),

数据修改以前的映象(before-images of modified Data)索引(indexes)和其他类型的结构(other types of structures)。

一个数据库中至少包含一个数据文件。数据文件的特性有:

– 一个数据文件只能被一个数据库使用。

–当数据库空间不足时,数据文件具有自动扩展的特性。

–一个或者多个数据文件构成数据库的逻辑存储单元叫做表空间(tablespace). 

1.7  Oracle其他的关键文件

除了以上3类数据库文件之外,Oracle服务还需要其他的一些文件,这些文件不属于数据库。其中包括:

初始化参数文件(parameter files):定义了实例的特性,如系统全局区中一些内存结构的大小、DBWR的个数。

密码文件(password files):包含了数据库管理员或操作员用户在启动和关闭实例时所需的密码。虽然Oracle数据库提供了相当完善的安全管理机制,但是在Oracle数据库没有开启时如何验证要启动数据库的人是真正的数据库管理员或操作员呢?这就是Oracle引入密码文件的原因。

归档重做日志文件(archived redo log files):是重做日志文件的脱机备份。在系统崩溃后进行恢复时可能需要这些文件。

 

建立与Oracle实例的连接



 

用于连接例程的进程

用户在给 Oracle 提交 SQL 语句之前,必须同实例连接起来。

• 用户启动 SQL*Plus 之类的工具,或者运行使用 Oracle Forms 之类的工具开发的应用程序。这个应用程序或者工具就在用户进程中执行。

• 在最基本的配置中,当用户登录到 Oracle 服务器时,运行 Oracle 服务器的计算机上就会创建一个进程。这个进程称为服务器进程。服务器进程代表在客户机上运行的用户进程与 Oracle 实例通信。服务器进程代表用户执行SQL 语句。

 

连接

连接是用户进程和 Oracle 服务器之间的通信路径。数据库用户可以用下面三种方式之一连接到 Oracle 服务器:

• 用户登录到运行 Oracle 实例的操作系统上,然后启动访问该系统中的数据库的应用程序或工具。通信路径是使用主机操作系统上的交互进程通信机制建立的。

• 用户在本地计算机上启动应用程序或工具,然后通过网络连接到运行 Oracle实例的计算机。在这项称为客户机-服务器的配置中,网络软件用于用户和Oracle 服务器之间进行的通信。

• 在三层连接中,用户计算机通过网络与应用程序或网络服务器进行通信,而该应用程序或网络服务器又通过网络与运行 Oracle 实例的计算机连接。例如,用户在网络计算机上运行浏览器来使用位于 NT 服务器上的应用程序,这个 NT 服务器从在 UNIX 主机上运行的 Oracle 数据库中检索数据。

 

会话

会话是用户与 Oracle 服务器的一种特定连接。当用户由 Oracle 服务器验证时会话开始,当用户退出或出现异常终止时会话结束。对某个具体的数据库用户来说,如果他从很多工具、应用程序或者终端同时登录,则可能有很多并发会话。除了一些专用数据库管理工具以外,启动数据库会话还要求 Oracle 服务器可供使用。

1.10  服务器进程

 

Oracle创建一个服务器进程的同时要为该服务器进程分配一个内存区,这个内存区称为程序全局区program global areaPGA)。

SGA不同,PGA是一个私有的内存区,是不能共享的,是只属于一个进程的。它随着进程的创建而被分配,随着进程的终止而被回收。

专用服务器进程的配置情况下,程序全局区包括了以下结构:

1)排序区(sort area):用于处理SQL语句所需的排序。

2)游标状态区(cursor state):用于指示会话当前所使用的SQL语句的处理状态

3)会话信息区(session information):包括了会话的用户权限和优化统计信息。

4)堆栈区(stack space):包括了其他的会话变量。

如果是共享服务器进程或多线程的配置,以上这些结构除了堆栈区外大部分将存在SGA中。如果有large pool,它们就会被存在large pool,否则它们就会被存在共享池中



 

Logical Structure

A logical structure hierarchy exists as follows:

An Oracle database contains at least one tablespace.

A tablespace contains one or more segments.

A segment is made up of extents.

An extent is made up of logical blocks.

A block is the smallest unit for read and write operations.

The Oracle database architecture includes logical and physical structures that make up the database.

The physical structure includes the control files, online redo log files, and data files that make up the database.

The logical structure includes tablespaces, segments, extents, and data blocks.

The Oracle server enables fine-grained control of disk space use through tablespace and logical storage structures, including segments, extents, and data blocks.



附录:

 

 Oracle数据库中常用的术语

为了讲解容易,在详细讨论Oracle体系结构之前,先介绍一下相关的名词和术语。在这里只给出实用的解释,并不追求学术上的严谨。

进程(process):一段在内存中正在运行的程序。如果没有学过计算机操作系统相关课程,可以把进程想象成能够自动完成某些特定任务的任何东西,如训练有素的狗狗、跑龙套的等。

后台进程(background process):进程的一种,在内存中运行时,不占显示,而且它的优先级比前台进程低。可以只有一个前台进程,但可以有多个后台进程。

缓冲区(buffer):一段用来临时存储数据的内存区。

主机(host):计算机系统的另一个称呼。

服务器(server):一台在网络中向其他计算机系统提供一项或多项服务的主机。

客户机(client):一台使用由服务器(server)提供服务的计算机系统。

1)控制文件(control files):包含了维护和校验数据库一致性所需的信息。

2)重做日志文件(redo log files):包含了当系统崩溃后进行恢复所需记录的变化信息。

3)数据文件(data files):包含了数据库中真正的数据。