加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码网 (https://www.900php.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Linux内核参数及Oracle相关参数调整

发布时间:2016-08-14 03:06:36 所属栏目:Linux 来源:站长网
导读:我们一般在Linux 上安装设置Oracle 数据库或者在更换或升级硬件的时候都需要配置Linux 系统的核心参数, 然后才是调整Oracle 系统参数 。具体这些 参数的实质意

我们一般在Linux 上安装设置Oracle 数据库或者在更换或升级硬件的时候都需要配置Linux 系统的核心参数, 然后才是调整Oracle 系统参数 。具体这些 参数的实质意义是什么,为什么要做调整,如何合理调整? 带着这些问题我们做以下的一些分析以及测试。

注意: 以下的一些测试可能只适用于Linux  系统,且测试Linux 系统为64Bit,32Bit Linux 系统可能有不一样 。

测试环境: Linux AS 4.0 U5 64Bit

核心版本: 2.6.9-55.ELsmp #1 SMP x86_64

1. Linux 系统下的核心参数:

[root@ECSDB etc]# cat sysctl.conf 或者到 /proc/sys/kernel 下查看。

kernel.shmall = 2097152

kernel.shmmax = 8405194752

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

fs.file-max = 65536

fs.file-max = 65536

net.ipv4.ip_local_port_range = 1024 65000

net.core.rmem_default = 262144

net.core.rmem_max = 262144

net.core.wmem_default = 262144

net.core.wmem_max = 262144

小技巧: 修改 /etc/sysctl.conf 文件之后立刻生效命令

# sysctl -p

2. Linux 下核心参数调整

kernel.shmmax ----SHMMAX Available physical memory Defines the maximum allowable sizeof one shared memory segment. The SHMMAX setting  should be large enoughto hold the entire SGA in one shared memory segment. A low setting cancause creation of multiple shared memory  segments which may lead toperformance degradation.

Shmmax 是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值,

shmmax 设置应该足够大,能在一个共享内存段下容纳下整个的SGA ,设置的过低可能会

导致需要创建多个共享内存段,这样可能导致系统性能的下降 。

论坛上的一些说法: SHMMAX 仅仅是在共享内存段被创建的时候用来比较的一个数字,当共享内存段被一个进程(Process)创建,操作系统检查是否被 要求的共享内存段的值大于shmmax 的值 ,如果是,那么将会抛出一个错误。这个时候系统会创建另外的一个或多个共享内存段满足进程的需求 。一般来 说,共享内存段个数和系统性能没有太直接的关系,也不会对性能产生太大的影响。

Steve Adams 在他的小册子中说过,在实例启动以及Server Process 创建的时候,多个小的共享内存段可能会导致当时轻微的系统性能的降低(在启 动的时候 需要去创建多个虚拟地址段,在进程创建的时候要让进程对多个段进行“识别”,会有一些影响),但是其他时候都不会有影响。这意味着如果 你的程序不是经常Create Processes(以及Destroy Them),性能方面就不是考虑的问题。

当然Oralce 的建议是希望一个大的共享内存段能容纳整个SGA,这样在任何时候都不会有甚至轻微的性能下降的隐患。Oracle 安装文档建议 32Bit  Linux 系统设置shmmax 为32Bit 最大的限制值(setting shmmax to the 32-bit number limit),也就是4G 。

所以一般来说,1-4G 的物理内存,可以直接设置shmmax 为最大物理内存即可,那么SGA 肯定在一个共享内存段中,32Bit Linux 系统物理内存大 于4G 的设置为4G 即可 。

总之,一般设置shmmax >=SGA (32Bit 系统是否支持到1.7G 以上SGA 需要注意) 。如果是64Bit 的Linux 操作系统,shmmax 设置为大于SGA_MAX_SIZE 即可。

Ipcs  -sa 可以看到共享内存段个数

kernel.shmall ----kernel.shmall 参数是控制共享内存页数 。Linux 共享内存页大小为4KB, 共享内存段的大小都是共享内存页大小的整数倍。一个共 享内存段的最大大小是16G,那么需要共享内存页数是16GB/4KB=16777216KB/4KB=4194304 (页),也就是64Bit 系统下16GB 物理内存,设置  kernel.shmall = 4194304 才符合要求(几乎是原来设置2097152的两倍)。这时可以将shmmax 参数调整到 16G 了,同时可以修改SGA_MAX_SIZE 和 SGA_TARGET 为 12G(您想设置的SGA 最大大小,当然也可以是2G~14G 等,还要协调PGA参数及OS 等其他内存使用,不能设置太满,比如16G)。

kernel.shmmni ----shmmni 内核参数是共享内存段的最大数量(注意这个参数不是 shmmin,是shmmni, shmmin 表示内存段最小大小 ) 。shmmni 缺省值  4096 ,一般肯定是够用了 。

3. Oracle 下需要做调整的参数

SGA_MAX_SIZE

SGA_TARGET

DB_CACHE_SIZE

SGA_MAX_SZIE 为实例允许使用的sga 上限,一个静态参数,是不能动态修改的。

SGA_TARGET 为10g 推出的sga 自动管理的参数,动态参数,可以动态修改。

sga_max_size 与 SGA 各组件大小的关系

本文URL地址:http://www.bianceng.cn/OS/Linux/201410/45486.htm

(编辑:源码网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读