oracle sga aix重启,AIX5.3中将Oracle SGA PIN在内存中的步骤

在一些操作系统平台中,我们可以将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

NAMECURDEFBOOTMINMAXUNITTYPE DEPENDENCIES

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

lru_file_repage11101booleanD

在上面的输出中,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

NAMECURDEFBOOTMINMAXUNITTYPE DEPENDENCIES

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

v_pinshm10001booleanD

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: Release9.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

NAMETYPEVALUE

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

lock_sgabooleanFALSE

这个参数当前为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 CommandInusePinPgspVirtual 64-bit Mthrd16MB225546 oracle9313207927040722329308982YNN

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

Pid CommandInusePinPgspVirtual 64-bit Mthrd16MB

119692 oracle9312614927043822329308978YNN

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

Pid CommandInusePinPgspVirtual 64-bit Mthrd16MB

注意上面输出的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 to1 innextboot fileSetting v_pinshm to 1原文: http://space.itpub.net/78033/viewspace-462686

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值