安装Oracle的时候,可以参考Oracle 的安装文档,来设置相关内核参数的值,但是有些参数的值还是需要根据我们自己的情况来进行调整。注:不同系统的参数不同,本篇针对linux。

一。Linux 系统下的核心参数

 # vi /etc/sysctl.conf

 kernel.shmmax =
kernel.shmall =
kernel.shmmni =
kernel.sem =
fs.file-max =
net.ipv4.ip_local_port_range =
net.core.rmem_default =
net.core.rmem_max =
net.core.wmem_default =
net.core.wmem_max = 该参数保存在/etc/sysctl.conf 下,修改该文件不需要重启OS,只需要使用如下命令:
# /sbin/sysctl -p

  在介绍各个参数之前,先来看一个概念:共享内存

  共享内存是在系统内核分配的一块缓冲区,多个进程都可以访问该缓冲区。由于进程可以直接读写内存,避免了在内核空间与用户空间的切换,所以共享内存读写效率很高。当一个进程改变了这块地址中的内容的时候,其它进程都会察觉到这个更改。共享内存类似与windows环境编程中的内存映像文件。通过使用共享内存允许两个或多个进程共享一定的存储区,因为不需要拷贝数据。Oracle SGA即是基于此方式来实现Oracle进程之间数据共享。因此SGA的合理设置对Oracle性能有重大的影响。可以通过ipcs -lm来查看所有的共享内存设置。

  共享内存总大小=(每个共享内存段*相应共享内存段大小)总和

1.1 kernel.shmmax

  Shmmax 是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值。shmmax 设置应该足够大,能在一个共享内存段下容纳下整个的SGA ,设置的过低可能会导致需要创建多个共享内存段,这样可能导致系统性能的下降 。

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

  Oralce 建议 SHMMAX > SGA(SGA_MAX_SIZE),这样在任何时候都不会有甚至轻微的性能下降的隐患。

1.2 kernel.shmall

  kernel.shmall 参数是控制共享内存页数。该参数大小为物理内存除以pagesize;

 查看os系统页的大小
#getconf PAGESIZE

  这里显示的pagesize 是4k,假设一个共享内存段的最大大小是16G,那么需要共享内存页数是 16GB/4KB=16777216KB/4KB=4194304(页),也就是64Bit 系统下16GB 物理内存,设置 kernel.shmall = 4194304 才符合要求,几乎是原来设置2097152的两倍。

 1.3 kernel.shmmni

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

1.4 kernel.sem = SEMMSL SEMMNS SEMOPM  SEMMNI

  共享资源提供并发同步的计数器(PV操作),避免竞争,一个时刻只能由一个进程操作共享资源,多人可能要操作共识资源,计数器提供计数,排队。

  • SEMMSL:内核参数用于控制每个信号集合的最大信号数。Oracle 建议将 SEMMSL 设置为 spfileXXX.ora文件(适用于Linux 系统上所有数据库)中的最大 process实例参数设置再加上 10。此外,Oracle 建议将 SEMMSL 设置为不小于 100。
  • SEMMNS:内核参数用于控制整个Linux 系统中的信号(而非信号集)的最大数量。Oracle 建议将 SEMMNS 设置为系统上每个数据库的 process实例参数设置之和,加上最大的 process的两倍,最后为系统上的每个 Oracle 数据库加上 10。
  • SEMOPM: 内核参数用于控制每个 semop 系统调用可以执行的信号操作数。semop 系统调用(函数)能够使用一个 semop 系统调用完成多个信号的操作。一个信号集可以拥有每个信号集中最大数量的 SEMMSL,因此建议将 SEMOPM 设置为等于 SEMMSL。Oracle 建议将 SEMOPM 设置为不小于 100。
  • SEMMNI: 内核参数用于控制整个 Linux 系统中信号集的最大数量。 Oracle 建议将 SEMMNI 设置为不小于 100。使用以下计算式确定可以在 Linux 系统上分配的信号的最大数量。它将是以下两者中较小的一个值:SEMMNS 或  (SEMMSL * SEMMNI) 。

1.5 fs.file-max

  文件句柄数,表示在Linux系统中可以打开的文件数量。Oracle 建议将整个系统的文件句柄值至少设置为 65536。建议设置:fs.file-max=512*processes。

1.6 网络参数

net.ipv4.ip_local_port_range   应用程序可使用的IPv4端口范围。

net.core.rmem_default    套接字接收缓冲区大小的缺省值

net.core.rmem_max  套接字接收缓冲区大小的最大值

net.core.wmem_default 套接字发送缓冲区大小的缺省值

net.core.wmem_max  套接字发送缓冲区大小的最大值

1.7 fs.aio-max-nr

  指同时可以拥有的的异步IO请求数目。建议设置为:1048576 其实它等于 1024*1024 也就是 1024K 个。

二. Oracle 参数 SGA_TARGET

  在Oracle 10g 中引入了一个新特性:自动共享内存管理(Automatic Shared Memory Management ASMM)。控制这一特性的,就是参数SGA_TARGE。当给SGA_TARGET 指定值后(默认为0,即没有启动ASMM),就自动启动ASMM特性。启动ASSM 特性之后:Oracle 可以自动为我们调整以下内存池的大小:

 * Buffer cache (DB_CACHE_SIZE)
* Shared pool (SHARED_POOL_SIZE)
* Large pool (LARGE_POOL_SIZE)
* Java pool (JAVA_POOL_SIZE)
* Streams pool (STREAMS_POOL_SIZE)

  需要手动调整的参数:

 log buffer
