oracle 体系结构简介
1.1、SGA(system global area)
SGA是oracle Instance的基本组成部分,在示例启动是分配。是一组包含一个oracle实例的数据和控制信息的共享内存结构。主要用于存储数据库信息的内存区,该信息为数据库进程所共享。
1.1.1、共享池(shared pool)
1)data dictionary cache(缓存的是数据字典信息)
2)library cache
a)编译后的sql语句,当有新的语句来了之后,就从这里找,如果有的话,就直接执行了。
b)也涉及到命中率的问题
c)优化:以绑定变量方式,将where 过滤条件不同而其他相同的语句进行变量绑定,降低硬解析。
3)共享模式的情况下,PGA在共享池中。
4)每一个会话分配一个UGA,UGA在共享池中分配,如果是共享模式,那么久在Large pool中。
1.1.2、数据高速缓存区(database buffer cache)
1)命中率的概念
读内存的时候,如果在DB buffer cache中的话,那么就从内存中返回,如果没有的话,那么久从数据库中读到内存中。从内存中返回的比率越高说明命中率也高,性能相对也会较好。命中率较低的优化:加大内存,也可以将开辟一个keep缓存区,将经常访问的数据放到keep内存中。
1.1.3、重做日志缓存区(redo log buffer)
触发redo log buffer的写入规则
1)三秒钟
2)无论何时,只要有提交
3)三分之一满或者缓存了1M的重做日志数据
4)切换日志或检查点事件
1.2、PGA(program global Areas)
此区域包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SGA正相反,PGA是只被一个进程使用的私有区域,PGA在创建进程时分配,在终止进程时回收。专用模式下每一个服务器进程分配使用一个PGA。
1.3、内存结构
1)用户进程(user process)
》是一个需要与oracle server交互的程序
》运行于客户端
》当用户运行于某个工具或应用程序时创建,当用户退出上述程序时结束。
》用户向oracle server 发出调用,但它并不与oracle server 直接交互,而是用过server process与oracle server进行交互。
2)服务进程(server process)
》是一个直接与oracle server交互的程序
》与oracle server运行于同一台机器上
》使用PGA执行user process发出的调用,并向user process返回结果状态和结果信息。
3)后台进程(background)
后台进程用于维护物理存储于内存中的数据之间的关系。主要包括:
》SMON:系统监视进程,进程负责在实例启动时恢复实例,包括清除临时段以及恢复因系统崩溃而中断的事务。
a)实例恢复
b)重做已提交的事务
c)打开数据库
d)回滚未提交的事务
e)合并数据文件中相邻的自由空间
f)释放临时段的空间
》PMON:进程监视进程,进程负责监视数据库的处理情况,并负责清除掉死掉的进程。PMON还负责重启失败的调度进程。
a)回滚用户的当前事务。
b)释放相关的锁。
c)释放其他相关的资源。
》DBWn:数据库写入进程,进程负责将脏数据(已经修改但是没有提交的数据)从数据缓存区写回磁盘。当一个事务修改数据块中的数据以后,不需要立即将数据块写回磁盘。由于oracle所采用的先进机制,修改后的数据可以不用立即回写,并且出现故障也不会丢失。因此DBWR可以采取更有效的写回方式,而不用在事务提交完之后立即写回。DBWR通常定时写回数据,除非数据缓冲区需要清空或已满。
数据写回时,采用了最近最少使用原则。对于支持异步io的系统,只需要一个DBWR进程即可,对不支持异步io的可以通过增加DBWR的个数来提升效率。
触发DBWR进程的情况:
#发生检查点
#达到脏缓冲区阈值
#超时
#将表空间设置为脱机或只读
#删除或截断表
#备份表空间
》CKPT:检查点进程,CKPT进程负责向DBWR进程发送信号,要求执行一次检查点,并更新数据库的所有数据和控制文件为一直检查点。
SKPT会检查控制文件的SCN和数据文件的SCN是否一直,如果不一致,它会触发DBWR保证数据库的一致性。checkpoint(检查点),是指由DBWR进程将所有修改过的数据缓冲区里的脏数据写回数据文件。CKPT是可选的,如果没有CKPT进程,则有LGWR进程代行这些任务。
a)是DBWR将SGA中所有被修改的数据库缓冲区的内容写入磁盘,无论事务是否被提交
b)用检查点信息更新数据文件头
c)用检查点信息更新控制文件
它可以保证
d)将经常被修改的数据写入磁盘
e)简化实例恢复
》LGWR进程:日志写入进程LGWR负责将日志缓冲区中的数据写入重做日志。由于COMMIT操作依赖于LGWR写回日志(commit操作触发LGWR将日志缓冲区数据写入redo日志),因此系统性能容易受到LGWR的影响。
LGWR的执行要早于DBWR
触发条件:
a)事务提交
b)三分之一的redo日志缓冲区已满
c)每三秒钟
d)在DBWR写磁盘之前
》ARCH进程:归档日志进程,ARCH进程负责将在线重做日志复制到归档存储器,保障redo log文件的完整性。
以上是对oracle体系结构中的一些常用的进程与内存区做一个基础的描述,如果想深入去了解oracle体系结构原因,还是需要找一些详细全面的文档来研究。
oracle 体系结构简介的更多相关文章
- oracle体系结构简介
oracle体系结构简介 一.物理存储结构 1.数据文件 存放数据库数据,以dbf为扩展名.将数据放在多个数据文件中, 再将数据文件分放在不同的硬盘中,可以提高存取速度. ...
- Oracle数据库简介
Oracle数据库简介 一.介绍 Oracle数据库系统是美国Oracle(甲骨文)公司提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(Client/Server,C/S)或浏览 ...
- Oracle体系结构学习笔记
Oracle体系结构由实例和一组数据文件组成,实例由SGA内存区,SGA意思是共享内存区,由share pool(共享池).data buffer(数据缓冲区).log buffer(日志缓冲区)组成 ...
- 黑马oracle_day01:01.oracle体系结构
01.oracle体系结构 02.oracle的基本操作 03.oracle的查询 04.oracle对象 05.oracle编程 01.oracle体系结构 开发环境:VMware® Worksta ...
- 1.Oracle数据库简介
Oracle数据库简介 Oracle Database,又名Oracle RDBMS,或简称Oracle.是甲骨文公司的一款关系数据库管理系统.它是在数据库领域一直处于领先地位的产品.可以说Oracl ...
- Oracle体系结构总结
1.Oracle 体系结构摘要图 2.Oracle 体系结构相关笔记 1.Oracle 体系结构摘要图 2.Oracle 体系结构相关笔记 可参考Oracle Architecture系列随堂笔记: ...
- oracle 体系结构
oracle 体系结构 数据库的体系结构是指数据库的组成.工作过程与原理,以及数据在数据库中的组织与管理机制. 1. oracle工作原理: 1).在数据库服务器上启动Oracle实例:2).应用程序 ...
- Oracle实例和Oracle数据库(Oracle体系结构)
--========================================== --Oracle实例和Oracle数据库(Oracle体系结构) --==================== ...
- 【转载】Oracle实例和Oracle数据库(Oracle体系结构)
免责声明: 本文转自网络文章,转载此文章仅为个人收藏,分享知识,如有侵权,请联系博主进行删除. 原文作者:Leshami 原文地址:http://blog.csdn.net/ ...
随机推荐
- javaWeb项目(SSH框架+AJAX+百度地图API+Oracle数据库+MyEclipse+Tomcat)之一 基础Struts框架搭建篇
即将开始着手写这个项目,所以希望通过这篇博客来记录自己学习的过程 今天开学第一天,就上了软件工程实践课,自己也开始着手做这个大作业了.首先我的项目名称叫做智能班车管理系统. 项目的概况: 该软件产品是 ...
- linux下编译安装nginx
1.首先下载稳定版nginx1.10.2 使用wget命令下载 wget http://nginx.org/download/nginx-1.10.2.tar.gz 2.然后解压 tar -zxvf ...
- 【Vue 入门】使用 Vue2 开发一个展示项目列表的应用
前言 一直没有找到一个合适的展示个人项目的模板,所以自己动手使用 Vue 写了一个.该模板基于 Markdown 文件进行配置,只需要按一定规则编写 Markdown 文件,然后使用一个 在线工具 转 ...
- 完全背包hdu1114
https://vjudge.net/contest/68966#problem/F 初始化就行了:dp[0]=0: 这题还要刚好装满背包,输出时进行判断 #include<map> #i ...
- mac下安装MySQL完整步骤(图文详情)
原文摘自:http://www.jb51.net/article/103841.htm 最近使用Mac系统,准备搭建一套本地web服务器环境.因为Mac系统自带PHP和apach,但是没有自带mysq ...
- [刷题]算法竞赛入门经典(第2版) 5-3/UVa10935 - Throwing cards away I
书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 代码:(Accepted,0 ms) //UVa10935 - Throwing cards away I #incl ...
- 腾讯IVWEB团队:前端 fetch 通信
欢迎大家关注腾讯云技术社区-博客园官方主页,我们将持续在博客园为大家推荐技术精品文章哦~ 作者:villainthr 文章摘自: 前端小吉米 随着前端异步的发展, XHR 这种耦合方式的书写不利于前端 ...
- 解决ssh或ftp下root用户认证失败问题
问题:当连接ssh远程终端或使用ftp方式进行文件传输时,使用普通用户可以进行远程登录,但使用root用户则认证失败,提示密码错误.而我们在普通用户登录下,su - root,验证密码,是可以正常切换 ...
- springMvc注解之@ResponseBody和@RequestBody
简介 springmvc对json的前后台传输做了很好封装,避免了重复编码的过程,下面来看看常用的@ResponseBody和@RequestBody注解 添加依赖 springmvc对json的处理 ...
- linux 如何打包代码
去 php-pear-YC-Rcs-Base.spec.in 文件中 找到版本号 修改 +1 如下图: 将它提交 并在 git commit -m "release 1.0.3" ...