oracle体系架构-2-SGA组成-个人笔记

SGA的基本组件:

1.shared pool

共享池是对sql,datafile元数据进行分析、编译以及加入执行计划的内存区域。

共享池由缓存池(librar pool) 数据字典池(data dictionary cache)和缓存结果集(resul cache)组成。

一:library cache:sql和plsql的解析,存放sql语句代码

例如在执行一条sql(select * from abc;)时,首先通过语法分析,进行语义检查,通过解析,得到一个执行计划。最后把这个执行计划缓存在library cache中,等待下次一个sql(select * from tbc;)请求发起时,不需要通过物理读进行查询。

二:data dictionary cache :存放数据字典信息

例如在执行select * form abc;这个sql时,首先会在语法解析和library cache中寻找是否存在abc这个表,如果没有,那么会进行物理读取,在磁盘中寻找adc这个表信息。这个读取过程中,会把物理读取的adc表存在在数据字典data dictionary cache这个池中。供其他用户和session使用。

三:server result cache:缓存结果集

例如在执行select * form abc;这个表时,执行计划对存在library cache中,但作为查询的结果集,会缓存在result cache这个池中。

2.database buffer cache

用于存储从磁盘文件中读取的数据共享到内存database buffer cache中,为所以用户和session共享。当后续的请求相同时,则无需进行物理读取,直接在内存中读取即可。

注意:在database buffer cache中,缺省池和非缺省池的概念需要掌握

一:缺省池,default pool

二:非缺省池,nodefault pool

oracle体系架构-2-SGA组成-个人笔记_第1张图片

 

 其中 default pool是标准块的内存空间大小,由sga自动管理。空间清理时受LRU算法进行空间清理。

nodefault pool 一般由 Npool  keep和recy组成。

  db_nk_cache_size   指定非标准块大小内存空间,比如2k4k16k32k

  db_keep_cache_size   存放经常访问的小表或索引等。

  db_recycle_cache_size   keep相反,存放偶尔做全表扫描的大表的数据。

 

①如何指定使用某个表调入nodefault pool

 

SQL> alter table scott.emp1 storage(buffer_pool keep);

 

SQL>

 

select segment_name,buffer_pool from dba_segments where segment_name='EMP1';

 

default pool对应的参数是db_cache_size与标准块default block是配套的,如果default block8k, db_cache_size这个参数将代替db_8k_cache_size

 

③如果要建立非标准块的表空间,先前要设定db buffer中的与之对应的db_nk_cache_size参数。

 

第一步,先指定db buffer里的16k cache空间大小。

 

SQL> alter system set db_16k_cache_size=8m;

 

第二步,建立非标准块表空间

 

SQL> create tablespace tbs_16k datafile '/u01/oradata/prod/tbs16k01.dbf' size 10m blocksize 16k;

 

SQL> select TABLESPACE_NAME,block_size from dba_tablespaces;

3.redo log buffer:以日志条目(redo entries)方式记录了数据库的所有修改信息(包括DMLDDL),目的是为数据库恢复,日志条目首先产生于日志缓冲区,日志缓冲区较小,一般缺省值在3M-15M之间,它是以字节为单位的。

主要作用是为了数据库的恢复,一般会把dml和ddl语法的修改信息进行记录。

 

 

 日志缓冲区的大小启动后就是固定不变的,如要调整只能通过修改参数文件后重新启动生效。不能动态修改!不能由SGA自动管理!

4.larg pool 大池 (可选)

一:主要作用于共享服务器的共享连接UGA

二:rman备份恢复

三:降低并行查询的shared碎片

5.java pool (可选)

主要作用是为java虚机分配内存空间,其中包含了java指定的代码和数据

6.steam pool 流池 (可选)

为了stream process而分配的内存空间。stream技术是为了在不同数据库之间共享数据,因此,它只对使用了stream数据库特性的系统是重要的。

 

你可能感兴趣的:(oracle体系架构-2-SGA组成-个人笔记)