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

一。Linux 系统下的核心参数

 1 # vi /etc/sysctl.conf
 2
 3 kernel.shmmax = 2147483648
 4 kernel.shmall = 2097152
 5 kernel.shmmni = 4096
 6 kernel.sem = 250 32000 100 128
 7 fs.file-max = 65536
 8 net.ipv4.ip_local_port_range = 9000 65000
 9 net.core.rmem_default = 4194304
10 net.core.rmem_max = 4194304
11 net.core.wmem_default = 262144
12 net.core.wmem_max = 262144
13
14 该参数保存在/etc/sysctl.conf 下,修改该文件不需要重启OS,只需要使用如下命令:
15 # /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;

1 查看os系统页的大小
2 #getconf PAGESIZE
3 4096

  这里显示的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 可以自动为我们调整以下内存池的大小:

1 * Buffer cache (DB_CACHE_SIZE)
2 * Shared pool (SHARED_POOL_SIZE)
3 * Large pool (LARGE_POOL_SIZE)
4 * Java pool (JAVA_POOL_SIZE)
5 * Streams pool (STREAMS_POOL_SIZE)

  需要手动调整的参数:

1 log buffer
2 db_nk_cache_size
3 db_keep_cache_size
4 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 操作系统内核参数 aio,Oracle Study之案例--安装Oracle内核参数配置

    Oracle Study之案例--安装Oracle内核参数配置 在Linux系统下,安装Oracle之前,除了检查操作系统的硬件和软件是否满足安装需要之外,一个重点就是修改内核参数,其中最主要的是和内 ...

  2. oracle 内核参数设置

    oracle 内核参数设置 共享内存的相关内核参数设置 Kernel.shmmax shmmax 指的是单个共享内存段的最大尺寸,单位为字节 oracle 建议,kernel.shmmax的值不能少于 ...

  3. Linux 下 Oracle 内核参数优化

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

  4. Oracle内核参数介绍

    内核参数大致可以分为4类: 共享内存(shared memory) 信号量(semaphores) 网络(network) 打开文件(open files) 一.共享内存 共享内存是用于进程间通信的一 ...

  5. ORACLE内核参数

    服务器内存为4G的情况下 修改/etc/sysctl.conf文件 (ROOT账户) kernel.shmmax = 2147483648 //公式:2G*1024*1024*1024=2147483 ...

  6. aix内核是linux,linux和aix内核参数检查

    安装oracle软件时需要设置操作系统级别的用户限制,后期检查可以使用如下命令,方便问题的排查工作 linux: tail -15 /etc/security/limits.conf tail -30 ...

  7. oracle solaris 内核 源码,Oracle和SUN Solaris内核参数

    Oracle和SUN Solaris内核参数 2010-4-11文字大小:大中小 本文描画了Sun Solaris上运转Oracle数据库所须要配置的一些内核参数. 一些预备知识shared memo ...

  8. 修改oracle用户资源限制,RHEL5中安装Oracle11gR2修改用户SHELL限制、环境配置、内核参数...

    修改用户的SHELL的限制[root@localhost -]# vi /etc/security/limits.conf # /etc/security/limits.conf # #Each li ...

  9. Linux内核参数(如kernel.shmmax)及Oracle相关参数调整(如SGA_MAX_SIZE)

    Linux内核参数(如kernel.shmmax)及Oracle相关参数调整(如SGA_MAX_SIZE) 我们一般在Linux 上安装 设置Oracle 数据库 或者在更换或升级硬件的时候都需要配置 ...

最新文章

  1. R语言数据类型及数据类型判断
  2. vector can通信源码_CAN总线IMU在自动驾驶安全控制中的应用
  3. MyBatis 源码解读-配置解析过程
  4. goalnd 分支合并完出现两个箭头
  5. python数据预测模型算法_Python AI极简入门:4、使用回归模型预测房价
  6. C# .Net中的类型转换(3)
  7. 疯狂连连看之开发游戏界面组件
  8. centos7中 npm install express 时Error: Cannot find module 'express'错误
  9. 基于ZStack构建物联网平台
  10. Chinapub要买的书
  11. MATLAB常用画图函数
  12. 网络API接口的使用
  13. 支付宝 java 签名_支付宝APP支付(Java后台生成签名具体步骤)
  14. 解决github官网进不去
  15. 进程子进程 线程子线程结束问题
  16. STM32F103ZE uIP DM9051 SPI以太网移植指南
  17. 超详细的css知识树状图~CSS选择器盒子模型、浮动、定位和装饰
  18. 【码农学编曲】Cubase乐器轨音频轨各种轨没声音的终极解决方案
  19. linux使用sts4,视听说sts4-4
  20. 数据可视化,BizCharts图表库入坑历程

热门文章

  1. This version of MySQL doesn't yet support 'LIMIT IN/ALL/ANY/SOME subquery 解决方法
  2. Kinect for Windows SDK发布
  3. 解决redis-cli连接时出现Could not connect to Redis at 127.0.0.1:6379: Connection refused
  4. 计算机语言up,TweakBit PCSpeedUp
  5. 万兆以太网测试仪应该具备的测试功能
  6. MIUI 13:带来全新小部件,新增三大隐私保护功能等
  7. SpringBoot定时任务实现的两种方式介绍
  8. 后端技术:mybatis中resultMap用法示例笔记
  9. 前端:Element UI 多选框组用法笔记
  10. 开发者入门,这几款小工具能让你事半功倍