如果Linux内核参数设置不当或者不合理,oracle也会出错,Linux内核参数大致概括为4类:共享内存(shared memory),信号量(semaphor

如果Linux内核参数设置不当或者不合理,Oracle也会出错,比如
10g中:
SQL> startup;
ORA-27102: out of memory
Linux-x86_64 Error: 28: No space left on device
11g RAC下报错:
SQL> startup;
ORA-00845: MEMORY_TARGET not supported on this system

本为总结下oracle数据库在linux下相关内核参数的配置

Linux内核参数大致概括为4类:共享内存(shared memory),信号量(semaphores),网络参数(network),文件参数(open files)
1.共享内存

内存查看:
[root@oraserv ~]# free -m
total used free shared buffers cached
Mem: 249 123 125 0 8 74
-/+ buffers/cache: 41 208
Swap: 2000 0 2000
共享内存是用于进程间通信的一种机制,共享内存可以由指定的多个进程共用,是一种系统资源。共享内存以段的形式分配,段有最大最小,可分配数量有限。

共享内存允许两个或更多进程访问同一块内存,就如同 malloc() 函数向不同进程返回了指向同一个物理内存区域的指针。当一个进程改变了这块地址中的内容的时候,其它进程都会察觉到这个更改。

所有共享内存块的大小都必须是系统页面大小的整数倍。系统页面大小指的是系统中单个内存页面包含的字节数。在 Linux 系统中,内存页面大小是4KB,不过仍然应该通过调用 getpagesize 获取这个值(单位字节)。

[root@oraserv ~]# getconf PAGE_SIZE
4096

[root@oraserv ~]# ipcs -l
------ Shared Memory Limits --------
max number of segments = 4096 // SHMMNI
max seg size (kbytes) = 4194303 // SHMMAX
max total shared memory (kbytes) = 1073741824 // SHMALL
min seg size (bytes) = 1

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

------ Messages: Limits --------
max queues system wide = 16 // MSGMNI
max size of message (bytes) = 65536 // MSGMAX
default max size of queue (bytes) = 65536 // MSGMNB

Oracle数据库Linux服务器的内核参数配置-LMLPHP

09-12 09:58