《Oracle编程艺术》第四章-内存结构,章节简介

讨论Oracle如何使用内存,包括各个进程总的内存(PGA内存,即进程全局区内存)和共享内存(SGA)。

分析手动和自动PGA内存管理之间的区别,以及Oracle Database 10g中自动内存管理和Oracle Database 11g中自动内存管理的区别,还会说明各种方法适用于什么情况。

你会对Oracle如何使用和管理内存有深入的了解

 

这一章将讨论Oracle的3个主要内存结构:

1.系统全局区(System Global Area,SGA),这是一个大的共享内存段,几乎所有Oracle进程都要访问这个区域

2.进程全局区(Process(or Program)Global Area,PGA),这是一个进程或线程专用的内存,其他进程或线程不能访问

3.用户全局区(User Global Area,UGA),这个内存区与特定的会话相关联。它可能在SGA中分配,也可能在PGA中分配。这取决于是用共享服务器还是用专用服务器来连接数据库。如果使用共享服务器,UGA就在SGA中分配;如果使用专用服务器,UGA就在PGA中分配。

 

在我们讨论Oracle的内存管理时,共有以下5种设置方法:

1.自动内存管理(Automatic Memory Management,AMM),它是针对SGA和PGA的管理,并且只能用于Oracle Database 11g及更高版本上。这种模式下DBA只需要设置一个参数MEMORY_TARGET来指定数据库使用内存的目标,数据库将自行判断每个内存区域的大小。

2.自动SGA内存管理(Automatice Shared Memory Management,ASMM),它是针对SGA的管理,这种模式下DBA通过设置参数SGA_TARGET来指定整个SGA的目标大小。(使用SQL*Plus命令 show SGA可以看一看相关内存大小)

3.手动SGA内存管理(Manual shared memory management),它也是针对SGA的,DBA可以手动设置DB_CACHE_SIZE、SHARED_POOL_SIZE等参数来调整SGA中每个区域的大小。

4.自动PGA内存管理(Automatic PGA memory Managment),它是针对PGA的,DBA可以通过设置参数PGA_AGGREGATE_TARGET来指定整个PGA的大小。

5.手动PGA内存管理(Manual PGA memory managment),它是针对PGA的,DBA可以通过设置参数SORT_AREA_SIZE、HASH_AREA_SIZE等参数来调整PGA中每个区域的大小。Oracle强烈建议不要使用手动PGA管理。

 

注意:某些操作系统中的配置不能够兼容自动内存管理(例如,Linux中的HugePages)。具体细节请参考Oracle Database Administrator's Referene for Linux and UNIX-Based Operating Systems。

 

章节内容组织形式:

首先讨论PGA和UGA的管理,先手动后自动

然后在讨论SGA的管理,先手动后自动

最后讨论如何用一个参数来管理、控制SGA和PGA

发布了57 篇原创文章 · 获赞 20 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/shafatutu/article/details/95010738