数据库的调优其实和主机性能的调优有很大的相关性,特别是一些内存以及内核参数的修改。
结合hp-ux和oracle,我们可以在以下的参数进行调整:
1、调整SHMMAX,使每个oracle的共享内存段落在一个区域。
在oracle启动一个instance的时候,每个共享内存段会收到一个唯一的protection key,而对于hp操作系统来说,PA-RISC处理器最多支持6个共享内存段的protection key,假如主机有64G内存,SHMMAX=2G,那么oracle启动instance的时候,就有32个共享内存段,远远超过了6个,那么系统就会报protection key fault。所以尽量的配置较大的SHMMAX,使得每个oracle的共享内存段落在一个区域。可用ipcs -m查看:
oracle@sd_db01:/oracle>ipcs -m
IPC status from /dev/kmem as of Fri Jul 13 10:36:23 2007
T ID KEY MODE OWNER GROUP
Shared Memory:
m 0 0x41205536 –rw-rw-rw- root root
m 1 0x4e0c0002 –rw-rw-rw- root root
m 2 0x41243fa8 –rw-rw-rw- root root
m 29187 0x5e1c002f –rw——- root root
m 99844 0x8fc1e87c –rw-rw—- oracle dba
2、调整SCHED_NOAGE参数
在hpux中,大部分的进程会遵循一个共享时间表的策略,在业务的忙时,容易造成latch。所以,我们应该设置SCHED_NOAGE参数,使得进程不会具有执行的优先级。
数据库端:
SQL> show parameter HPUX_SCHED_NOAGE NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ hpux_sched_noage integer 178
注:hpux_sched_noage取值范围为178~255
主机端(root用户):
#setprivgrp dba RTSCHED RTPRIO
同时为了重启后参数失效,在/etc/privgroup文件中添加:
dba RTSCHED RTPRIO
3、开启异步IO
在数据库中,异步IO默认是已经开启的,:
SQL> show parameter disk_asynch_io NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ disk_asynch_io boolean TRUE
主机端:
# setprivgrp dba MLOCK
同时为了重启后参数失效,在/etc/privgroup文件中添加:
dba MLOCK
增加异步的驱动器:
sam
Kernel Configuration area-Drivers area-asynchronous disk driver
action:Add Driver to Kernel
Configurable Parameters-MAX_ASYNC_PORTS-Modify Configurable Parameter-进行指定
重启
启用异步:
# /sbin/mknod /dev/async c 101 0x0
检验/dev/async是否添加成功:
# ls -l /dev/async
大概会出现类似:
crw——- 1 orcle oracle 101 0x000000 Oct 28 10:32 /dev/async