HP-UX LOCK_SGA以及AIO的设置

异步I/O
AIX系统,oracle使用文件系统
? AIO的minservers设置为10
? AIO的maxservers设置为盘的10倍再除以CPU数,再观察高负
载时aio的进程数与maxservers进行比较,再进行调整
? HPUX系统
? 设置max_async_ports为oracle初始化参数processes+oracle后
台进程的数量
? 设置aio_max_ops为2048
=================================================================
LOCK_SGA
建议设置数据库参数lock_sga将目前数据库SGA索住在物理内存
中。同时,还需要修改操作系统参数以配合此参数的使用:
AIX: v_pinshm从缺省的0设置为1。
/usr/sbin/vmo -r -o v_pinshm=1
设置可锁住内存的最大值:
/usr/sbin/vmo -r -o maxpin%=percent_of_real_memory
Percent_of_real_memory = ( (size of SGA / size of physical memory) *100) + 3
HPUX:修改数据库hpux_sched_noage=178。
? MAX_DUMP_FILE_SIZE
建议不要使用默认值(UNLIMITED),最大设置20M。



================================================================
HP-UX LOCK_SGA=TRUE

户的数据库设置了LOCK_SGA为TRUE后,数据库无法启动。

错误信息为:

SQL> startup
ORA-27125: unable to create shared memory segment
HPUX-ia64 Error: 1: Not owner

显然这个是操作系统上的问题,检查了一下,导致问题的原因是由于oracle用户没有锁内存的权限,解决问题的方法为:

以root执行修改/etc/privgroup文件,在文件中新增一行,内容为:

dba MLOCK

以root执行命令:

#/etc/setprivgrp -f /etc/privgroup

然后就可以启动数据库了。

=================================================================
HPUX开异步IO

同事来说在$ORACLE_HOME/rdbms/log下有大量产生trace文件,trace的文件内容为:

/oracle/app/oracle/product/9.2.0/rdbms/log/jxadt_ora_100.trc
Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.6.0 - Production
ORACLE_HOME = /oracle/app/oracle/product/9.2.0
System name:    HP-UX
Node name:      jx_db03
Release:        B.11.11
Version:        U
Machine:        9000/800
Instance name: jxadt
Redo thread mounted by this instance: 0
Oracle process number: 0
100
 
Ioctl ASYNC_CONFIG error, errno = 1
其实这个问题是由于开异步IO的时候,没有给系统的oracle用户MLOCK权限,当主机已经开启的异步IO的参数,但是没给MLOCK权限,就会报这个错。

我们在HPUX上开异步IO正确做法应该为:

前提:hpux上使用裸设备可以打开异步IO来提高IO性能,如果使用文件系统,就不能使用异步IO,但是可以通过设置多个DBWR进程来提高IO
 
1、Hp-ux使用Aio的补丁要求
   a、Hp-ux 11.00的补丁要求为:
      PHKL_22126: s700_800 VM,async,hyperfabric
   b、HP-UX 11i的补丁要求为:
      PHKL_25212 vm preemption point, mlock/async_io
      PHKL_25506 asyncio driver patch
 
 
2. 创建aio字符设备
   % /sbin/mknod /dev/async c 101 0x0
   % chown oracle:dba /dev/async
   % chmod 660 /dev/async
 
 
3. 用sam调整内核参数
     -> Kernel Configuration
        -> Drivers
           -> 选择'asyncdsk'
           -> Actions>Add Driver to Kernel. (此时pending state由out变为in状态)
 
     -> Kernel Configuration
        -> Configurable Parameters
           -> max_async_ports
              设置为初始化文件中的'processes'值+oracle后台进程数 (根据v$bgprocess,单实例后台进程数最多为78个)
  
4. 用sam设置aio_max_ops 
     -> Kernel Configuration
        -> Configurable Parameters
           -> aio_max_ops
           -> 可设置为默认值2048
              
5. 设置oracle用户必须有MLOCK权限。
   a. 设定dba组的MLOCK的权限
      roolt#setprivgrp dba MLOCK
 
    b. 避免重启后失效,需要设置:
       vi /etc/privgroup 添加如下行:
       dba MLOCK
       如果没有设置MLOCK权限,在$ORACLE_HOME/rdbms/log/中有大量含Ioctl ASYNC_CONFIG error, errno = 1的trace文件。
 
6. 其他设置。在hpux中,大部分的进程会遵循一个共享时间表的策略(time-sharing scheduling policy),在业务的忙时,如果根据共享时间表的老化策略,会重新安排oracle进程的优先级,造成latch free,从而影响oracle的性能。所以,我们应该设置SCHED_NOAGE参数,使得oracle进程不会具有执行的优先级。
    a. root#setprivgrp dba RTSCHED RTPRIO
       
    b. 同时为了重启后参数失效,在/etc/privgroup文件中添加:
       dba RTSCHED RTPRIO
       结合上面的MLOCK,/etc/privgroup文件中应该为:
       dba RTSCHED RTPRIO MLOCK
 
    c. 数据库中:alter system set hpux_sched_noage=178 scope=spfile;
参考文档:(metalink)Doc ID:139272.1和302801.1

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7194105/viewspace-704445/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7194105/viewspace-704445/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值