在AIX5.3中将OracleSGA定在内存中的步骤是怎样的

本篇文章给大家分享的是有关在AIX5.3中将Oracle SGA定在内存中的步骤是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

创新互联建站-成都网站建设公司,专注成都做网站、成都网站建设、成都外贸网站建设、网站营销推广,国际域名空间,虚拟空间,网站托管运营有关企业网站制作方案、改版、费用等问题,请联系创新互联建站

在一些操作系统平台中,我们可以将Oracle的SGA定在内存里,这样可以避免页交换,从而提高Oracle的性能。在AIX下,要把操作系统的v_pinshm参数设置为1,否则即使在Oracle中将LOCK_SGA设置为TRUE也是不管用的。然而仅仅知道这两个参数还远不够用的,必须对AIX内存管理有一定了解。本文要求操作系统是5.3 ML01以上,Oracle在9.2.0.4以上。

首先我们来检查一下操作系统版本:

XXIBM:# oslevel -r

5300-07

可见操作系统版本满足我们的要求。如果这个输出是5300-00,那么就先要给操作系统打补丁。Oracle很多的问题都和操作系统有紧密的联系。

接下来看看有多少内存。查看内存的方法有很多,随便用哪一种吧。

XXIBM:# bootinfo -r

64749568

上面的输出显示操作系统有64G内存。

再用rmss -p来看看当前可用内存是否与实际内存一致。因为有的时候可能出于测试的考虑,我们可能用rmss把内存模拟到某个大小(当然只能向小模拟)。

XXIBM:# rmss -p

Simulated memory size is 63231.9375 Mb.

如果上面的输出小于实际的内存,就要考虑用rmss -r来将内存恢复到实际大小。

接下来让我们检查几个有关内存的参数设置。AIX5.3的默认内存参数

首先检查lru_file_repage的设置。这是5.3新增的参数,这个参数默认为1,但IBM推荐在ML01之后,将这个参数设置为0。

XXIBM:# vmo -L lru_file_repage

NAME             CUR    DEF    BOOT   MIN   MAX    UNIT    TYPE DEPENDENCIES

--------------------------------------------------------------------

lru_file_repage    1     1      1      0     1     boolean   D

在上面的输出中,CUR代表参数的当前值,DEF代表参数默认值,BOOT代表下次启动值。

用下面的命令把lru_file_repage设置为0。下面的设置只是在当前生效,不改变重启的设置。

XXIBM:# vmo -o lru_file_repage=0

Setting lru_file_repage to 0

接下来检查v_pinshm,应该改成1。

XXIBM:# vmo -L v_pinshm

NAME      CUR    DEF    BOOT   MIN   MAX    UNIT    TYPE DEPENDENCIES

--------------------------------------------------------------------

v_pinshm    1     0      0      0     1     boolean   D

XXIBM:# vmo -o v_pinshm=1

Setting v_pinshm to 1

检查一下minperm%、maxperm%等参数。在使用lru_file_repage之前,我们习惯把maxperm%设置很小,如20%。但从5.3开始,IBM建议改大。这个参数默认是80,IBM建议可以考虑改成90。至于minperm%,默认是20。如果内存在32G-64G,可以改成10,小于32G,改成5,大于64G,保持默认20。

XXIBM:# vmo -o minperm%=10

Setting minperm% to 10

XXIBM:# vmo -o maxperm%=90

Setting maxperm% to 90

操作系统的参数调整好了之后,剩下的工作就简单了。登录到Oracle,查看一下LOCK_SGA参数的设置:

XXIBM:# su - oracle

$ sqlplus /nolog

SQL*Plus: Release 9.2.0.6.0 - Production on Fri Sep 19 08:40:10 2008

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

SQL> conn / as sysdba

Connected.

SQL> show parameter lock_sga

NAME                                 TYPE        VALUE

------------------------------------ -----------

lock_sga                             boolean     FALSE

这个参数当前为FALSE。要想把SGA定在内存中,要把这个参数改成TRUE。

SQL> alter system set lock_sga=true scope=spfile;

System altered.

接下来计算一下当前SGA的大小:

SQL> select sum(value)/1024/1024 from v$sga;

SUM(VALUE)/1024/1024

--------------------

          35941.0215

这个大小一般不要超过物理内存的60%。太小也不好,利用不充分。从上面的输出来看,当前的SGA大小基本合适。当然可进一步查看DB_CACHE_SIZE等参数设置是否合理,以确定是否要调整,这里略过。

设置好之后要重新启动数据库。如果数据库能够顺利启动,那么说明设置没问题。

那么怎样才能看出ORACLE的SGA是否定在内存里呢?可以通过svmon命令来查看。这个命令要用超级用户才可以运行。

$ su -

root's Password:

XXIBM:# svmon -P -t 100|grep -p Pid|head

--------------------------------------------------------------------

 Pid Command       Inuse      Pin     Pgsp  Virtual 64-bit Mthrd  16MB  225546 oracle      9313207  9270407   2232  9308982   Y     N      N

--------------------------------------------------------------------

 Pid Command       Inuse      Pin     Pgsp  Virtual 64-bit Mthrd  16MB

 119692 oracle        9312614  9270438  2232  9308978   Y      N   N

--------------------------------------------------------------------

Pid Command        Inuse      Pin     Pgsp  Virtual 64-bit Mthrd  16MB

注意上面输出的Inuse和Pin,还有Command。Command对应oracle,说明进程信息是Oracle的。Inuse代表使用中的内存页,Pin代表定在内存中的页数量,每页大小4KB。这两个值如果相差甚远,则说明随SGA没有定在内存里,如果相差很近,则说明定在了内存里。

如果想在操作系统重启后Oracle也能把SGA定在内存里,并且正常工作,就要把本文一开始设置的v_pinshm、lru_file_repage等设置为重起操作系统后也是想要的值。例如:

XXIBM:# vmo -p -o v_pinshm=1

Setting v_pinshm to 1 in nextboot file

Setting v_pinshm to 1

以上就是在AIX5.3中将Oracle SGA定在内存中的步骤是怎样的,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。


名称栏目:在AIX5.3中将OracleSGA定在内存中的步骤是怎样的
分享地址:http://scyanting.com/article/posdgc.html