Oracle 物理体系
Oracle 物理体系
- Oracle 物理体系
- 问题
- 参考资料
Oracle 物理体系

PGA:program global area ,私有不共享内存。
PGA起到预处理的作用:
1.保存用户的连接信息,如session属性,绑定变量等;
2.保存用户权限等重要信息;
3.需要排序时,PGA就是排序区;
SGA:system global area,共享内存。
SGA由下组成:
1.共享池
2.数据缓冲区
3.日志缓冲区
后台进程:
1.PMON:process monitor 进程监视器
2.SMON:system monitor 系统监视器
3.DBWR:database writer 将数据缓冲区的数据刷到磁盘数据文件中
4.LGWR:log writer 将日志缓冲区的数据刷到磁盘日志文件中
5.CKPT:checkoutPoint 触发DBWR,批量将数据缓冲区的数据刷到磁盘中。并非是commit操作触发DBWR,因为批量操作比单次操作效率高。
6.ARCH 归档日志文件
……
数据库:
1.数据文件
2.参数文件
3.控制文件
4.日志文件
SGA+后台进程 = 数据库实例;
Oracle服务 = 实例(内存+进程)+ 数据库(磁盘文件);
在多实例数据库环境下,实例和数据库是多对一的关系,但是在大部分情况下是一对一。
SQL语句在物理体系中的流转过程:
1.SQL进入PGA进行预处理。保存连接信息,权限信息。如果有排序指令,则进行排序,PGA就是排序区。若内存不够,超出的部分需要到临时表空间中进行排序,即在磁盘中完成排序。只要session不断开连接,下次系统不需要再到磁盘中读取相关的连接信息和权限信息,直接从PGA内存空间中获取。
2.SQL匹配一条唯一的HASH值,进入SGA进行处理。先在共享池中查询是否有存储该HASH值,若有,则跳过语法语义检查、权限检查、解析,直接获得执行计划。若无,则先进行语法语义检查,权限检查,没有问题的话生成该条SQL的唯一HASH值并保存下来。然后进行解析,解析该SQL执行计划。完成解析后将执行计划保存起来,并和HASH值对应起来。
3.SQL进入数据缓冲区,检查是否有需要的数据,若无,则按照执行计划到磁盘数据库文件中查找,找到了就带着数据返回到数据缓冲区。
4如果SQL语句是查询语句,则到第三步,即完成了SQL语句。如果是更新语句,则要遵循 “日志现行” “凡事有记录”的原则,记录日志,并且要保存数据的前镜像。然后才进行更新操作。
Tips:
1.因为Oracle有缓存的功能,如果有缓存SQL相应的连接信息,权限信息,执行计划,数据等,不用去磁盘上读取,可以减少物理读。所以执行相同的SQL,第二次比第一次快。
2.如果PGA内存分配太小,排序量太大,部分排序需要到磁盘上进行,IO操作增多,会降低性能。
3.commit不能触发DBWR,而是CKPT触发,是因为批量操作效率优于单次操作。
4.保存数据前镜像,可以实现回滚和数据的一致读。
问题
1.Oracle为什么要有归档日志文件的操作,为什么不直接将日志缓冲区中的日志信息保存到归档文件中。
2.没有commit,DBWR也会将数据刷到磁盘数据库文件中?
参考资料
“收获,不止Oracle”
Oracle 物理体系的更多相关文章
- Oracle 10g体系机构及安全管理《思维导图》
通过学习Oracle数据库后,我对数据库又有了进一步的了解,Oracle数据库 10g体系机构分为 物理和逻辑存储结构. 下面是我对Oracle数据库做的思维导图和笔记 (全屏查看:<思维导图& ...
- Oracle 逻辑体系
Oracle 逻辑体系 主题 Oracle 逻辑体系 参考资料 Oracle 逻辑体系 表空间.模式.用户.段.区.块 Oracle中的数据逻辑上存储于表空间,物理上则存储于属于表空间tabl ...
- Oracle物理体系结构
一.ORACLE 物理体系结构 原理结构图 各部分解释: PGA: 私有内存区,仅供当前发起用户使用. 三个作用 用户登录后的session信息会保存在PGA. 执行排序,如果内存不够,oracle会 ...
- Oracle 物理备份--rman
Oracle 物理备份--rman 1.直接在服务器,打开命令行,输入: rman target/ 2.配置参数也一同备份 configure controlfile autobackup on; 如 ...
- [转帖]Oracle 补丁体系(PSR/PSU/CPU) 及 opatch 工具 介绍
Oracle 补丁体系(PSR/PSU/CPU) 及 opatch 工具 介绍 原文:http://blog.csdn.net/tianlesoftware/article/details/58095 ...
- Oracle物理的体系结构
体系结构图的学习: 老余服装店的故事 结构图: SQL查询语句 SGA 共享池shared pool 数据缓存区Buffer cache PGA 进程 SQL更新语句 SGA: 日志缓存区 日志文件 ...
- ORACLE 物理读 逻辑读 一致性读 当前模式读总结浅析
在ORACLE数据库中有物理读(Physical Reads).逻辑读(Logical Reads).一致性读(Consistant Get).当前模式读(DB Block Gets)等诸多概念,如果 ...
- 浅谈Oracle权限体系
对于数据库来讲,安全性的重要程度不言而喻,今天我们就来聊一聊Oracle的权限体系. 1.账户管理 在此之前,先解释下一个容易混淆的概念:模式.所谓模式,指的是用户账户所拥有的一组对象(比如表,索引, ...
- oracle物理视图(转)
近期根据项目业务需要对oracle的物化视图有所接触,在网上搜寻关于这方面的资料,便于提高,整理内容如下: 物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的.普 ...
随机推荐
- openerp config file
[options] addons_path = /bin/openerp/addonsadmin_passwd = admincsv_internal_sep = , db_host = False ...
- Java: 获取当前执行位置的文件名/类名/方法名/行号
在 JAVA 程序有时需要获取当前代码位置, 于是就利用 Thread.currentThread().getStackTrace() 写了下面这个工具类, 用来获取当前执行位置处代码的文件名/类名/ ...
- Date日期类型转化成中文字符串
例子: select to_char(sysdate,'yyyy"年"mm"月"dd"日"') as nowYear from dual 结 ...
- iOS 物流信息时间轴
代码地址如下:http://www.demodashi.com/demo/11958.html timelineLogistics 是模仿淘宝物流信息时间轴界面的自定义View 准备工作 引入Maso ...
- 【Android进阶】怎样使用文件来保存程序中的数据
在程序中.有非常多保存和获取数据的方法,本篇文章,主要介绍使用文件系统对程序中的数据进行保存和读取的操作 我直接写了一个帮助类,进行文件的写入和读取操作 /** * 用于在文件里保存程序数据 * * ...
- The user specified as a definer ('root'@'%') does not exist
通常是因为root用户对全局host无訪问权限.因此仅仅要给root用户加入一个訪问权限就可以. 解决的方法: 登陆mysql .运行 mysql -u root -pPasswd mysql ...
- (二)Redis 笔记——发布&订阅、事务、数据库操作
1. Redis 发布订阅 1.1 概述 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息. Redis 客户端可以订阅任意数量的频道. 下 ...
- WIN10系统如何设置系统的护眼色
小编的眼神不是很好,所以喜欢把电脑的各种文档的背景色设置成护眼色(就是在视觉效果看起来非常舒适的那种淡绿色) 方法/步骤 windows+R键调出运行窗口(或者鼠标右击开始键,选择运行) ...
- 121. Best Time to Buy and Sell Stock【easy】
121. Best Time to Buy and Sell Stock[easy] Say you have an array for which the ith element is the pr ...
- nginx源码学习_数据结构(ngx_str_t)
nginx中关于字符串的数据结构位于src/core/ngx_string.c和src/core/ngx_string.h中 先来看一下数据结构: typedef struct { size_t le ...