您的位置:首页 > 数据库 > Oracle

Oracle12C体系结构(二)

2017-02-18 11:06 197 查看


5个重要组成部分

1.    连接数据库实例的服务:为Oracle系统的体系结构中协同工作的方式;

2.    服务器进程;

3.    文件系统管理;

4.    内存区域管理:尤其是系统全局区(SGA,SystemGlobal
Area)的特点和作用;

5.    后台进程


3个重点体系结构

1.    内存结构,进程结构,存储结构

2.    


3.    通过上图,可以看出每一个Oracle服务器都会包含两个主要组成部分,即Oracle实例,Oracle数据库(物理体系)

4.    Oracle服务器,Oracle实例(instance),Oracle数据库(database)的关系

1.    如将Oracle比作一辆汽车,那么实例就像汽车的发动机(核心),在启动Oracle之前一定要保证实例先启动,而汽车上所拉的货物就是数据库;

2.    实例与数据库的关系是数据库可以由多个实例装载和打
4000
开,而实例可以在任何时间点上装载,打开一个数据库;


Oracle实例体系

1.    数据库启动,会自动分配SGA(系统全局区)内存,构成Oracle的内存结构,而后再启动若干个常驻内存的操作系统进程,已构成Oracel的进程结构,内存区域与后台进程就构成了一个Oracle实例;

2.    每个运行的Oracle数据库都对应一个Oracle实例(或者称为例程)。每个实例启动时都会分配各自的内存结构与进程结构;

3.    Oracle实例标记:在操作系统中如果存在多个Oracle实例(实例名称不可以相同),那么可以使用ORACLE_SID(或者使用INSTANCE_NAME)这个环境属性进行默认使用实例的标注;


内存结构

1.    内存存储了数据字典信息,关于对象,逻辑结构,权限等元数据,缓冲的应用数据,SQL语句,PL/SQL和Java程序数据,以及事务等信息。除了这些,还包含软件代码区和程序代码区(PGA)

1.    


2.    共享区

(1).    包括高速缓冲区,和数据字典缓冲区,数据库高速缓冲区又包括共享sql区,私有sql区,共享PL/SQL区,及控制结构区

1).    私有sql区:用来存放sql语句执行时与之有关的每一个会话的私有数据。在专用服务器中,私有sql区存在PGA中,在啊共享服务器内,私有SQL区存在共享区中;

2).    共享SQL区:用户执行sql时,Oracle会将最近执行的sql语句的文本,编译后的语法分析树和执行计划存入共享区。而将sql语句中的变量值存入私有Sql区。当服务器再次执行相同的sql语句时,服务器进程将不再进行语句分析,而是直接执行共享sql区内已经存在的内容;

3).    共享PL/SQL区:Oracel执行一个PL/SQL语句前,会先将程序单元放入共享PL/SQL区,而程序单元内的SQL语句将被放到SQL区中,当需要再次执行相同的程序单元时,直接从内存中调用,不用再次访问磁盘;

4).    结构控制区:供实例内部使用的一段内存区,存放了锁方面的信息;

3.    数据库缓冲区

(1).    该区是SGA中的一个高速缓冲区域,用来存储最近从数据文件中读取的数据块,表,索引数据库。当用户处理查询时,服务器进程会先从数据库缓冲区查找所需要的数据库,缓冲区中没有时才会访问磁盘数据;

4.    重做日志缓冲区

(1).    当用户通过sql语句更改数据后,服务器进程会在重做日志缓冲区中记录这些修改。数据库发生意外后,可通过此记录恢复数据

5.    大池

(1).    可选的内存区。大池提供额外的内存,供一些消耗大量内存的操作使用;

6.    Java池

(1).    该处存放了Java文本,语法分析等信息。如果要安装Java
VM就必须启用Java池;

7.    Streams池

(1).    该区域是10g新添加的。它用来存放信息。它存放的内容是共享的。利用该池管理信息比原来捕获和管理消息更容易;

