Oracle 数据库 体系结构 (二):服务器结构

目录

  • 前言
  • Oracle 内存结构
  • Oracle 进程结构
  • 文章总结

前言

  • 上一篇文章体现了 Oracle 数据库的一些基本结构和存储结构,这篇文章将会讲到Oracle的服务器结构,实际上就是主要讲实例的结构。需要把这些底层的结构了解,在生产环境或是对Oracle才会有一些了解。
  • Oracle服务器是由Oracle实例+Oracle数据库组成。
  • Oracle实例是有SGA+后台进程组成。 每一个Oracle实例都有自己的SGA和独立的Oracle进程集。

Oracle 内存结构


以上图很好说明了内存的结构,下面将会详细介绍内存结构。


内存结构是Oracle数据库体系中最为重要的一部分,数据库实例启动时,Oracle数据库会分配内存区并启动后台进程。
Oracle内存存储的主要内容有:

  • 程序代码(PL/SQL、Java);
  • 关于已经链接的会话的信息,包括当前所有活动非活动的会话;
  • 程序运行时必须的相关信息,如查询计划;
  • Oracle 进程之间的通信和共享的信息,如:锁。

Oracle内存结构包含:

1·系统全局区 (SGA):Oracle启动实例时分配系统全局区
2·程序全局去 (PGA):当服务器启动时分配程序全局区
3·用户全局区 (UGA):用户全局区为用户存储会话状态

系统全局区(SGA)

系统全局区 (SGA):数据库信息存储于系统全局区,由多个数据库共享。是占用服务器内存最大的一个区域,是影响数据库最重要的一个指标,和后台进程组成了Oracle实例。

系统全局区 (SGA)的组成:

* 共享池 (含:库高速缓存、数据高速字典缓存);
* 数据高速缓存;
* 重做日志缓冲区;
* Java池;
* 大缓冲区。

共享池:是对SQL、PLSQL程序进程语法分析、编译、执行的内存区域。是由两个关键内存结构组成,分别是:
1·库高速缓存:存储最近解析使用的 SQL和PL/SQL语句信息。Oracle 在执行用户进程提交的各种SQL语句前要对进行解析(包括语法解析、对象确认、权限判断、操作优化等)并生产执行计划,占用一定的系统资源。
2·数据字典高速缓存:最近使用对象定义的集合,包括数据文件、表、索引、列、用户、权限、和数据库对象的信息。


数据高速缓存区:可以加快访问速度,把一些经常用到的都放到缓存区,因为数据库的目的除了安全还有就是访问效率。服务器进程将读入的数据保存在数据缓冲区中,当后续请求需要这些数据就在内存中找到,不需要从磁盘读取。所有用户共享。由三个池组成:1·默认池, 2·保持池(存放常用的数据) 3·回收池(存放不常使用的数据存),通过LRU算法管理。
LRU算法管理:它的原理是把常用的数据保留在池中,不常用的数据就退回去。


重做日志缓冲区:录所有的关于数据库的变化,当执行DML,如:updata、delete、insert或create、alter、drop等语句时,Oracle都会为这些操作生产重做记录,作用是:主要用于数据库恢复、改变的数据都要依赖于redo日志条目。


大缓冲区:用于需要大内存操作提供相对独立的内存空间,以便提高性能,大池是可选的内存结构,DBA可以决定是否需要在SGA中创建大池,比如:数据库备份和恢复、大量排序的SQL语句、并行化的数据库操作。


Java池:在安装Java程序时必须设置Java池,编译Java语言写的指令。



SQL> show sga; ----------------(查看 系统全局区 SGA 大小)

Total System Global Area 1593835520 bytes
Fixed Size          8793256 bytes
Variable Size         905970520 bytes
Database Buffers      671088640 bytes
Redo Buffers            7983104 bytes

程序全局区(PGA)

