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

时间: 2024-11-16 02:46:01

Linux内核参数及Oracle相关参数调整的相关文章

查看Oracle隐藏参数的方法

在ORACLE中,存在很多ORACLE不希望我们去参与修改的参数,对于这些参数我们可以通过下面的语句来查询: select x.ksppinm name, y.ksppstvl value, y.ksppstdf isdefault, decode(bitand(y.ksppstvf,7),1,'MODIFIED',4,'SYSTEM_MOD','FALSE') ismod, decode(bitand(y.ksppstvf,2),2,'TRUE','FALSE') isadj from sys

linux内核学习之四:进程切换简述【转】

转自:http://www.cnblogs.com/xiongyuanxiong/p/3531884.html 在讲述专业知识前,先讲讲我学习linux内核使用的入门书籍:<深入理解linux内核>第三版(英文原版叫<Understanding the Linux Kernel>),不过这本书不一定对每个人都适合,大家可以根据自己的情况选择适合的入门书籍.看了前面几章,感觉这本书的语言极其精练,没有一句多余的,必须慢慢读.可能我以前习惯了粗略浏览的阅读方式,读这本书时经常看着看着就

linux内核学习之四:进程切换简述

 进程是现代操作系统的核心概念之一,用于分配系统(CPU,内存)资源的使用.了解linux进程及进程切换的知识,首先要理解进程与程序的区别,进程是执行流,是动态概念:程序是数据与指令序列的集合,是静态概念.进程作为动态的执行流,可以用execv系统调用自由选择一个程序(只要有权限)来执行的,理解这一点很重要.在阅读本书的第三章<进程>中,有两个地方比较难于理解的.   1 switch_to宏的last参数      书中讨论switch_to宏(第110页)时,提到,该宏有3个参数:prev

Linux内核中常见内存分配函数(三)

ioremap void * ioremap (unsigned long offset, unsigned long size) ioremap是一种更直接的内存"分配"方式,使用时直接指定物理起始地址和需要分配内存的大小,然后将该段 物理地址映射到内核地址空间.ioremap用到的物理地址空间都是事先确定的,和上面的几种内存 分配方式并不太一样,并不是分配一段新的物理内存. ioremap多用于设备驱动,可以让CPU直接访问外部设备的IO空间.ioremap能映射的内存由原有的物理

Linux内核中常见内存分配函数【转】

 转自:http://blog.csdn.net/wzhwho/article/details/4996510 1.      原理说明 Linux内核中采用了一种同时适用于32位和64位系统的内存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系统中,用到了四级页表,如图2-1所示.四级页表分别为: l         页全局目录(Page Global Directory) l         页上级目录(Page Upper Directory) l         页中间

Linux内核分析(七)----并发与竞态

原文:Linux内核分析(七)----并发与竞态 Linux内核分析(七) 这两天家里的事好多,我们今天继续接着上一次的内容学习,上次我们完善了字符设备控制方法,并深入分析了系统调用的实质,今天我们主要来了解一下并发和竞态. 今天我们会分析到以下内容: 1.      并发和竞态简介 2.      竞态解决办法 3.      为我们的虚拟设备增加并发控制   在前几次博文我们已经实现了简单的字符设备,看似完美但我们忽视了一个很严重的问题,即并发问题,那么什么是并发,又如何解决并发呢,我们下面

Linux内核再现漏洞!这次11年后才发现

还记得上一次Linux内核出现大的漏洞是什么时候吗?2009年Linux内核出现严重安全漏洞,直到2014年才被发现,这个严重安全漏洞整整存在了5年时间.2017年5月9日,启明星辰ADLab(积极防御实验室)发现Linux内核存在四个极度危险的漏洞--代号"Phoenix Talon"(CVE编号:CVE-2017-8890.CVE-2017-9075.CVE-2017-9076.CVE-2017-9077).研究发现这些漏洞在Linux内核中存在至少已经存在了11年-- 也就是说,

与oracle紧密相关的unix/linux内核参数

        下面是几个与oracle紧密相关的unix/linux内核参数,在安装数据库的时候,一般都需要根据实际情况进行调整. Init.ora Parameter Kernel Parameter db_block_buffers shmmax, shmall db_files(maxdatafiles) nfile, maxfiles large_pool_size shmmax, shmall log_buffer shmmax, shmall processes nproc, se

Linux 内核参数优化(for oracle)

    Oracle 不同平台的数据库安装指导为我们部署Oracle提供了一些系统参数设置的建议值,然而建议值是在通用的情况下得出的结论,并非能完全满足不同的需求.使用不同的操作系统内核参数将使得数据库性能相差甚远.本文描述了linux下几个主要内核参数的设置,供参考. 1.Linux共享内存  共享内存是在系统内核分配的一块缓冲区,多个进程都可以访问该缓冲区.  由于进程可以直接读写内存,避免了在内核空间与用户空间的切换,所以共享内存读写效率很高.  当一个进程改变了这块地址中的内容的时候,其