代码改变世界

ORA-27104: system-defined limits for shared memory was misconfigured与Linux内核参数配置有关的案例

2018-09-21 16:53  WWJD_DBA  阅读(5404)  评论(0编辑  收藏  举报

```
[oracle@WWJD01 ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on Fri Sep 21 15:11:52 2018

Copyright (c) 1982, 2016, Oracle. All rights reserved.

Connected to an idle instance.
SQL> startup
ORA-27104: system-defined limits for shared memory was misconfigured
SQL>
```

- alert log
```
2018-09-21T15:05:16.542629+08:00
Starting ORACLE instance (normal) (OS id: 48277)
2018-09-21T15:05:16.552691+08:00
CLI notifier numLatches:97 maxDescs:19852
2018-09-21T15:05:16.554591+08:00
System cannot support SGA size of 81335943168 bytes
2018-09-21T15:05:16.554690+08:00
Current maximum shared memory configured 8589934592 bytes
2018-09-21T15:05:16.554781+08:00
Increase the system shared memory size to atleast 81335943168 bytes
```
```
[root@WWJD01 ~]# ipcs -l

------ Shared Memory Limits --------
max number of segments = 40960
max seg size (kbytes) = 32768
max total shared memory (kbytes) = 8388608
min seg size (bytes) = 1

------ Semaphore Limits --------
max number of arrays = 128
max semaphores per array = 250
max semaphores system wide = 32000
max ops per semop call = 100
semaphore max value = 32767

------ Messages: Limits --------
max queues system wide = 36430
max size of message (bytes) = 131072
default max size of queue (bytes) = 131072
```
- 节点2
```
[root@WWJD02 ~]# ipcs -l

------ Shared Memory Limits --------
max number of segments = 40960
max seg size (kbytes) = 132102588
max total shared memory (kbytes) = 105682068
min seg size (bytes) = 1

------ Semaphore Limits --------
max number of arrays = 128
max semaphores per array = 250
max semaphores system wide = 32000
max ops per semop call = 100
semaphore max value = 32767

------ Messages: Limits --------
max queues system wide = 36430
max size of message (bytes) = 131072
default max size of queue (bytes) = 131072
```

```
cat /etc/sysctl.conf
```

- 集成方案值
```
kernel.shmall = 184467440736927743990
kernel.shmmax = 184467440736927743990
```

- 修改后值
```
kernel.shmall = 26420517
kernel.shmmax = 135273050112
```

- Oracle建议值
```
kernel.shmall = 66051072
kernel.shmmax = 162327114547

kernel.shmall:控制共享内存页数,该参数大小为物理内存除以pagesize
kernel.shmmax:设置为实际物理内存的2/3
```

```
[root@WWJD01 ~]# getconf PAGESIZE
4096
```

```
[root@WWJD01 ~]# free -m
total used free shared buffers cached
Mem: 258012 87100 170912 78214 225 79199
-/+ buffers/cache: 7675 250337
Swap: 65535 0 65535
```
```
kernel.shmall = 258012*1024/4=66051072
kernel.shmmax = 258012*1024*1024*0.6=162327114547.2
```