OracleDBA之路之Oracle体系结构介绍(二)

这次介绍Oracle的Memory Structure(内存块)
Oracle包含两大内存块
1:System Global Area(SGA)
SGA 主要有3个内存块 Shared Pool(共享池),Database Buffer Cache(数据缓存池),Redo Log Buffer(日志缓存池),还有2个 Large Pool,Java Pool
查看SGA的大小:
SQL> show sga;
SGA是一个可动态变化的内存块,它的最大值由SGA_MAX_SIZE来决定的。
  LOG_BUFFER它的大小由Redo Log Buffer来决定
  DB_CACHE_SIZE 它是固定的,如果是NT系统则是52M,如果是Unix系统则为 48M
  SHARED_POOL_SIZE,默认大小为16M,如果是64位则为64M
  JAVA_POOL 默认大小为24M
  LARGE_POOL_SIZE默认大小为0M

granules 分配内存的基本单位
如果SGA的小于128M则 granules的大小为4M,否则为16M
在系统中查看granules的大小
select component,granule_size from v$sga_dynamic_components;

-Shared Pool
主要用于存放解析好的sql语句及pl/sql语句
---Library Cache
用于存放解析好的sql语句及pl/sql语句,Oracle执行语句的时候先从Libray Cache中查找,如果找到则直接执行,如果没有则重新解析并执行
---Data Dictionary Cache
用户存放数据字典的,信息包括 用户信息,数据文件名称等
修改大小使用下面的命令即可,但是它的最大值不能超过SGA_MAX_SIZE 
alter system set shared_pool_size=64M

-Database buffer cache
存储真正的数据,包含来自数据库文件的数据及即将写到数据库文件的数据,Oracle查询时先从Database buffer cache中找数据,如果没有则到磁盘中查找。主要作用就是提高性能。
Oracle是按块来存储的(DB_BLOCK_SIZE)
---DB_CACHE_SIZE
不允许设置为0,
---DB_KEEP_CACHE_SIZE
---DB_RECYCLE_CACHE_SIZE
修改大小
alter system set db_cache_size=94M;

-Redo Log Buffer
可恢复的操作有insert,update,delete,create,alter,drop
每对数据进行一次改变,在redo 中就记录一条 为redo entries
一条redo记录可以恢复一次对数据库的改变

Large Pool
共享服务器会话内存
IO服务器进程
备份和恢复操作
并行执行等

在备份及恢复时如果BACKUP_DISK_IO=n 并且 BACKUP_TAPE_IO_SLAVE=TRUE时,Large Pool将被使用
大小由参数 LARGE_POOL_SIZE决定,不是动态参数
JAVA POOL
JAVA POOL并不是必须的,如果你的安装并使用java的话,它将被使用,在9i中大小为24M


2:Program Global Area(PGA)
连接到Oralce数据库的每个用户进程保留到内存创建进程的时候分配,终止进程的时候销毁,一个进程只能有一个pga

你可能感兴趣的:(oracle)