1.进程结构图

对Oracle生产库来讲,服务器进程(可以简单理解是前台进程)的数量远远大于后台进程。因为一个用户进程对应了一个服务器进程。
而且后台进程一般出问题几率不大,所以学习重点也是服务器进程和PGA的关系(容易出问题)。
 
2.Oracle 实例管理
6大共享池,5大后台进程,3大文件
控制文件:记录了各文件存放的位置以及当前的运行状态;
数据文件:存放数据;
重做日志文件:对数据文件所有的修改记录;
补充知识点:
(1)实际生产环境中可以多个实例(一般是2个,4个,8个)对应一个数据库。
例如RAC技术,在日常情况下2个实例实现负载均衡(LB),在一个实例出故障的时候也能继续单实例运转。
(2)实际生产库环境,user=>应用服务器=>数据库服务器;
客户端输入SQL语句,SQL语句通过网络到达,数据库实例,server process接受SQL语句。
 
3.SQL语句执行过程剖析
(1)sql语句读取数据:
解析(parse)=>执行(execute)=>获取数据(fetch)
 
解析简单划分可以分为:硬解析和软解析。(实际还有软软解析)
硬解析过程中:会判断sql语法,查询的表是否存在,是否有权限,判断如何执行(挑出最优的执行计划作为执行计划,最费时间,耗费CPU,I/O资源);
软解析是在shared pool中library cache中找到了缓存的sql语句和执行计划,这样就不会再挑选执行计划,节约了大部分时间。
 
sql语句读取这块还引入了一个L I/O和 P I/O的概念:
L I/O    逻辑读(内存读)
P I/O    物理读(硬盘读)
 
Database buffer cache:用来缓存dbf的数据块。如果用户查询的数据块没有在这里找到,会从数据文件中取数据先放在buffer cache中,再返回给用户。
 
有关缓存的地方都涉及一个命中率的概念,实际上,命中率低一定有问题,命中率高不一定没问题,还要关注此时系统每秒钟的物理读是多少。
#vmstat 1 10
#iostat 1 10
(2)sql语句修改数据:
只是修改buffer cache中的数据,这样效率高。
注:server process不负责写,由background process负责写(DBWn,LGWR)。这实际上是Oracle设计的一个小技巧,把用户不关心的事情交给后台进程来做,把跟用户关心的才交给server process来做,后期优化也主要就针对server process进行优化。
 
4.shared pool、sql共享、绑定变量
a、shared pool的组成
    3块区域:free、library cache、row cache

    select * from v$sgastat a where a.name = 'library cache';
select * from v$sgastat a where a.pool = 'shared pool' and a.name = 'free memory';
select * from v$sgastat a where a.name = 'row cache';
简述数据字典

b、硬解析
    硬解析步骤、软解析步骤
    讲解shared pool内存块组成结构
    两个概念:chain、chunk
    ora-4031错误

    select count(*) from x$ksmsp;
select count(*) from dba_objects;
alter system flush shared_pool;

软硬解析的具体情况

    select name, value from v$sysstat where name like 'parse%';

c、SQL共享,绑定变量
    SQL语句组成,动态部分、静态部分
    cursor_sharing

    delare
v1 varchar2(10);
n1 int;
begin
n1:=1;
select salary into v1 from test where id=n1;
end;

最新文章

  1. U盘安装Ubuntu 10.4 Server
  2. cacert.pem
  3. shell常用命令归类整理
  4. PhpExcel笔记,phpExcel中文帮助手册
  5. eclipse中快捷键
  6. js 猜数字游戏
  7. iOS视频录制、压缩导出、取帧
  8. codeforces 334A - Candy Bags
  9. Linux输出重定向
  10. IE6,IE7下滚动条没有生效解决方法
  11. TMS320F28335项目开发记录5_28335之CCS编程基础
  12. ExtJs--02--MessageBox相关弹出窗口alert,prompt,confirm采用
  13. BZOJ 1018: [SHOI2008]堵塞的交通traffic [线段树 区间信息]
  14. wpf研究之道-datagrid控件(1)
  15. Jupyter notbook& REVEAL.JS& nbconvert 使用jupyter notebook制作slides
  16. project 2013 任务显示编号
  17. CCF-模板生成系统-201509-3
  18. Spring Boot实战系列-----------邮件发送
  19. 叉积(POJ - 2318 )
  20. scala编程第15章

热门文章

  1. iOS 让按钮上的标题换行显示
  2. java并发编程(十三)经典问题生产者消费者问题
  3. Django数据导入
  4. 【实战Java高并发程序设计6】挑战无锁算法:无锁的Vector实现
  5. windows或mac上对iOS设备截图
  6. 通杀所有系统的硬件漏洞?聊一聊Drammer,Android上的RowHammer攻击
  7. ABP理论学习之NHibernate集成
  8. 学习设计模式第二十七 - GoF之外简单工厂模式
  9. Python黑帽编程 3.2 ARP监控
  10. 让浏览器不再显示 https 页面中的 http 请求警报