oracle体系结构有四个部分组成分别为:oracle 服务器、用户进程、服务器进程、其他关键文件。其中oracle服务器又有实例(instance)和database组成是一个数据库管理系统。

一、oracle instance

oracle实例instance是一个访问数据库的机制由内存结构(SGA)和后台进程组成(包括五个后台进程PMON,SMON,DBWR,LGWR,CKPT这五个后台进程是必须的,即只要这五个后台进程中的任何一个无法正常启动的话,整个数据库实例就没法启动。其他后台进程的启动都是可选择的。)实例一旦启动就分配系统全局区同时启动后台所需的后台进程。一个实例只能同时操作一个其对应的数据库,但是一个数据库可以同时被几个数据库实例操作(oracle集群中)。

启动oracle instance的指令是startup,它的启动意味这SGA的所有内存结构都已经生成,所有的后台进程都已经在内存中正常运行。

用户进程与instance的连接时通过服务器进程来对接的,用户进程不能直接访问instance,必须通过新建的服务器进程进行一对一的对接这就是专用连接模式(在配置oracle客户端时配置本地命名系统和监听时选择的dedicated就是专用连接模式与之相对的是共享服务器连接模式shared server)。

当oracle创建了一个服务器进程的同时为该服务器进程分配一个内存区称为程序全局去PGA,PGA是一个私有的内存去不能共享且只属于一个进程随进程的创建而分配随进程的介绍而终止。在dedicated模式下PGA中包含以下结构:排序区、游标状态区、会话信息区、堆栈区。

1、SGA区

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

(1)共享池

共享池由库高速缓存区library cache和数据字典高速缓存区data dictionary cache两部分组成的

库高速缓存区library cache:

引入库高速缓存区的目的就是共享sql和plsql代码。要想共享sql 或plsql代码第一要保证库共享缓存区要足够大才能使得sql语句不会很快被淘汰出队列。第二、sql语句要是能被共享的通用代码,因为oracle是比较sql语句的正文来决定两个语句是否相同的,只有当正文相同时oracle才重用已经存在的编译后的sql代码和执行计划。在有实参的情况下尽量使用绑定变量的方式来重新sql语句 如:select * from emp where emp.sal>=&v_sal,因为变量的赋值不是在编译阶段而是在运行阶段。

数据字典高速缓存区 data dictionary cache:

服务器进程把数据文件、表、索引、列、用户和其他数据库对象的定义和权限的信息放入数据字典高速缓存区,以备其他用户进程访问可以直接从缓存区中取数据,提高数据的读取效率

数据库提供静态参数SHARED_POOL_SIZE来改变共享池的大小:alter system set  SHARED_POOL_SIZE=32M

(2)数据库高速缓存区database buffer cache

主要用来保存sql查询中生成的结果集,处理sql语句时首先在database buffer cache中查找目标数据集,如果没有的话再从磁盘上读取数据进入内存。oracle提供里DB_BLOCK_SIZE,DB_BLOCK_BUFFERS两个参数通过两个参数的乘积来调整database buffer cache的大小。但是以上两个参数都是静态的参数,另个oracle9i以上版本提供DB_CACHE_SIZE动态参数来改变database buffer cache的大小

alter system set DB_CACHE_SIZE=48M

(3)重做日志缓冲区(redo log buffer)

在执行dml操作时检查是否将原始数据写入redo log buffer,如果没有那么写入redo log buffer然后添加到数据高速缓存区,对oracle所做的任何修改都会在redo log buffer中记录。

注:除此之外SGA中还有可能包含large pool和java pool等数据结构

oracle的内存缓存区的大小是可以动态调节的,内存缓冲区的最小划分和调度单位是区组,oracle是利用区组来管理SGA内存的,区组就是一片连续的虚拟内存区是oracle分配和回收内存区的基本单位。SGA至少包含三个区组即SGA固定区(其中包含了重做日志缓冲区)、数据库高速缓存区、共享池缓冲区

show parameters显示参数文件中可以设置的全部参数

show sga获得sga的相关信息

select name,type,value from v$parameter where name='sga_max_size'显示sga_max_size的值(sga区最大值)

2、oracle的主要后台进程

(1)重做日志写进程LGWR:

负责将重做日志缓冲区中的数据顺序的写到重做日志文件中

(2)数据库写进程DBWR

负责将数据库高速缓存区中的脏缓冲区中的数据写到数据文件中

(3)系统监督进程SMON

在遇到特殊的情况时自动执行oracle实例的恢复工作。包含执行前滚、前滚完成之后打开数据库、回滚没有提及的事务

(4)进程监督进程PMON

当某个进程崩溃时PMON将负责他的清理工作包含回滚当前用户的事务、释放用户所加的表一级的和行一级的锁、释放用户所用的其他资源

(5)校验点和校验点进程

作为数据库恢复的标记点,用来辅助实例的恢复。

(6)归档日志进程ARCH

该进程不是必须的,但是在可选择的进程里面该进程是最应该被选择的。在归档模式下ARCN将切换后的重做日志文件复制到归档日志文件。归档日志文件实际上是oracle在脱机状态下的对重做日志文件的备份。归档操作一般是自动进行的。在遇到数据文件丢失或损坏后,一般数据库要进行完全恢复,oracle数据库应该运行在归档模式下。利用这些归档日志文件就可以完全恢复数据库中的数据。

二。database

databse主要由一下几类文件组成:数据文件、控制文件、重做日志文件