当服务器启动时分配的全局区,就是Oracle服务器启动时需要占用的内存!

  • 它包含单个服务器进程所需的数据和控制信息
  • 是在用户进程连接到数据库并创建一个会话时自动分配的,保持每个与Oracle数据库连接的用户进程所需的信息
  • PGA为非共享区,只能单个进程使用,当一个用户会话结束,PGA释放。

用户全局区(UGA)

  • 用户进程存储会话状态,就是你用哪个用户登陆,会存储一些用户的状态!
  • UGA可以作为PGA于SGA的一部分,具体位子取决于如何连接Oracle:若通过一个共享服务器连接,UGA包含在SGA中;若是通过一个专有服务器连接Oracle,UGA包含在专有服务器PGA中

Oracle 进程结构

Oracle 实例有以下几种进程:

* 用户进程
* 服务器进程
* 后台进程


用户进程

用户进程是一个需要与Oracle服务器进行交互的程序。当用户运行一个程序准备向数据库服务器发送请求时,即创建了用户进程!

服务器进程

服务器进程是用于处理连接该实例的用户进程的请求。当用户连接到Oracle实例创建会话时,创建的服务器进程!

后台进程

  • 后台进程是Oracle数据库为了保持系统最佳系统性能和协调多个用户请求而设置的。Oracle实例启动时则创建一系列的后台进程!
  • 后台进程使数据库的内存结构和数据库物理结构之间协调工作。
  • 后台进程必须启动的5个进程分别是:DBWR、LGWR、PMON、SMON、CKPT。

PMON 进程监控进程:

* 清理出现故障的进程;
* 释放当前所有挂载的锁定;
* 释放故障进程使用的资源。

SMON 系统监控进程:

* 在实例失败后,重新打开数据库时自动恢复实例;
* 整理数据文件的自由空间,将相邻空间结合起来;
* 释放不再使用的临时段。

DBWR 数据写入进程:

* 管理数据缓冲区,将最近使用过的块保留在内存中;
* 将修改后的缓冲区数据写入数据文件中。

LGWR 日志写入进程:

* 负责将日志缓冲区的日志数据写入日志文件;
* 系统有多个日志文件,该进程以循环的方式将数据写入文件。

CKPT 校验进程:

* 从检查点队列上扫描脏数据块,并将这些脏数据块写入数据文件中;
* 检查点队列上的buffer header 是按照数据块第一次被脏的时间先后顺序来排列的;
* 越早修改的数据块的buffer header排在越前面;
* 同时如果一个数据块被修改了多次的话,在该链表上也只出现一次。

总结

太多的理论,还需要用图来理解记忆!所以总结就用一张图来表示。

原文地址:http://blog.51cto.com/13746824/2306951

时间: 2024-08-02 08:45:21

Oracle 数据库 体系结构 (二):服务器结构的相关文章

浅析理解Oracle数据库体系结构和存储结构

一.Oracle体系结构 个人比喻帮助理解:类似于图书馆,去图书馆的客户(用户进程和服务进程等)需要调取资料,求助于图书管理员(实例)进入图书分区(数据库)进行资料查找.[如果比喻不当,欢迎指正,尽请谅解] - 第一部分是实例部分(为用户提供服务,管理数据库): 主要理解分成两个主要部分: (1)内存结构:(2)后台进程:与数据库进行交互 - 第二部分是数据库部分物理结构:(为实例提供服务,处理数据文件) 主要文件:数据文件,控制文件,重做日志文件 其他文件:归档日志文件,参数文件,口令文件等

Oracle数据库体系结构、启动过程、关闭过程