db_nk_cache_size
db_keep_cache_size
db_recycle_cache_size

  SGA_TARGET和SGA_MAX_SIZE 都是表示SGA 最大的大小,但SGA_TARGET不能大于SGA_MAX_SIZE 。Oracle10g 下, SGA_MAX_SIZE 仍然表示SGA 的大小的上限值,而SGA_TARGET 是SGA 的所有组件的大小的最大值之和,即当SGA_TARGET< SGA_MAX_SIZE 的时候,oracle 就会忽略SGA_MAX_SIZE 的值,SGA_TARGET 也就成了SGA 的在此实例中的上限制,它能动态改变大小,但是不能够大于SGA_MAX_SIZE 的值。

  当SGA_TARGET< SGA_MAX_SIZE 时,实例重启以后SGA_MAX_SIZE 就变成SGA_TARGET 的大小了。

Oracle 内核参数的更多相关文章

  1. Linux 下 Oracle 内核参数优化

    数据库的性能优化涉及到整个数据库运行环境的方方面面,诸如操作系统,Oracle自身,存储,网络等等几个大块.而操作系统则是Oracle稳定运行与最大化性能的基石.本文主要描述基于Linux系统下 Or ...

  2. oracle内核参数详解

    一.前言 在生产中,我们安装oracle数据库时,为达到最优我们需要对操作系统的内核参数进行一定的调整.主要从内存.cpu.io以及网络等方面,根据实际情况进行调整.以下参数可供大家参考,如有不当之处 ...

  3. ORACLE 10升级到10.2.0.5 Patch Set遇到的内核参数检测失败问题

    在测试ORACLE 10.2.0.4升级到10.2.0.5 Patch Set的过程中,遇到一个内核参数检查失败的问题,具体错误信息如下所示   实验环境: 操作系统:Oracle Linux Ser ...

  4. linux中与Oracle有关的内核参数详解

    工作当中遇到oracle运行时CPU占用率达到90%以上,调小以下参数值后恢复正常. fs.file-max = 65536 net.core.rmem_default=262144 net.core ...

  5. 安装Oracle需要调整的linux内核参数

    在安装Oracle的时候需要调整linux的内核参数,但是各参数代表什么含义呢,下面做详细解析. Linux安装文档中给出的最小值: fs.aio-max-nr = 1048576 fs.file-m ...

  6. Linux 内核参数 和 Oracle相关参数调整

    Linux 内核参数 和 Oracle相关参数调整 分类: Oracle Basic Knowledge2009-10-14 12:23 9648人阅读 评论(0) 收藏 举报 oraclelinux ...

  7. 安装ORACLE时在Linux上设置内核参数的含义

    前两天看到一篇Redhat官方的Oracle安装文档,对于Linux内核参数的修改描述的非常清晰. 安装Oracle之前,除了检查操作系统的硬件和软件是否满足安装需要之外,一个重点就是修改内核参数,其 ...

  8. Linux oracle安装 内核参数讲解

    在安装Oracle的时候需要调整linux的内核参数,但是各参数代表什么含义呢,下面做详细解析. Linux安装文档中给出的最小值: fs.aio-max-nr = 1048576 fs.file-m ...

  9. oracle安装内核参数设置

    安装oracle内核参数说明及设置 kernel.shmmax 说明: Linux进程可以分配的单独共享内存段的最大值(byte) 64位的linux操作系统,设置应该大于SGA_MAX_TARGET ...

随机推荐

  1. Asp.Net 之 使用Form认证实现用户登录 (LoginView的使用)

    1. 创建一个WebSite,新建一个页面命名为SignIn.aspx,然后在页面中添加如下的代码 <div class="div_logView"> <asp: ...

  2. 基于PHP的对接电子面单接口平台案例

    电子面单接口目前有三种对接方式,快递电子面单接口.菜鸟电子面单接口和快递鸟电子面单接口.这三种接口各有特点. 一.电子面单接口定义 1. 快递电子面单接口:快递公司自己开发的电子面单服务, 商家使用必 ...

  3. Divisibility

    Description Consider an arbitrary sequence of integers. One can place + or - operators between integ ...

  4. 模拟游客一天的生活与旅游java程序代写源码

    在某个城市的商业区里,有一家首饰店,一家饭店,一家面馆,一家火锅店,一家银行,一家当铺 现在有一群来自四川的游客,一群陕西的游客,一群上海的游客,和以上各店家的工作人员在此区域里,请模拟他们一天的生活 ...

  5. php 发送邮件

    php我们可以使用系统的mail函数去发送邮件 但是需要配置一下邮件环境 这里选择使用PHPMailer  这样比较方便 首先下载PHPMailer:https://github.com/Synchr ...

  6. 一个把List<String>转化为以","隔开的字符串的方法

    import java.util.ArrayList; import java.util.List; /** * 集合操作 * @author intrl * @date 2010-12-15 * @ ...

  7. poj 2186 强连通分支 和 spfa

    思路: 建图时,分别建正向图edge和转置图T.用正向图edge来DFS,找出第一个被发现的强连通分支(如果该图存在题目要求的点,那么一定就是第一个被发现的).然后用spfa跑转置图T,判断被发现的点 ...

  8. (转)9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路

    原文:http://www.cnblogs.com/figure9/archive/2013/01/09/2853649.html 1,简介 毕业答辩搞定,总算可以闲一段时间,把这段求职经历写出来,也 ...

  9. C++STL学习笔记_(4)queue

    10.2.5Queue容器 Queue简介 ²  queue是队列容器,是一种"先进先出"的容器. ²  queue是简单地装饰deque容器而成为另外的一种容器. ²  #inc ...

  10. codevs4373 窗口==poj2823 Sliding Window

    Sliding Window Time Limit: 12000MS   Memory Limit: 65536K Total Submissions: 53676   Accepted: 15399 ...