AIX:确定在AIX上Oracle内存的使用
适用于:
Oracle Server - Enterprise Edition - Version: 8.1.7.0 and later [Release: 8.1.7 and later ]
IBM AIX on POWER Systems (64-bit)
IBM AIX on POWER Systems (32-bit)
对于在AIX上的oracle数据库的内存是如何使用的有一个更好的理解。
应用范围:
本文旨在为AIX系统管理员或者工作在AIX系统上的DBA。但可用于任何人想更好地了解了Oracle使用AIX系统上内存的方式。
了解Oracle程序类型
-------------------------------------
第一个程序类型你应该知道的是,Oracle后台进程。当您启动一个数据库实例创建这些进程。常见的例子是Oracle后台进程-日志写进程。
第二个类型你应该知道的是Oracle的用户进程。这些进程被创建当你启动一个计划,将工作与Oracle数据库。常见的例子是Oracle的用户进程有sqlplus,IMP,EXP,和SQLLDR,但可能包括许多其他。这些用户进程常常被称为客户端进程,通常命名为你用来启动程序的命令相同。例如,sqlplus的用户进程将被命名为“SQLPLUS”。第三个类型你应该知道的是Oracle服务器进程。服务器进程使用的数据库实例直接从用户进程的请求进行。服务器进程通常被称为影子进程,这是将要在这篇文章中使用的术语。影子进程可能会专门到一个单一用户进程或者多线程服务器(MTS)配置一部分。影子进程被命名为ORACLE_SID,其中SID是ORACLE_SID的值。例如,连接到数据库实例“的DEV”一个影子进程将被命名为“oracleDEV”。
了解Oracle内存使用
Oracle内存可以被分为两个类型,私有的和共享的。私有内存只用单个进程。相比之下,共享内存被不止一个进程使用,共享内存段确定oracle正在使用多少内存,应只计算一次所有进程共享内存段。Oracle共享内存最大的段是SGA。SGA中所有的后台和阴影进程的虚拟地址空间映射到。显示内存使用的许多程序,如“顶”或“PS-LF”,不区分共享和私有内存,并显示在每个后台和阴影进程的SGA使用。随后,它可能会出现,虽然甲骨文使用几次比什么是真正的系统上安装更多的内存。要正确地确定oracle正在使用多少内存,你必须使用一个工具,它分离私有和共享内存。一个这样的工具是“svmon的”。位于该程序可在IBM AIX的CD-ROM作为“perfagent.tools使用”AIXfileset的一部分。使用SMIT命令“install_latest”来安装该文件集。如需使用svmon和其他工具,以确定内存使用的信息,请参阅AIX的“性能管理指南”来自IBM,第7章“监视和优化内存使用”,标题为“确定正在使用多少内存”。本指南是在下面的IBM网站提供在线...
http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixbman/prftungd...
本文将不讨论svmon的使用,除了常见的误解,以解决其输出。svmon命令将关联的内存用于缓冲的过程中,要求的文件页的持久性文件的网页(也知道,Unix文件系统缓冲区高速缓存)。
然而,未分配的物理内存用于缓冲的持久文件页或由Oracle控制。这种类型的内存分配和完全控制AIX操作系统。确定oracle正在使用多少内存,因为它实际上是AIX的分配和控制持久性文件页的缓冲时,不应该被视为用于此目的的内存。这并不意味着持久文件页缓冲存储器应该被忽略。这是可能的,这种类型的内存可占大多数的系统上使用的物理内存,并可能导致不必要的分页。这种的内存可以识别像“的svmon-Pau10”命令的输出中的“每秒”,在“类型”字段和“描述”字段中的磁盘设备。AIX命令vmtune可以用来修改用于缓冲持久文件页的物理内存量。尤其是vmtune,minperm,maxperm,strict_maxperm的参数。如需使用vmtune的信息,请参阅AIX的“性能管理指南”,来自IBM,第7章“监视和优化内存使用”和“调整VMM vmtune命令页面替换”。本指南是在下面的IBM网站提供在线...
http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixbman/prftungd...
还有另一个可以使用的工具,它是默认情况下,每一个AIX系统上可用。请注意在“V”之前没有(-)这里是“PS-EF”,“PS v”命令的输出比较...
# ps -lfp 13288
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
240001 A oracle 13288 1 0 60 20 1ba2f 34032 Nov 03 - 0:06 ora_pmon_DEV
# ps v 13288
PID TTY STAT TIME PGIN SIZE RSS LIM TSIZ TRS %CPU %MEM COMMAND
13288 - A 0:08 225 5616 13904 32768 28420 13512 0.0 1.0 ora_pmon_DEV
The "ps v" fields that are of interest to us are RSS and TRS.
RSS数量等于工作段第4页内存中的时间和内存时代4的代码段页的数目的总和。TRS的数量等于只是在内存次4的代码段页面。请注意,AIX内存页面是4096字节,这是为什么内存页的数量必须乘以4得到的的价值forRSS和TRS(这是每个报告以千字节为单位)。例如,如果代码段使用的实际内存是2页
( 2 pages * 4096 byte page size = 8192 bytes), then the TRS value would be reported as 8 ( 2 {number of pages} * 4 = 8 {kilobytes} ).
RSS包括工作段和代码段页,如果我们减去的TRS,这仅仅是从RSS的代码段页面,我们留下了唯一的工作段页面或私有内存。
在上面的例子中,使用的Oracle PMON后台进程...
13904 (RSS) - 13512 (TRS) = 392
392 * 1024 = 401408 bytes
PMON后台进程所使用的正确的内存量是392K(401408字节),而不是34 MB报告由“PS-LF”的命令。TRS的值将所有Oracle后台进程大约相同,因为所有这些进程是在相同的$ ORACLE_HOME / bin中/ oracle可执行文件的不同职业。为了得到良好的估计为所有Oracle后台进程的内存使用,总结的私有内存的TRS每个后台进程的plusthe值只有一个后台进程,加上SGA的大小。
有关确定SGA的大小的信息,请参阅...
注意1008866.6如何确定SGA的大小(7.x,8.x,9.x,10G)
确定影子进程的内存使用情况稍微复杂一些,因为使用的内存量能出现大幅波动,从一个时刻到未来取决于用户正在做什么。你应该从RSS减去的TRS阴影过程中使用的私有内存,但记住这只是一个快照并且如果该进程是活跃的。值会改变。得到一个很好的估计影子进程使用的内存,你应该定期运行“PS v”命令,反复的过程,而高峰负荷下获得的平均值。你现在可以把这个值乘以预期的用户估计将所需的系统多少内存的峰值。