一、Oracle Database体系结构概述--【Oracle数据库】

一、Oracle Database 11g体系结构概述

1.Oracle产品系列

Oracle公司当前提供三个核心产品系列:Oracle服务器系列、Oracle开发工具、Oracle应用程序

1.1 Oracle服务器系列

服务器技术系列中三个主要的产品组合是:数据库服务器、应用服务器和企业管理器。
(1)数据服务器
数据服务器用于存储数据。
数据服务器由带有许多功能的Oracle实例和数据库构成(功能:流、分区、仓储、复制和RAC),但他还是提供了一个构建在对象-关系数据库之上的可靠、成熟、健壮和高性能的企业数据存储机制。
Oracle数据库就是磁盘上的一组文件,没有大小限制。
访问数据库:可以通过Oracle实例访问数据库。实例:就是一组进程和内存结构:他存在于CPU上和服务器节点的内存中,这种存在时暂时的,我们可以启动和停止实例。
数据库的用户针对实例建立会话,由实例管理对数据库的所有访问。连接Oracle数据库的Oracle实例构成Oracle服务器。???
Oracle服务器的处理模型:客户端-服务器处理模型,两层(two-tier)模型。客户端层生成SQL命令,服务器层执行他们。用户进程和服务器进程之间使用的网络通信协议是Oracle的专有协议–Oracle Net。

(2)应用服务器
应用服务器提供最终用户请求的服务的基础设施。
应用程序用户界面一般通过Web浏览器展示给用户,这些应用程序可以使用存储在一个或者多个数据库服务器中的数据。
OracleApplicationServer是用于开发、部署和管理Web应用程序的平台。
Web应用程序体系结构:三层(或以上),数据库层管理数据访问,客户端层(通常通过Web浏览器实现)处理与用户通信的本地窗口管理;中间的应用程序层执行生成用户界面和数据库SQL调用的程序逻辑。
用户与数据库服务器建立对话的高效模型:连接池模型。浏览器<->应用服务器是通过HTTP的无状态非持久会话。应用服务器<->数据服务器是Oracle Net协议之上的有状态持久会话。

(3)企业管理器
企业管理器产品给管理员提供管理界面。
Oracle Enterprise Manager有三种形式;
- Database Control
- Application Server Control
- Grid Control
Database Control是用于管理一个数据库的图形工具。
Application Server Control是用于管理一个或多个应用服务器实例的图形工具。
Grid Control适用于全局化管理环境。

1.2 Oracle开发工具

Oracle提供了一些开发应用程序和使用程序的工具,并支持队中语言
(1)内部语言
SQL用于与数据相关的活动,但不能仅依靠SQL来开发完整的应用程序,它不具有真正用于开发用户界面的功能,也不具备高级数据操作所需的过程结构。数据库内部的其他两种语言填补了这些空白:PL/SQL和Java

(2)外部语言
用于开发在数据库外部运行的客户端-服务器应用程序,常见C和Java。

1.3Oracle应用程序

(1)Oracle E-Business Suite基于一组核心的金融应用程序。
(2)Oracle Colaboration Suite是一套办公自动化工具。


2.预备知识

2.1 Oracle概念

Oracle Database Server由叫做实例和数据库的两个主要组件构成。实例组件指的是在启动时初始化的一组操作系统进程和内存结构,而数据库组件指的是用于数据存储和数据库操作的物理文件。

2.2 SQL概念

操作数据库。


3.实例体系结构

3.1单实例数据库体系结构

数据库和实例是一对一的
实例由内存结构和进程组成。它暂时存在与RAM和CPU中。当关闭运行的实例时,实例即消失,因此,实例的生命周期为在内存中存在的时间。
构成实例的进程成为后台进程,因为在实例处于活动状态是,他们始终存在并在运行。
用户会话由在用于计算机本地运行的用户进程组成。
单实例数据库的体系结构由四个交互组件构成:
- 用户(人)与用户进程(个人PC的进程)交互(例如人操作sqlPlus)–客户端组件
- 用户进程与服务器进程交互–会话组件
- 服务器进程与实例交互–服务端组件
- 实例与数据库交互
客户端进程绝无可能与数据库发生任何联系,所有访问都要通过中间的服务器端进程进行。

3.2分布式系统体系结构