8.    数据字典缓冲区

(1).    它包含了数据库的结构,用户信息和数据库的表,视图等信息;还有所有表和视图的名词,以及权限等信息;

9.    程序全局区(PGA)

(1).    程序全局区:包括会话信息,堆栈空间,排序区以及游标状态;

1).    会话信息存放的是会话的权限,角色,会话性能统计等信息;

2).    堆栈空间内存放的是变量,数组和属于会话的其他信息;

3).    排序区则是用于排序的一段专用空间;

4).    游标状态存放的则是当前使用的各种游标的处理阶段;

(2).    当用户进程连接到Oracle后,服务器会创建一个会话,同时分配一个PGA区,该区由一个用户进程使用,不能共享;

1).    对专用服务器(一个数据库连接对应一个专用服务器进程),PGA保存堆栈空间信息,会话信息,游标状态和排序区。

2).    对共享服务器,PGA仅保存堆栈空间信息,而会话信息,游标状态,排序区保存在SGA中。

3).    PGA结构如图:

A.   



3种类型的进程

1.    用户进程,服务器进程和后台进程,用户进程与服务器进程的关系,如图

(1).    


(2).    当用户需要在Oracle进行操作时,首先要建立连接,从而建立用户进程与服务器进程之间的通信通道。当用户与服务器建立了连接之后,就会通过一个会话来表示,不同会话间的操作彼此独立;

(3).    Oracle的后台进程与实例同时启动,主要作用是维持数据库的物理结构和内存结构,后台进程的结构如下:

1.    


2.    上图主要的后台进程作用如下:

(1).    系统监控进程(SMON):数据库启动时,SMON会使用联机重做日志文件恢复崩溃的实例;

(2).    进程监控进程(PMON):主要是监视用户进程的运行;当用户进程失败时,清除用户进程和进程所占用的资源;

(3).    检查点进程(CKPT):用来控制数据文件,控制文件和重做日志文件之间的协调同步;

(4).    数据库写进程(DBWO):此进程负责管理数据库缓冲区以及数据字典缓冲区;

(5).    日志写进程(LOWR):负责重做日志缓冲区的内容写入联机重做日志文件;

(6).    归档进程(ARCO):将写满的重做日志文件转存到指定的设备上,以保证先前的重做日志文件不至于被覆盖;

(7).    恢复进程(RECO):用于恢复分布式数据库环境中失败的事务;

(8).    作业队列进程(SNPn):可以完成一些应用程序的周期性执行工作。

(9).    锁进程(LCKn):用于锁定数据库对象,不被数据库其他进程更改。


  Oracle物理体系

1.    该体系就是数据库的物理体系,就是存放在磁盘上的结构文件;在数据库中的所有数据,都保存在这些物理文件中;

2.    控制文件(Control
file):控制文件用于控制数据库的物理结构。它记录了数据库中所有文件的控制信息;

3.    数据文件(Data
File):每个Oracle数据库都有一个或多个物理的数据文件。一个数据库的数据文件包含全部数据库数据。

4.    重做日志文件(Log
File):Oracle用重做日志文件来保存所有数据库事务的日志;

5.    参数文件(Parameter
File):保存Oracle配置有关的信息,一般有如下3类参数文件:

(1).    初始化参数文件:用于在数据库启动实例时配置数据库,该文件主要设置数据库实例名称,主要使用文件的位置,实例所需要的内存区域大小等;

(2).    配置参数文件:在数据对应多个实例的时候才会存在,如果一个数据库只对应一个实例则不会产生此文件。此文件一般被命名为config.org,该文件一般由初始化参数文件调用;

(3).    二进制参数文件:会存在两种参数文件,一种是pfile,此文件是基于文本格式化的参数文件,含有数据库的配置参数。另一种Server
Parameter File,服务器参数文件,此文件是基于二进制格式的参数文件,含有数据库及例程的参数和数值; 
 
 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Oracle