一.Oracle数据库体系结构体系结构由下面组件组成:1.Oracle服务器(Server):由数据库实例和数据库文件组成,另外在用户建立与服务器的连接时启动服务器进程并分配PGA(程序全局区) (1)数据库实例(Instance) 数据库实例由一些内存区和后台进程组成. (a)内存区:共享池.数据库高速缓存.重做日志缓存.流池以及其他可选内存区 (b)后台进程:系统监控进程(SMON).进程监控(PMON).数据库写进程(DBWR).日志写进程(LGWR).检验点进程(CKPT).其他进程 (

【转载:Oracle基础知识】Oracle数据库体系结构

先来看张直观的图:                                            oracle 11g 体系结构图 理解Oracle体系结构要充分理解三个概念:数据库(database),数据库实例(instance),会话(session),一定不要把这三个概念弄混. 数据库的概念 (A)    物理存储结构由数据文件.控制文件.重做日志文件组成: 1.       数据文件(datafile) select * from dba_data_files; 数据文件包括存

学习oracle数据库引航二——后台进程

from 谭怀远--数据库领航 后台进程 一.system monitor(SMON) (非正常关闭后的)实例恢复 二.process monitor(PMON) 回滚事务 释放锁及其它资源 重启死掉的调度器.(在共享服务器中用).分配用户连到哪个服务器上. 在监听器中注册服务信息 三.DBWn和LGWR DBWRn下写入磁盘文件 四.check point(CKPT) 喊DBWn写脏数据 完后会更新DATAFILE的HEADER和控制文件的HEADER.而HEADER中有同步所需要的信息,即C

如何导出远程oracle数据库中的表结构

从远程oracle数据库上导出指定表的表结构语句有两种方法: 方法一:通过sql语句获得 1,make sure that you can connect the remote database. 2,enter into the sqlplus,and execute the command: select dbms_metadata.getddl('TABLE',tablename) from user_tables and you will get all the tables defin

Oracle 数据库 体系结构(一):存储结构

目录 为什么要学习体系结构? 体系结构的定义 Oracle 物理结构 Oracle 逻辑结构 总结 为什么要学习体系结构? 之前的文章有讲解到 MySQL .MongoDB 数据库,这些数据库我们安装好了就能拿来用,比如直接可以做一些:增.删.改.查 等操作.但是 Oracle 的体系错综复杂,如果不了解当中的结构,那么在生产环境中出现一些问题,都不知道是哪个环节有问题,所以需要了解Oracle的结构,这样会更加利于了解它,认识它,如果有问题就会及时知道问题是出现在那一块,就可以及时解决它! >

Oracle数据库基本操作 —— Oracle数据库体系结构介绍、DDL、DCL、DML

一.Oracle数据库介绍 1.基本介绍 Oracle数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一. 2.Oracle数据库的体系结构 ①数据库:database Oracle数据库是数据的物理存储.这包括(数据文件ORA或DBF.控制文件.联机日志.参数文件).Oracle数据的概念和其他数据库不一样,这里的数据库是一个操作系统只有一个库.可以看做是Oracle就只有一个

Oracle数据库------体系结构

ORACLE体系结构包括:实例(Instance),数据库文件,用户进程(User process),服务器进程以及其他文件. 1.ORACLE实例(instance)     1).要访问数据库必须先启动实例,实例启动时先分配内存区,然后再启动后台进程,后他进程执行数据库的输入,输出以及监控其他进程.      在数据库启动的过程中 一下五个进程必须启动:         1.SMON(系统监控进程) 2.PMON(进程监控) 3.DBWR(数据库写进程) 4.LGWR(日志写进程) 5.CK

Oracle数据库体系结构总结

Oracle DB 体系结构 Oracle DB 服务器由一个 Oracle DB 以及一个或多个数据库实例组成.实例由内存结构和后台进程构成.每当启动一个实例时,都会分配一个称为系统全局区 (SGA) 的共享内存区,并启动后台进程. 数据库包括物理结构和逻辑结构.由于物理结构和逻辑结构是分开的,因此管理数据的物理存储时不会影响对逻辑存储结构的访问. Oracle的体系结构确保将逻辑结构从物理结构中抽象出来 Oracle DB 内存结构 Oracle DB 针对各种用途创建和使用内存结构.例如,