Oracle 内存结构

Oracle内存结构


Oracle数据库=instance(实例) + database files (数据文件)

Oracle实例= 内存 + 后台进程


作用:

内存  -- 数据查询的速度

        -- 更好的提升数据处理的速度

后台进程 -- 为了完成特定的任务的服务进程

数据文件 -- 数据的永久保存


            

具体简述

内存:

  1. System global area (SGA) --SGA区包括Oracle实例需要的一系列内存组件,用于存放数据信息和数据控制信息。内存属于共享性。

  2. Program global area (PGA) -- PGA区属于非共享性存储,它的数据和控制信息为某个会话独有,当一个会话产生时,Oracle会为这个会话分配一个PGA内存区域,所以属于单个的服务端进程或者后台进程。就实例配置而言,pag_aggregate_target设定的值指这些会话占用的PGA的总和。

  3. User Global Area (UGA) -- UGA区保存和当前会话相关的信息,比如PL/sql的变量,绑定变量的值或者当前会话的相关信息。

  4. Software code ares -- 这是Oracle存放自身软件代码的一部分内存区,不允许其他会话访问。


System global area (SGA)


1 . Database Buffer Cache

  • 存放从磁盘中读到内存中的数据块,这些数据块可以被所有的会话访问,是全局共享的,一个buffer指的是用来从磁盘中读入的数据库的在内存中的存放位置,SGA中细分为Default pool、Keep pool、Recycle pool
  • Default pool --存放正常的内存区域
  • Keep pool --这个区域用于将一些数据始终固定在内存中,Default pool会根据一个LRU过期算法将过期的脏数据写到磁盘上,如果有一些业务数据规定始终要存放在内存中,防止再次从磁盘读取,可以将该数据块存放在keep pool区域内。
  • Recycle pool --存放一些不经常使用的数据块,避免这些数据块在Default pool池中占据空间。
  • 2k\4k\18k  --设定非标准大小(8K)表空间数据块信息 (show parameter k_cache_size , alter system set db_16k_cache_size=10M, create tabespace ts_16k blocksize 16k)
  • 3种状态 -- unused  clean  dirty
  • 2种模式 -- current mode(当前模式)   consistent mode(一致性模式)

 2 . Redo Log Buffer

  • 存放数据库产生的redo数据,通过LGWR进程以循环的方式将redolog buffer写入磁盘,当redolog已经被写入磁盘后,就可以被后续的日志数据覆盖

 3 . Shared Pool

  • 用来存放SQL的内存区,包括 Library Cache \ Data Dictionary Cache \ Server Result Cache \ Reserved Pool
  • Library Cache -- 保存着可以执行的SQL及PL/sql包,比如SQL语句的执行计划和一些控制结构
-- 当一条SQL语句被执行时,Oracle尝试到Library Cache中查找是否有相同的SQL(通过hash_value),如果有,将直接重用存在的SQL的信息(执行计划),这个称作软解析(soft pase)或者叫做 Library cache hit,反之,SQL将被重新解析,这个过程称为hard parse或者library cache miss(该操作消耗CPU)。
  • Data Dictionary Cache -- 存放Oracle的数据字典信息,这些信息包含数据库中对象的数据信息,结构信息等,这些信息在SQL解析过程中需要频繁的被访问到。基本属于静态信息,比如 视图 dba(all,user) tables ...   基表  user$,table$..... 固话表  x$....   x$bh等。
  • Server Result Cache -- 保留了SQL查询的结果集,对于后续的相关查询,Oracle无需重新加载数据块进行计算,直接使用现有的数据集,由参数 result_cache_mode设置,默认值 manual,通过HINT中result_cache时开启保留模式,设置为force时会严重的消耗shared_pool空间。同时该区域也保留 PL/SQL的函数结果。
  • Reserved Pool --预留空间,Ora-4031报错一般与该区域设置大小有关,可以通过_shared_pool_reserved_pct和shared_pool_reserved_size设置大小。

4 . Large Pool

  • 对数据的处理不适用LRU算法,一般在MTS模式下UGA会放在large pool,并行执行时会使用Large pool,RMAN备份时启动并行备份时,使用large pool。

5 . Java Pool

  • 用于保存会话运行的Java代码和信息
  • 存放着流相关信息,比如流队列信息,该内存池只为流复制提供内存空间。

6 . Fixed SGA

  • 固话SGA保存通用的数据库和实例状态信息。无法手工改变。




Program global area (PGA)

    

SQL Work Areas:

  1. Sort Area  --保存数据排序的区域

  2.  Hash Area  --保存数据hash区域

  3.  Bitmap Merge Area -- bitmap操作索引区


Private SQl Area(UGA)

  1.  Session Memory  --会话信息区域

  2.  Persistent Area  -- 同上

  3.  Runtime Area     -- 同上



User Global Area (UGA)

  1. session Variables -- 登录信息、变量值、Pl/sql参数
  2.  OLAP Poll -- olap维度对象,比如cube
  3. Dedicated server(专有连接服务),UGA保存在PGA中。
  4. Shared Server (MTS,共享连接服务),UGA保存在SGA中large_pool中。








来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31438017/viewspace-2139858/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/31438017/viewspace-2139858/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值