在AIX5.3中将Oracle SGA定在内存中的详细步骤

简介: 在一些操作系统平台中,我们可以将Oracle的SGA定在内存里,这样可以避免页交换,从而提高Oracle的性能。在AIX下,要把操作系统的v_pinshm参数设置为1,否则即使在Oracle中将LOCK_SGA设置为TRUE也是不管用的。

在一些操作系统平台中,我们可以将OracleSGA定在内存里,这样可以避免页交换,从而提高Oracle的性能。在AIX下,要把操作系统的v_pinshm参数设置为1,否则即使在Oracle中将LOCK_SGA设置为TRUE也是不管用的。然而仅仅知道这两个参数还远不够用的,必须对AIX内存管理有一定了解。本文要求操作系统是5.3 ML01以上,Oracle9.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建议改大。这个参数默认是80IBM建议可以考虑改成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等参数设置是否合理,以确定是否要调整,这里略过。

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

那么怎样才能看出ORACLESGA是否定在内存里呢?可以通过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

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

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

XXIBM:# vmo -p -o v_pinshm=1

Setting v_pinshm to 1 in nextboot file

Setting v_pinshm to 1

相关文章
|
5天前
|
存储 NoSQL Oracle
Oracle 12c的内存列存储:数据的“闪电侠”
【4月更文挑战第19天】Oracle 12c的内存列存储以超高速度革新数据处理,结合列存储与内存技术,实现快速查询与压缩。它支持向量化查询和并行处理,提升效率,但需合理配置以平衡系统资源。作为数据管理员,应善用此功能,适应业务需求和技术发展。
|
2月前
|
Oracle 关系型数据库 Java
plsql链接远程Oracle数据库步骤
实际工作中,我们往往需要使用 PLSQL Develope 工具连接远程服务器上的 ORACLE 数据库进行管理,但是由于 ORACLE 安装在本地电脑步骤繁琐,并且会耗费电脑的很大一部分资源,因此,我们寻求一种不需要在本地安装 ORACLE 数据库而能直接使用 PLSQL Develope 工具连接到远程服务器 ORACLE 的方法。
41 2
|
4月前
|
Oracle 关系型数据库 数据库
oracle 重启步骤及踩坑经验
oracle 重启步骤及踩坑经验
124 0
|
10月前
|
Oracle 关系型数据库
oracle修改内存
oracle修改内存
93 0
|
11月前
|
SQL Oracle 安全
Virtualbox安装Oracle 19c 升级到19.8(Oracle Restart和数据库)完整步骤
这个文档是来自鼎甲科技的姚远工作中整理的,在Virtualbox上安装Oracle 19.3 再升级到19.8(Oracle Restart和数据库)完整步骤,包括:配置系统环境,安装grid,oracle,建库,补丁下载升级等全过程。
573 0
|
11月前
|
Oracle 安全 关系型数据库
Linux的daemon进程对Oracle数据库的SGA使用大页内存的处理
Oracle对运行在机器内存超过32G上的数据库推荐使用HugePages 来容纳Oracle数据库的SGA,参见。
140 0
|
11月前
|
Oracle 关系型数据库 Linux
【Oracle】安装Oracle Linux操作步骤
【Oracle】安装Oracle Linux操作步骤
326 0
|
Oracle 关系型数据库 Linux
Centos--内存及对Oracle数据库的影响
Centos的内存及对Oracle数据库的影响,文中命令的输出根据需要做了裁剪
208 0
|
Oracle 关系型数据库 数据安全/隐私保护
oracle学习25-手工删除oracle归档日志后操作步骤 和修改用户默认解锁时间
oracle学习25-手工删除oracle归档日志后操作步骤 和修改用户默认解锁时间
124 0
|
Oracle 关系型数据库 5G
ORACLE RAC SGA参数调整
环境:双节点RAC环境,节点1 wtdb1 节点2 wtdb2数据库 zjcsc 实例1 zjcsc1 实例2 zjcsc2Oracle Database 10g Enterprise Edition Release 10.
1417 0

热门文章

最新文章

推荐镜像

更多