SHMMAX Available physical memory Defines the maximum allowable size of one shared memory segment.The SHMMAX setting should be large enough to hold the entire SGA in one shared memory segment. A low setting can cause creation of multiple shared memory segments which may lead to performance degradation.

  按照oracle的解释,SHMMAX应该比SGA区大啊.否则会引发性能的下降!

  shmmax 指的是单个共享内存段的最大尺寸, 设置shmmax=1G,sga分配了1.2G,当启动实例的时候就分配 2 块共享内存给Oracle .

  如果物理内存是 2 G, 假设这台DB Server上还有Apache 在运行,那么shmmax 中设置的内存也会被Apache 来使用,那么分配的 2 块共享内存段给Oracle 是否就是 2 * 1G , 还是仅仅满足 SGA需求的 1.2 G就停止分配 , 其他的内存的一部分分配给Oracle PGA 和软件 Apache 来使用 ?

  想到这个问题,是因为在安装oracle时,常常需要修改内核文件/etc/sysctl.conf,需要设置这个参数.

  设置oracle共享内存段:

  以root身份进行修改 /etc/sysctl.conf 这个文件,加入以下的语句:

  kernel.shmmax = 2147483648
  kernel.shmmni = 4096
  kernel.shmall = 2097152
  kernel.sem = 250 32000 100 128
  fs.file-max = 65536
  net.ipv4.ip_local_port_range = 1024 65000

  注:

  sem 4个参数依次为SEMMSL(每个用户拥有信号量最大数);
  SEMMNS(系统信号量最大数);
  SEMOPM(每次semopm系统调用操作数);
  SEMMNI(系统辛苦量集数最大数)。
  Shmmax 最大共享内存2GB
  物理内存如果小的话可以设置成 536870912。
  Shmmni 最小共享内存 4096KB。
  Shmall 所有内存大小。

  一般情况下可以设置最大共享内存为物理内存的一半,如果物理内存是 2G,则可以设置最大共享内存为 1073741824,如上;如物理内存是 1G,则可以设置最大共享内存为 512 * 1024 * 1024 = 536870912;以此类推。

  在redhat上最大共享内存不建议超过

  4*1024*1024*1024-1=4294967295

  设置完成后用命令 more /etc/sysctl.conf |grep kernel.s 检查。

  建议重启系统再继续下面的操作。