运维工程师在一台IBM P750(AIX6.1)上部署了一套oracle(未建库),让我把商用的某库同其做一个DG容灾。我按正常步骤部署了DG。

   1.在备库开始日志恢复

alter database recover managed standby database using current logfile disconnect;

   2.查看备库是否正常接收日志

select process,client_process,sequence#,status from v$managed_standby;

--正常接收日志

   3.查看备库是否正常应用日志

select THREAD#,SEQUENCE#,ARCHIVED,APPLIED,DELETED,STATUS from v$archived_log order by 1,2;

--正常应用日志

  但是我在备库的alert日志里发现有如下报错

报错1

Process startup failed, error stack:
Errors in file /apps/oracle/diag/rdbms/egbi/egbi2/trace/egbi2_psp0_29949962.trc:
ORA-27300: OS system dependent operation:fork failed with status: 2
ORA-27301: OS failure message: No such file or directory
ORA-27302: failure occurred at: skgpspawn5

报错2

Process startup failed, error stack:
Errors in file /apps/oracle/diag/rdbms/egbi/egbi2/trace/egbi2_psp0_29949962.trc:
ORA-27300: OS system dependent operation:fork failed with status: 11
ORA-27301: OS failure message: Resource temporarily unavailable
ORA-27302: failure occurred at: skgpspawn3

查看mos后发现是操作系统参数maxuproc设置不正确导致(具体见Doc ID 1125188.1和Doc ID 392006.1),该参数默认只有128,该参数决定了每个操作系统用户允许连接的最大进程数,该参数不足时alert日志中会报如上错误。

  正常在装rac时这些参数我们都会提前检查,并设为oracle要求的值(要求值为16384),这里可能是运维根本没有检查该参数

检查该参数

lsattr -E -l sys0 -a maxuproc

root@egisbdb1:/#lsattr -E -l sys0 -a maxuproc
maxuproc 128 Maximum number of PROCESSES allowed per user True

修改该参数(增大maxuproc参数无需重启操作系统可以直接生效,如果是减小该值则需重启操作系统后生效

chdev -l sys0 -a maxuproc=16384

   修改后alert日志中不再报该错误