内容简介:近日新装的一套ORACLE 12.2 RAC on SLES 12在使用srvctl start database 有时失败, alert log 中出现ORA-27300、ORA-27301、ORA-27302错误, 从错误不难看出是OS资源资源限制, 发现这可能以后会是个常见问题, 因为这是SLES 12的默认参数限制,而且ORACLE的安装文档和最佳实践中也未提到该参数(至少当前没有)。Note:从当前的错误fork failed with status: 11可以大概猜测是最大进程数限制导致fo
近日新装的一套ORACLE 12.2 RAC on SLES 12在使用srvctl start database 有时失败, alert log 中出现ORA-27300、ORA-27301、ORA-27302错误, 从错误不难看出是OS资源资源限制, 发现这可能以后会是个常见问题, 因为这是SLES 12的默认参数限制,而且ORACLE的安装文档和最佳实践中也未提到该参数(至少当前没有)。
alert log file
2018-11-19 09:29:03.940000 +08:00 Process P01E died, see its trace file Process startup failed, error stack: Errors in file /oracle/app/oracle/diag/rdbms/anbob/anbob1/trace/anbob1_psp0_32198.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 2018-11-19 09:29:04.940000 +08:00 Process P01F died, see its trace file Process startup failed, error stack: Errors in file /oracle/app/oracle/diag/rdbms/anbob/anbob1/trace/anbob1_psp0_32198.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
Note:
从当前的错误fork failed with status: 11可以大概猜测是最大进程数限制导致fork()进程时失败, 另外一处是psp0进程fork() Pnnn的进程。
PSP trace file
oracle@kdanbob01:/home/oracle> vi /oracle/app/oracle/diag/rdbms/anbob/anbob1/trace/anbob1_psp0_32198.trc Trace file /oracle/app/oracle/diag/rdbms/anbob/anbob1/trace/anbob1_psp0_32198.trc Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production Build label: RDBMS_12.2.0.1.0_LINUX.X64_170125 ORACLE_HOME: /oracle/app/oracle/product/12.2.0/db_1 System name: Linux Node name: kdanbob01 Release: 4.4.21-69-default Version: #1 SMP Tue Oct 25 10:58:20 UTC 2016 (9464f67) Machine: x86_64 Instance name: anbob1 Redo thread mounted by this instance: 0 Oracle process number: 4 Unix process pid: 32198, image: oracle@kdanbob01 (PSP0) *** 2018-11-19T09:15:26.133868+08:00 Process startup failed, error stack: 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 OS - DIAGNOSTICS ---------------- loadavg : 42.40 27.56 11.09 Memory (Avail / Total) = 176425.47M / 515676.77M Swap (Avail / Total) = 32768.00M / 32768.00M Max user processes limits(s / h) = 65536 / 65536
oracle@kdanbob01:/home/oracle> ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 2062629
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 65536
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 16384
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
what’s psp Process?
The first process that will be started when we start instance is PSP process. This is called PROCESS SPAWNER. This process is introduced in 10g and is responsible for creating and managing other oracle backgroung processes.
Pnnn进程都知道是并行进程,查看并行相关的参数
SQL> show parameter parallel PARAMETER_NAME TYPE VALUE ------------------------------------------------------------ ----------- --------------------------------- containers_parallel_degree integer 65535 fast_start_parallel_rollback string LOW parallel_adaptive_multi_user boolean FALSE parallel_degree_limit string CPU parallel_degree_policy string MANUAL parallel_execution_message_size integer 16384 parallel_force_local boolean TRUE parallel_instance_group string parallel_max_servers integer 60 parallel_min_percent integer 0 parallel_min_servers integer 60 parallel_min_time_threshold string AUTO parallel_servers_target integer 60 parallel_threads_per_cpu integer 2 recovery_parallelism integer 8 SQL> @pd containers_parallel_degree Show all parameters and session values from x$ksppi/x$ksppcv... INDX I_HEX NAME VALUE DESCRIPTION ---------- ----- ------------------------------ ------------------------------ --------------------------------------- 4749 128D containers_parallel_degree 65535 Parallel degree for a CONTAINERS() query
Tip:
开始我以为是12cR2 新特性导致的该问题,containers_parallel_degree 当使用containers()查询或打开PDB时并行的限制值, 当前环境是个非CDB模式的数据库, 不过我个人还是建议在12.2 中使用多租户,哪怕是1PDBs, 在19c NO-CDB都是NO supperted。 如果只是因为是不想用CDB而多SCHEMA模式,我认为CDB优点更多:言归正传回到刚才的问题,trace文件中提示系统max user process是65536, oracle当前用户环境限制是16384, 手动ps了一下当前用户进程根本没有那么多,只有一些后台进程不该存在这个问题, 在MOS中找到了一下找到找到的原因SLES 12: Database Startup Error with ORA-27300 ORA-27301 ORA-27303 While Starting using Srvctl (文档 ID 2340986.1)
From SLES12 onwards, systemd is used instead of initd and the OHASD server is only allowed to open a maximum of 512 tasks.
SYSTEMD从SLES12后替代了原来的OHASD服务, SYSTEMD是一个很受争议的东西,知乎上有篇说的不错,但是在 LINUX 上是主推。
在LINUX 6及以前的版本查’max user processes’ 使用 ‘ulimit -a’ ,但是以LINUX7(SLES12) 后可能需要查DefaultTasksMax (default value is 512).
DefaultTasksMax ==>systemd limited maximum number of tasks that may be created in the unit.This setting also effect maxpid value on OS.
$ > systemctl status ohasd
â— ohasd.service – LSB: Start and Stop Oracle High Availability Service
Loaded: loaded (/etc/init.d/ohasd; bad; vendor preset: disabled)
Active: active (exited) since Mon 2018-11-19 11:36:59 CST; 23h ago
Docs: man:systemd-sysv-generator(8)
Process: 12385 ExecStart=/etc/init.d/ohasd start (code=exited, status=0/SUCCESS)
Tasks: 726 (limit:
65535
) — 这个值在修改前应该是512
解决办法
Configure the value of DefaultTasksMax to 65535 in the file /etc/systemd/system.conf or or set the TasksMax value properly for the ohasd systemd service.
这里我们使用的解决方法是修改/etc/systemd/system.conf 把DefaultTasksMax改成 了65535,当然也可以直接改成’infinity’ 无限。
建议在SLSE 12或以后的版本,或LINUX 7等以后的版本时,先了解一下系统变化,至少在安装RAC时, 把DefaultTasksMax修改加入到安装方档中去, 可能Oracle 在以后的安装文档或最佳实践中会增加该内容。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
活着就为改变世界
[美] 杰弗里·扬、威廉·西蒙 / 蒋永军 / 中信出版社 / 2010-6 / 39.00元
内容简介 苹果公司CEO史蒂夫•乔布斯这个一直活在自己想象的世界里的创业奇才,经历过各种挫折与失落,但他那无所畏惧、敢于承担的个性让他一直努力实践着自己的价值观,总能为他的离奇想法找到解决问题的办法。 本书两位作者通过深入访谈和资料调查,揭秘了许多乔布斯个人的创业经历和家庭变故,为大家塑造了一个活生生的“乔布斯式”的鲜活人物,描述了一个个充满传奇色彩的商业奇迹,真实地再现了乔布斯几十年......一起来看看 《活着就为改变世界》 这本书的介绍吧!