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;

相克军_Oracle体系_随堂笔记003-体系概述的更多相关文章

  1. 相克军_Oracle体系_随堂笔记002-基础

    1.常见的Oracle生产库环境: 图2-1可以说是标准的生产库环境,处处体现了冗余,有效防止了单点故障.这就是HA(高可用) 而且冗在某种条件下还可以去掉,平常实现同时运行提供服务,如果一台坏掉,另 ...

  2. 相克军_Oracle体系_随堂笔记001-概述

    一.Oracle官方支持 1.在线官方文档 http://docs.oracle.com/ 2.metalink.oracle.com,如今已经改成:http://support.oracle.com ...

  3. 相克军_Oracle体系_随堂笔记004-shared pool

    本章主要阐述SGA中的shared pool. Shared pool { 1.free 2.library cache(缓存sql语句及其执行计划) 3.row cache(数据字典缓存) }   ...

  4. 相克军_Oracle体系_随堂笔记005-Database buffer cache

    本章主要阐述SGA中的Database buffer cache. Buffer cache { 1.pin (读写瞬间的状态) 2.clean 3.dirty 4.unused } --Databa ...

  5. 相克军_Oracle体系_随堂笔记006-日志原理

    简单来说,学习Oracle数据库就两个目标: 保证数据库数据的一致性: 提高数据库的性能(这个和日志没关系).   日志的功能:     只是保证数据库数据的一致性:   1.Oracle日志原理   ...

  6. 相克军_Oracle体系_随堂笔记007-PGA

    实际工作中,Oracle中有两个很重要:Server Process 和 PGA.   PGA内存作用和构成   1.PGA作用 2.PGA构成 1)private SQL area   2)Sess ...

  7. 相克军_Oracle体系_随堂笔记008-存储结构

    控制文件.数据文件.日志文件    放在存储上.   参数文件:数据库启动时读取,并不关闭,但是启动过后丢了也没事.一般放在服务器上. $ORACLE_HOME/dbs下   备份文件{     控制 ...

  8. 相克军_Oracle体系_随堂笔记009-检查点队列

    1.检查点队列 checkpoint queue RBA 日志块地址 redo block address LRBA 第一次被脏的地址 HRBA 最近一次被脏的地址 on disk rba 重做日志( ...

  9. 相克军_Oracle体系_随堂笔记010-SCN

    1.SCN的意义?system change number     时间    先后.新旧 select dbms_flashback.get_system_change_number, SCN_TO ...

随机推荐

  1. C\C++中声明与定义的区别

    声明和定义是完全同的概念,声明是告诉编译器"这个函数或者变量可以在哪找到,它的模样像什么".而定义则是告诉编译器,"在这里建立变量或函数",并且为它们分配内存空 ...

  2. Java环境设置

    win7/win8下JDK环境变量设置方法 首先需要到官网上下载JDK这款软件,本人下载的是jdk-7u40-windows-i586版本,安装完成显示jdk1.7.0_67. 其次选择安装路径.本人 ...

  3. css确定元素水平居中和垂直居中

    ---恢复内容开始--- 首先,我们在了解如何通过css了解元素水平和垂直居中之前,先要了解下html都有哪些元素,这些元素与偶有哪些分类,因为不同类别的元素的水平垂直居中方法是完全不同的,究其根本当 ...

  4. 【转】成为Java顶尖程序员 ,看这10本书就够了

    “学习的最好途径就是看书“,这是我自己学习并且小有了一定的积累之后的第一体会.个人认为看书有两点好处: 1.能出版出来的书一定是经过反复的思考.雕琢和审核的,因此从专业性的角度来说,一本好书的价值远超 ...

  5. poj2718-Smallest Difference(枚举全排列)

    一,题意: 给出最多10个数字,将它们划分为两个整数,求差值最小的值(除非只有一位数,否则不允许出现先导0) 很显然如果总共有n个数,必然有一个整数长n/2,另一个长n-n/2.二,思路: 利用nex ...

  6. ASP.NET Core 十种方式扩展你的 Views

    原文地址:http://asp.net-hacker.rocks/2016/02/18/extending-razor-views.html 作者:Jürgen Gutsch 翻译:杨晓东(Savor ...

  7. mono 3.10.0 正式发布:性能进一步改进

    Mono是Xamarin资助的一个项目,是微软的.NET框架的开源实现.它使得使用C#.F#和其他.NET语言进行跨平台开发成为可能.Xamarin在Mono之上构建了跨平台开发工具以及像Xamari ...

  8. 基于Mono跨平台移动应用开发框架发布Xamarin 3.0

    跨平台移动应用开发框架Xamarin可以让你完全用C#编写你的应用程序,在iOS.Android.Windows Phone 8.Windows8和mac平台上共享相同的代码.你可以重用你最喜欢的.N ...

  9. 你所不知道的JavaScript数组

    相信每一个 javascript 学习者,都会去了解 JS 的各种基本数据类型,数组就是数据的组合,这是一个很基本也十分简单的概念,他的内容没多少,学好它也不是件难事情.但是本文着重要介绍的并不是我们 ...

  10. 简单的JavaScript互斥锁

    去年有几个项目需要使用JavaScript互斥锁,所以写了几个类似的,这是其中一个: //Published by Indream Luo //Contact: indreamluo@qq.com / ...