在单实例环境中,一个实例打开一个数据库。而在分布式环境中,有多种组合【[实例]与[数据库]】的方式:
*实时应用群集(RAC),多个实例打开一个数据库
*流,多个Oracle服务器相互之间传播事务
*数据保护,主数据库更新备用数据库
(1)实时应用集群(RAC)
RAC能带来卓越的性能、容错性和拓展性,也有助于降低成本,是Oracle网格概念不可或缺的一部分。
可以通过配置RAC来获得100%的正常工作时间。一个实例可能出现故障(维护,承载运行的计算机发生崩溃),了通过另一台计算机上的实例,用户仍然可以访问数据库。针对失败实例的会话可以针对生存实例重新建立,而用户不会知道任何终端情况。
(2)流
在许多环境中,需要数据从一个数据库传输到另一个数据库。为什么要这么做?一是容错:多个数据库有相同的数据,用户都可以访问它们,一个数据库发生故障,工作都可以在另一个站点(数据库)上继续运行。二是调整:可以将两个数据库配置为执行不同类型的工作,如事务处理数据路和数据仓库。
数据库的同步必须是自动完成、实时的。
流功能可以是双向的:多个站点有相同的表,在每个站点执行的所有用户事务都传播、应用到其他站点。
(3)数据保护
数据保护系统有一个主数据库,事务将针对此数据库执行,还有一个或多个备用数据库,用于容错或者处理查询。备份数据库使用所有应用于数据库的更改进行更新(可能是实时的)。
###补充:
判断数据库是单实例还是分布式系统的一部分
system链接数据库
select parallel from vSinstance; —返回NO,表示是单实例数据库
判断数据库是否通过备用数据库的保护来防止数据丢失
select protection_level from v$database; —返回UNPROTECTED,表未收到保护
确定是否在数据库中配置了流
select * from dba_streams_administrator; —不返回任何行,那么未配置流


4.实例内存结构

实例共享内存是系统全局区(SGA),由所有会话更新
会话的专用区域是程序全局区(PGA),专一会话专用
实例由成为系统全局区(SGA)的共享内存块以及大量的后台进程构成,SGA至少包含三种数据结构:
- 数据库缓冲区缓存
- 日志缓冲区
- 共享池
还可能包含:
- 大池
- java池
- 流池
用户会话也需要服务器端的内存,此内存不共享,也称为程序全局区域PGA,每个会话都有自己专用的PGA。

4.1数据库缓冲区缓存

用来执行SQL的工作区域。用户会话不会直接操作磁盘上的数据,会先把关键数据复制到数据库缓冲区缓存,进行更改,应用于缓存中这些关键数据的副本。

4.2日志缓冲区

重做日志要写入磁盘,在日志缓冲区进行短暂存储。什么是重做日志?每当数据块发生更改时,都会将更改块的变更向量写到重做日志,我们可以通过重做日志进行数据还原。

4.3共享池

共享池时最复杂的SGA结构,分为许多子结构,这些子结构由Oracle服务器内部管理。简要分析4个共享池组件:
- 库缓存
- 数据字典缓存
- PL/SQL区
- SQL查询和PL/SQL函数结果缓存
(1)库缓存
库缓存是内存区域,按以分析的格式存储最近执行的代码。分析时将编写的代码转换为可执行代码,有了这个库缓存,可以在不重新分析的情况下重用。
(2)数据字典缓存
数据字典缓存有时称为“行缓存”。用于存储最近使用的对象定义:表、索引、用户和其他数据元素定义的描述。所有的会话可以直接访问数据字典缓存,而不是从磁盘读取,这样提高的时分析的性能,因为分析的时候要判断student这个是什么,表?还是视图等等。
(3)PL/SQL区
存储的PL/SQL对象是过程、函数、对象类型定义、触发器。当会话调用存储的PL/SQL对象时,第一次从磁盘上的数据字典表执行读取,之后直接在PL/SQL区使用。
(4)SQL查询和PL/SQL函数结果缓存
多个会话同一个查询语句,只执行一次查询,而不是多次。


5.实例进程结构

有5个重要的后台进程:
- 系统监视器(System Monitor,SMON)
- 进程监视器(Process Monitor,PMON)
- 数据库写入器(Database Writer,DBWR)
- 日志写入器(Log Writer,LGWR)
- 检查点进程(Checkpoint Process,CKPT)
还有两个
- 可管理性监视器(Manageability Monitor,MMON)
- 内存管理器(Memory Manager,MMAN)

5.1 SMON 系统监视器

通过查找和验证数据库控制文件来安装数据库,此后,通过查找和验证所有数据文件和联机日志文件打开数据库。
一旦打开数据库并使数据库处于使用状态后,SMON就负责执行各种内部管理任务,如合并数据文件中的可用空间。

5.2 PMON 进程监视器

用户会话创建成功时会启动服务器进程,PMON监视所有的服务器进程,并检测会话中的问题,如果会话异常终止,PMON就会销毁服务器进程并进行回滚。

5.3 DBWR 数据库写入器

DBWn将数据库缓冲区缓存的脏数据(修过修改的数据)写入数据文件中。
DBWn是个比较懒的进程,它会尽可能少的进行写入,在以下种情况它会执行写入:
- 没有任何可用缓冲区(不得不写啊)
- 脏缓冲区过多
- 3秒超时(最晚3秒会执行一次写入)
- 遇到检查点,即checkPoint(检查点)

