在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

时间: 2024-10-14 01:11:40

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

ORACLE FOR WINDOWS 9.2.0.1升级到 ORACLE patch 9.2.0.6 详细步骤(原创)

oracle|window|原创 ORACLE FOR WINDOWS 9.2.0.1升级到 ORACLE patch9.2.0.6 详细步骤注:要本文仅应用于单机版ORACLE,不适合于ORACLE RAC配置情况 从metalink下载oracle for window 32 9.2.0.6 patch 运行PATCH的SETUP.EXE文件\Disk1 etup.exe--如果以上安装执行无响应,则直接执行Disk1\install etup.exe文件--安装的时候注意缺省选择是新建一个

Oracle 10g手动建库的详细步骤

1.建立需要的目录 mkdir -p/ora/oracle/admin/bdump mkdir -p/ora/oracle/admin/cdump mkdir –p/ora/oracle/admin/dpdump mkdir -p/ora/oracle/admin/udump mkdir -p/ora/oracle/admin/adump mkdir -p/arch/archivelog mkdir -p/ora/oracle/oradata/zjlg mkdir -p/ora/oracle/f

Oracle内存结构详解(一) Oracle SGA简介

Oracle的内存配置与oracle性能息息相关.关于内存的配置,是最影响Oracle性能的配置.内存还直接影响到其他两个重要资源的消耗:CPU和IO. 先看Oracle内存存储的主要内容是什么: 程序代码(PLSQL.Java): 关于已经连接的会话的信息,包括当前所有活动和非活动会话: 程序运行时必须的相关信息,例如查询计划: Oracle进程之间共享的信息和相互交流的信息,例如锁: 那些被永久存储在外围存储介质上,被cache在内存中的数据(如redo log条目,数据块). 每个Orac

Oracle内存结构详解(四) Oracle SGA其他组成部分

1.Redo Log Buffer Redo Log Buffer是SGA中一段保存数据库修改信息的缓存.这些信息被存储在重做条目(Redo Entry)中.重做条目中包含了由于INSERT.UPDATE.DELETE.CREATE.ALTER或DROP所做的修改操作而需要对数据库重新组织或重做的必须信息.在必要时,重做条目还可以用于数据库恢复. 重做条目是Oracle数据库进程从用户内存中拷贝到Redo Log Buffer中去的.重做条目在内存中是连续相连的.后台进程LGWR负责将Redo

Oracle体系结构:内存结构和进程结构

oracle|进程|体系 (一)内存结构和进程结构 Oracle数据库的总体结构如下图:  1:Oracle实例(Instance)           在一个服务器中,每一个运行的Oracle数据库都与一个数据库实例相联系,实例是我们 访问数据库的手段.  实例在操作系统中用ORACLE_SID来标识,在Oracle中用参数INSTANCE_NAME来标识, 它们两个的值是相同的.数据库启动时,系统首先在服务器内存中分配系统全局区(SGA), 构成了Oracle的内存结构,然后启动若干个常驻内

Oracle SGA 自动管理特性(sga_target参数)

    最近有网友对Oracle SGA内存自动管理特性不是很清楚,可能是由于当时翻译的 Oracle 10g SGA 的自动化管理 比较生涩,下面依旧是针对这个问题给出在Oracle 10g环境中描述,并给出示例以便更好的理解.   1.相关参数描述a.参数SHARED_POOL_SIZE SHARED_POOL_SIZE = integer [K | M | G] Default value    If SGA_TARGET is set: If the parameter is not s

(轉)如何计算Oracle内存中的几个命中率

                                   如何计算几个命中率  (1)LC的命中率: .计算公式:Library Cache Hit Ratio = sum(pinhits) / sum(pins) SELECTSUM(pinhits)/sum(pins)   FROM V$LIBRARYCACHE 通常在98%以上,否则,需要要考虑加大共享池,绑定变量,修改cursor_sharing等参数. .计算共享池内存使用率: SELECT(1- ROUND(BYTES /

【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之RAC 工作原理和相关组件(三)

RAC 工作原理和相关组件(三) RAC 工作原理和相关组件       OracleRAC 是多个单实例在配置意义上的扩展,实现由两个或者多个节点(实例)使用一个共同的共享数据库(例如,一个数据库同时安装多个实例并打开).在这种情况下,每一个单独的实例有它自己的 cpu 和物理内存,也有自己的 SGA 和后台进程.和传统的 oracle 实例相比,在系统全局区(SYSTEM CLOBAL AREA,SGA)与后台进程有着显著的不同.最大的不同之处在于多了一个GRD,GRD内存块主要是记录此ra

【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之缓存融合技术和主要后台进程(四)

缓存融合技术和主要后台进程(四) Cache Fusion 原理       前面已经介绍了 RAC 的后台进程,为了更深入的了解这些后台进程的工作原理,先了解一下 RAC 中多节点对共享数据文件访问的管理是如何进行的.要了解 RAC 工作原理的中心,需要知道 Cache Fusion 这个重要的概念,要发挥 Cache Fusion 的作用,要有一个前提条件,那就是互联网络的速度要比访问磁盘的速度要快.否则,没有引入 Cache Fusion 的意义.而事实上,现在 100MB 的互联网都很常