oracle的sga

                                                               sga

oracle的sga
shared pool

■用于存储:

   ◆最近执行的SQL 语句

   ◆最近使用的数据定义
■由两个与性能相关的部分组成:

   ◆库缓存
   ◆数据字典缓存
■由參数SHARED POOL SIZE决定大小

库缓存

■存储最近使用的SQL和PL/SQL语句的信息

■共享最常用的语句

■管理上遵循LRU规则

■包括两个部分:
   ◆共享SQL区

   ◆共享PLSQL区
■大小由Shared Pool的大小决定

数据字典缓存 ■存储在数据库中最近使用的定义
■包括数据文件,表,索引,列,用户,权限和其他的数据库对象
■在分析阶段,服务器进程查找数据字典去验证对象的名字以及是否是合法访问
■对于查询和DML语句,如果数据字典的信息在缓存中能够提高响应时间大小由Shared Pool的大小决定

SGA中关键的内存片段。特别是性能与扩展上。
是sqI.pl/sql程序进行语法分析,编译,执行的内存区域。
库lbrary cache数据字典data dictionary cache,控制结构control structure组成。shared pool. size 决定大小。10G以后自动管理。
过小导致latch争用,ora-0431 错误。Lbrarycache 争用与等待。
>alter system set flush shared pool命令可清除shared pool内存中信息与我们相关的就是lthrancrache 库缪油或sal语句绍油了
用户提交一个sq语可,通过PGA转建到SGA, oracle 对册可进行分析.

■如果以前执行过,则按照以前执行的计划执行,通常是软分析[soft parse|或快速软分析

    ◆通过PCA提交Sql语句>parse语句>soft parse->执行语句- >通过PCA输出

■如果没执行过,oracle 开始分析语句的语法,语义,按照优化器规则获得最佳执行计划,并在内存中保存这个语句与之对应    的执行计划等相关信息,便于下次快速调用。

   ◆通过PGA提交Sql语句parse语句hard parse→分析与得到优化方案[CBOor RB0|→根据优化方案制定执行计划》执行语句    ◆一-通过PGA输出

数据高速缓存区

■暂存从数据文件中获得的数据块的数据映像

■同样遵循LRU算法管理内存
■当再次需要操作这些数据时可以从内存中直接获取和更新,语句执行效率能够大幅度的提高
■初始化参数DB_ BLOCK SIZE决定了数据块的大小,这也是数据库I/O的最小单位
■数据高速缓存区由多个独立的子缓存池构成,可以独立的设置大小:
    ◆Default池  DB CACHE SIZE
    ◆Keep池  DB KEEP CACHE SIZERecycle池  

    ◆DB RECYCLE CACHE SIZE

■只有defualt池可以被sga自动管理

重做日志缓冲区 ■暂存数据库中所有数据块的改变
■内存管理方法是FIFO
■重做日志被用于提供数据恢复功能
■暂存重做日志的目的是为了提高语句的执行速度
■大小由参数LOG_ BUFFER决定,但这个内存区不能动态调整大小
大池

■大池是系统全局区中可选的一个内存区
■主要在下面几种情况下使用:
    ◆共享服务器的用户全局区(UGA)
    ◆使用RMAN作 备份恢复-|并行进程  09
■大小由参数LARGE POOL SIZE决定,也可以动态改变大小

java池

■是系统全局区中一个可选内存区。

■用于Java程序的解析 和执行
■大小由参数JAVA POOL_ SIZE决定,也可以动态调整
■如果granule是4M, 默认是24M: 如果granule是16M, 默认大小是32M如果在数据库创建时选择了安装JVM组件,那么这     个池必须配置