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

本文深入探讨Oracle数据库的内存管理,包括系统全局区(SGA)、进程全局区(PGA)和用户全局区(UGA)的使用。解析手动与自动PGA管理、自动内存管理(AMM)在OracleDatabase11g的应用,以及各种设置方法的适用场景。

讨论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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值