1、控制文件:包含维护和校验数据库一致性所需的信息,是数据库的最重要的文件,所有的数据库操作都必须由控制文件来完成,保证控制文件的完整性是数据库正常运行的基础。

2、数据文件:包含数据库中 的真正的数据。

3、重做日志文件:包含了当前系统崩溃后进行恢复所需要的记录的变化信息。

注:数据库运行时还需要除此之外的其他的文件包含初始化参数文件、密码文件、归档重做日志文件等,但是这些文件不属于database。

oracle体系结构的更多相关文章

  1. Oracle体系结构总结

    1.Oracle 体系结构摘要图 2.Oracle 体系结构相关笔记 1.Oracle 体系结构摘要图 2.Oracle 体系结构相关笔记 可参考Oracle Architecture系列随堂笔记: ...

  2. oracle 体系结构

    oracle 体系结构 数据库的体系结构是指数据库的组成.工作过程与原理,以及数据在数据库中的组织与管理机制. 1. oracle工作原理: 1).在数据库服务器上启动Oracle实例:2).应用程序 ...

  3. Oracle实例和Oracle数据库(Oracle体系结构)

    --========================================== --Oracle实例和Oracle数据库(Oracle体系结构) --==================== ...

  4. 【转载】Oracle实例和Oracle数据库(Oracle体系结构)

    免责声明:     本文转自网络文章,转载此文章仅为个人收藏,分享知识,如有侵权,请联系博主进行删除.     原文作者:Leshami      原文地址:http://blog.csdn.net/ ...

  5. oracle 体系结构解析

    三.oracle 体系结构 1.oracle内存由SGA+PGA所构成 2.oracle数据库体系结构数据库的体系结构是指数据库的组成.工作过程与原理,以及数据在数据库中的组织与管理机制. oracl ...

  6. Oracle 课程一之Oracle体系结构

    课程目标 •理解ORACLE数据库体系架构—内存结构和进程 •理解SQL在数据库中的运作流程 •理解UNDO&REDO原理 •理解commit原理   1.Oracle数据库概述 •数据库:物 ...

  7. Oracle体系结构之进程

    Oracle体系结构之进程 一.概述 Oracle中的每个进程都要执行一个特定的任务(或者一组任务),每个进程都会为自己分配内存(PGA)来完成它的任务.一个Oracle实例主要有以下3类进程: (1 ...

  8. oracle 体系结构简介

    1.1.SGA(system global area) SGA是oracle Instance的基本组成部分,在示例启动是分配.是一组包含一个oracle实例的数据和控制信息的共享内存结构.主要用于存 ...

  9. Oracle 体系结构chapter2

    前言:Oracle 体系结构其实就是指oracle 服务器的体系结构,数据库服务器主要由三个部分组成 管理数据库的各种软件工具(sqlplus,OEM等),实例(一组oracle 后台进程以及服务器中 ...

随机推荐

  1. (ssh整合web导出excel)在ssh框架中使用poi正确导出具有比较高级固定格式的excel 整体过程,查询导出前后台下载

    (一) 接需求  :   需求相关   (贴图 ) 生成三核对文件 1.新增三核对菜单页面中,增加生成三核对文件功能按钮,弹窗可根据变电站.电压等级查询定值单. 2.定值单信息以表格形式展示,根据选择 ...

  2. Shell学习之Shift的用法

        位置参数可以用shift命令左移.比如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1.$2.$3丢弃,$0不移动.不带参数的shift命令相当于shift 1 ...

  3. MySql小知识点

    1.查看MySql是什么编码 show create table tablename;

  4. C语言基础11

    函数指针的定义: 函数类型 (标识符 指针变量名)(形参列表) void  printHello( ); void printHello( ){ printf("hello world!!! ...

  5. API接口测试01理论

    定义 接口测试是系统组件间及多个系统之间的测试 如:app与Server间如何进行数据交换,传递 意义 确保主要流程及系统的稳定性 将BUG控制在项目前期 缩短产品的研发周期 检查服务器的异常处理能力 ...

  6. SSAS父子层次结构的增强-UnaryOperatorColumn属性

    上次我有讲到自定义汇总,这次的内容跟上次的差不多也算是自定义汇总,实现的方式不同而已!使用的是UnaryOperatorColumn属性. 这个属性说明: 一元运算符用于将成员自定义汇总到父级,汇总运 ...

  7. Linux文件解压缩详解

    tar命令 我们知道在Windows下最常见的压缩文件就只有两种,一是,zip,另一个是.rar.可是Linux就不同了,它有.gz..tar.gz.tgz.bz2..Z..tar等众多的压缩文件名, ...

  8. 【python】中文的输出,打印,文件编码问题解决方法

    直接在python中输入中文的字符串会报编译错误SyntaxError: Non-ASCII character,因为python文件默认编码方式是ASCII.如果想要打印中文字符,有两种方式: 1. ...

  9. QP在STM32F10X上第一个应用

        两天没有写博客了,这两天主要还是在考虑软件的结构性问题,用不用QP?用不用ST库函数?看了ucos,freertos,tinyos以及Contiki,库函数的问题看了使用库的软件结构,直接操作 ...

  10. zookeeper 各节点数据保证是弱一致性

    一致性保证: ZooKeeeper 是一个高性能的,可扩展的服务.不管是读和写操作是被设计成快速,虽然读比写快. 这样做的原因是在读的情况下,Zookeeper 可以提供旧的数据, 反过来又是由于Zo ...