5.4 LGWR 日志写入器

将日志缓冲区的内容写入到磁盘上的联机日志文件中。
什么时候写?
- 提交时写入。(这一步很重要,因为DBWn是极懒算法,如果数据库缓冲区缓存中存在大量commit和未commit的数据,这时候突然断电,这里写入的日志就很重要了。)
- 日志缓冲区的占用率达到1/3
- DBWn要将数据库缓冲区缓存写入数据文件中之前。(这里也很重要,为了数据回滚,因为DBWn很有可能把未commit的数据写入)

5.5 CKPT 检查点进程

在版本8之前,每隔一定时间,就需要设置检查点,以确保在实例失败(例如重启服务器)时,可以快速恢复数据库,这些检查点就由CKPT发起。需要注意的是,当发出检查点后,强制DBWn跟上并恢复最新状态。
8i版本开始,使用增量检查点机制,DBWn以固定速率写出脏缓冲区

5.6 MMON 可管理性监视器

是数据库很多自我监视和自我调整功能的支持进程。

5.7 MMAN 内存管理器

支持内存分配的自动管理。9i版本之后,服务器根据需要为会话分配内存,同时确保分配的PGA内存总量保持在一定限度之内,其中SGA和组件的大小可以在一定范围内重新设置。MMAN监视SGA内存结构的需要,并能根据需要重设其大小。


6.数据库的存储结构

Oracle数据库从物理存储中完全抽象出逻辑存储。逻辑结构与物理结构及其定义之间的关联在数据字典中定义。

6.1物理存储结构

Oracle包含三类文件,以及其他几种数据库之外的文件。必须的文件是控制文件、联机重做日志文件和数据文件。外部文件有初始化参数文件、口令文件、归档文件…..
(1)控制文件
包含只想数据库其余部分的指针:联机重做日志文件和数据文件的位置,以及更新归档日志文件的位置。他还存储着维护数据库完整性所需的信息:例如各种重要的序列号、时间戳
(2)联机重做日志文件
按时间顺序存储应用于数据库的变更向量。
(3)数据文件
数据库创建阶段,需要创建两个数据文件,一个用于SYSTEM表空间(存储数据字典),一个用于SYSAUX表空间(存储数据字典的辅助数据)。

6.2逻辑数据库结构

构成数据库的物理结构作为操作系统呈现给系统管理员。用户看到的是例如表的这种逻辑结构。Oracle使用“段”来描述任何包含数据的结构(例如典型的段是包含数据的表)

6.3数据字典

数据字典包含从逻辑上和物理上描述数据库及其内容的元数据。元数据作为一组段存储在SYSTEM和SYSAUX表空间中。


补充:
Oracle表空间、段、区和块简述:
一、数据库由一个或多个表空间组成
二、表空间由一个或多个数据文件组成,一个表空间包含多个段
三、段由一个或多个区组成
四、区是数据文件中一个连续的分配空间,由一个或多个块组成
五、块是数据库中最小、最基本的单位,是数据库使用的最小的I/O单元

块是数据存储的物理单位,也是数据文件中最基础的单位,数据直接存储在块上。是oracle空间分配的最小单位。oracle中的块大小常见的有三种,2KB、4KB、8KB。块的大小在数据库创建时就已经固定下来,数据库中每个块的大小都是相同的,而且所有的块都有相同的格式,由“块头+表目录+行目录+空闲空间+数据空间”组成。块头包含着块类型(比如是表块、还是索引块)的信息、磁盘上块的位置等信息。表目录(table directory),如果有的话,包含着此块中存储各行的表的信息(如果一个块中存有多个表中的数据)。行目录(row directory)包含着数据行的描述信息,它是一个指针数组,指示了每一行在数据块中的物理位置。块头、表目录、行目录统称为块开销(block overhead),是oracle原来统计、管理块本身的。剩下的两部分很简单,已经存有数据的就是数据空间,暂时没存的就是空闲空间。

区又叫盘区,是数据文件中一个连续的分配空间,它比块要大,由块组成。有些对象分配空间时可能至少需要两个盘区,比如回滚段,而这两个盘区不一定要求相连。区的大小从一个块到2GB不等
段是oracle数据库中的分配单位,对象如表、索引等都是以段为单位进行分配。当创建一个表时将创建一个表段,创建一个索引时就创建一个索引段。每一个消耗存储空间的对象最终被存储到一个单一的段中。有回滚段、临时段、聚簇段、索引段等。
表空间是一个逻辑容器,它和数据文件关联起来,一个表空间至少有一个数据文件与之关联。一个表空间可以有多个段,一个段只能属于一个表空间。

猜你喜欢

转载自blog.csdn.net/qq_29668759/article/details/79733668
今日推荐