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. 新浪微博iOS示例,登录,获取个人信息

    1.导入第三方库和系统框架

  2. Java web 实现 之 Filter分析ip统计网站的访问次数

    统计工作需要在所有资源之前都执行,那么就可以放到Filter中了. 我们这个过滤器不打算做拦截操作!因为我们只是用来做统计的. 用什么东西来装载统计的数据.Map<String,Integer& ...

  3. A - 高精度(大数)N次方(第二季水)

    Description Problems involving the computation of exact values of very large magnitude and precision ...

  4. mybatis使用order by注意

    直接用动态参数生成,不会排序: <if test="orderColumn!=null and orderColumn != ''"> ORDER BY #{order ...

  5. MySQL实用基础笔记

    /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限验证登录MySQL */ mysq ...

  6. bzoj 2648 SJY摆棋子 kd树

    题目链接 初始的时候有一些棋子, 然后给两种操作, 一种是往上面放棋子. 另一种是给出一个棋子的位置, 问你离它最近的棋子的曼哈顿距离是多少. 写了指针版本的kd树, 感觉这个版本很好理解. #inc ...

  7. Nginx 配置指令的执行顺序(五)

    Nginx 的 content 阶段是所有请求处理阶段中最为重要的一个,因为运行在这个阶段的配置指令一般都肩负着生成“内容”(content)并输出 HTTP 响应的使命.正因为其重要性,这个阶段的配 ...

  8. Performance of Transport Control Protocol over Dynamic Spectrum Access Links

    2007 IEEE 这篇论文主要就是分析了几个版本的TCP协议在DSA网络中的性能问题. 得出的结论是: 大部分现在在用的几个版本的TCP协议,都是能够较好地适应DSA环境,吞吐率都能达到95%.当然 ...

  9. filestream streamreader

    filestream是一个读取文件的stream,其本身也是支持read和write的,负责的对文件的读与写,而streamreader则是建立在对流的基础上的读,同时还有streamwrite ht ...

  10. OSCHina技术导向:开源企业ERP系统Opentaps

    opentaps Open Source ERP + CRM 基于 Apache OFBiz (The Open For Business Project ) 构建, 是一款设计良好, 逐渐流行起来的 ...