ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle内存结构

Oracle内存结构

原创 Linux操作系统 作者:zhaojienju 时间:2011-01-23 16:22:42 0 删除 编辑
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 SGA(System global area)

PGA(process global area):可能包含UGA,其他去用于完成内存中的排序、位图合并以及散列。

UGA(user global area):共享服务器,在SGA中分配;专用服务器,在PGA中分配。

 

9i起,有两种办法来管理PGA中的非UGA内存:

手动PGA内存管理:告诉oracle对一个特定进程,需要多少内存来完成排序或散列。手动设置参数SORT_AREA_SIZE, SORT_AREA_RETAINED_SIZE, HASH_AREA_SIZE

 

自动PGA内存管理:告诉oracle在系统范围内可以使用多少内存。根据工作负载动态地调整实际使用的内存量。一方面尽可能充分地使用内存,另一方面不要超额使用物理上不存在的内存。

WORKAREA_SIZE_POLICY=AUTO, PGA_AGGREGATER_TARGET>0

 

SGA:可以用视图V$SGASTAT来查看各个pool分配的内存。SGA分为:

Java pool

Large pool: 共享服务器连接中的UGA在其中分配;rman backup

Shared pool: cursor, stored procedure, data dictionary, and etc

Stream pool

“Null” pool: data block buffer, redo log buffer, 固定SGA(SGA的“自启”区,oracle在内部要使用这个区来找到sga的其他区)

 

自动SGA内存管理:设置SGA_TARGET

 

Redo log buffer: show parameter log_buffer

LGWR在以下情况启动对这个区的刷新输出:

1.       3

2.       commit

3.       切换日志文件

4.       重做缓冲区1/3满,或者大于1MB

 

Block buffer cache:频繁使用的块会被缓存,不常使用的块不会缓存太久。

 

Shared pool: 缓存一些程序数据,比如运行的pl/sql代码,系统参数、数据字典缓存,解析后的sql语句。

设计共享池是为了反复使用查询计划。

 

Large pool:用于大块内存的分配。共享池根据LRU来管理内存,这对于缓存和重用数据很合适。不过,大块内存分配则是得到一块内存后加以使用,然后就到此为止,没有必要缓存这个内存。

主要用于:

1.       共享服务器连接,用于在SGA中分配UGA

2.       语句的并行执行

3.       RMAN backup

 

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

请登录后发表评论 登录
全部评论

注册时间:2010-10-05

  • 博文量
    80
  • 访问量
    192334