oracle内核参数详解
一、前言
在生产中,我们安装oracle数据库时,为达到最优我们需要对操作系统的内核参数进行一定的调整。主要从内存、cpu、io以及网络等方面,根据实际情况进行调整。以下参数可供大家参考,如有不当之处还望大家指出,一起研究学习。
二、参数调整建议
| 参数名称 | 含义 | 建议值 |
| kernel.shmmax | 单个共享内存段的最大值 | 取内存大小减1,单位为byte |
| kernel.shmall | 控制共享内存页数 | 4294967296 |
| kernel.shmmni | 共享内存段的最大数量 | 4096 |
| kernel.sem | 信号集容纳最大信号数量 所有信号的最大数量 调用单个信号集中最大信号数量 信号集的最大值 | 5010 641280 5010 128 |
| fs.file-max | 系统中所允许的文件句柄最大数目 | 512 乘以 processes |
| fs.aio-max-nr | 限制并发未完成的请求 | 10485760 |
| net.ipv4.ip_local_port_range | 系统开放端口范围 | 9000 65500 |
| net.core.rmem_default | 接收套接字缓冲区大小的默认值 | 262144 |
| net.core.rmem_max | 接收套接字缓冲区大小的最大值 | 4194304 |
| net.core.wmem_default | 发送套接字缓冲区大小的默认值 | 262144 |
| net.core.wmem_max | 发送套接字缓冲区大小的最大值 | 1048576 |
| vm.nr_hugepages | 大页,直接分配并保留对应大小的内存区域 | sga/2M稍微大一点,可参考MOS:749851.1 |
| vm.vfs_cache_pressure | directory和inode cache保持在一个合理的百分比 | 200 |
| vm.swappiness | 内存使用率剩余多少时开始使用swap | 10 |
| vm.min_free_kbytes | 最低保留多少内存 | 524288 |
| vm.dirty_ratio | 脏页数量达到系统总内存的多大比例触发pdflush/flush/kdmflush等后台回写进程 | 5 |
| vm.dirty_background_ratio | 所有全局系统进程的脏页数量达到系统总内存的多大比例触发pdflush/flush/kdmflush等后台回写进程 | 5 |
| vm.dirty_writeback_centisecs | 唤起去刷新脏数据的时间 | 100,单位1/100秒 |
| vm.dirty_expire_centisecs | 指定脏数据能存活的时间 | 100,单位1/100秒 |
| vm.drop_caches | 清空缓存机制 | 3 |
| vm.overcommit_memory | 内存申请分配机制 | 2 |
| vm.overcommit_ratio | 物理内存分配时的比例 | 90 |
| kernel.panic | 系统发生panic时内核重新引导之前的等待时间 | 10 |
| kernel.panic_on_oops | 当系统发生oops或BUG时,所采取的措施 | 1 |
| kernel.sysrq | 文件指定的值为非零,则激活键盘上的sysrq按键 | 1 |
| net.ipv4.conf.bond1.rp_filter | 开启源地址校验规则 | 2 |
| net.ipv4.ipfrag_high_thresh | 碎片整理时的最大内存 | 33554432 |
| net.ipv4.ipfrag_low_thresh | 碎片整理时的最小内存 | 31457280 |
三、参数详解
# Controls the maximum shared segment size, in bytes
kernel.shmmax = 34359738368
(定义单个共享内存段的最大值,设置应该足够大,能在一个共享内存段下容纳下整个的SGA,设置过低可能会导致需要创建多个共享内存段)
建议值:取内存大小减1
ipcs -sa查看共享内存段的个数
cat /etc/sysctl.conf | grep kernel.shmmax
举例:
sga_target=1G,
kernel.shmmax = 102400000
如下图所示,共享内存段分成了10个,导致oracle性能有一定的下降。

# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296
(kernel.shmall 参数是控制共享内存页数。该参数大小为物理内存除以pagesize;默认值已经是4294967296*4k/1024/1024/1024=16T足够大了,一般不用改。)
[root@ceshi ~]# getconf PAGE_SIZE
4096
一个共享内存页为4k
kernel.shmmni = 4096
(shmmni 内核参数是共享内存段的最大数量,缺省值 4096 ,一般肯定是够用了)
kernel.sem = 5010 641280 5010 128
(信号集容纳最大信号数量 所有信号的最大数量 调用单个信号集中最大信号数量 信号集的最大值)
fs.file-max = 6815744
(该参数决定了系统中所允许的文件句柄最大数目,文件句柄设置代表linux系统中可以打开的文件的数量,fs.file-max为512 乘以 processes)
fs.aio-max-nr = 10485760
(此参数限制并发未完成的请求,应该设置避免I/O子系统故障)
net.ipv4.ip_local_port_range = 9000 65500
(当前系统开放端口范围,默认是32768到61000,对于繁忙的网络服务器需要增加网络端口范围来增强它的处理能力)
[root@ceshi ~]# cat /proc/sys/net/ipv4/ip_local_port_range
32768 61000
net.core.rmem_default = 262144
(接收套接字缓冲区大小的默认值)
net.core.rmem_max = 4194304
(接收套接字缓冲区大小的最大值)
net.core.wmem_default = 262144
(发送套接字缓冲区大小的默认值)
net.core.wmem_max = 1048576
(发送套接字缓冲区大小的最大值)
vm.nr_hugepages = 16400
(在系统启动时,直接分配并保留对应大小的内存区域,使用改参数时需要禁用AMM)
计算公式:sga/2M稍微大一点即可或者使用脚本计算,可参考MOS:749851.1
vm.vfs_cache_pressure=200
(缺省值100表示内核将根据pagecache和swapcache,把directory和inode cache保持在一个合理的百分比;该值低于100,将导致内核倾向于保留directory和inode cache;该值超过100,将导致内核倾向于回收directory和inode cache)
vm.swappiness=10
(表示内存使用率超过90%时开始出现有交换分区的使用)
vm.min_free_kbytes=524288
(最低保留多少内存,设置过高会触发kswapd0进程消耗大量 CPU一般512M即可)
vm.dirty_ratio = 5
(单个进程的脏页数量达到系统总内存的多大比例后,就会触发pdflush/flush/kdmflush等后台回写进程运行。)
vm.dirty_background_ratio=5
(所有全局系统进程的脏页数量达到系统总内存的多大比例后,就会触发pdflush/flush/kdmflush等后台回写进程运行)
vm.dirty_writeback_centisecs=100
(单位:1/100秒;表示每1秒pdflush会被唤起去刷新脏数据,如果刷新脏数据的时间超过了这个时间,完成后将会sleep1秒)
vm.dirty_expire_centisecs=100
(单位:1/100秒;指定脏数据能存活的时间,超过该时间就会从内存中写入磁盘)
vm.drop_caches=3
(1表示清空页缓存;2表示清空inode和目录树缓存;3表示清空所有缓存)
注意:手动清理时需要执行sync命令将数据同步到磁盘
sync
echo 3 > /proc/sys/vm/drop_caches
vm.overcommit_memory=2
(0表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。1表示内核允许分配所有的物理内存,而不管当前的内存状态如何。2表示内核允许分配超过所有物理内存和交换空间总和的内存)
vm.overcommit_ratio=90
(当vm.overcommit_memory=2时生效,为物理内存分配时的比例)
结合以上两个参数可以计算可以:
使用的内存大小为= SWAP内存大小 + 物理内存 * overcommit_ratio / 100
kernel.panic = 10
(单位秒,系统发生panic时内核重新引导之前的等待时间,0表示禁止重新引导)
kernel.panic_on_oops = 1
(当系统发生oops或BUG时,所采取的措施0:继续运行;1:让klog记录oops的输出,然后panic,若kernel.panic不为0,则等待后重新引导内核)
kernel.sysrq=1
(该文件指定的值为非零,则激活键盘上的sysrq按键。这个按键用于给内核传递信息,用于紧急情况下重启系统。当遇到死机或者没有响应的时候,甚至连 tty 都进不去,可以尝试用 SysRq 重启计算机。)
net.ipv4.conf.bond1.rp_filter = 2
(0:不开启源地址校验。1:开启严格的反向路径校验。对每个进来的数据包,校验其反向路径是否是最佳路径。如果反向路径不是最佳路径,则直接丢弃该数据包。2:开启松散的反向路径校验。对每个进来的数据包,校验其源地址是否可达,即反向路径是否能通(通过任意网口),如果反向路径不同,则直接丢弃该数据包)
net.ipv4.ipfrag_high_thresh = 33554432
(系统中当数据包传输发生错误,会进行碎片整理,有效的数据包被保留,而无效的数据包被丢弃,ipfrag参数指定了碎片整理时的最大内存。)
net.ipv4.ipfrag_low_thresh = 31457280
(系统中当数据包传输发生错误,会进行碎片整理,有效的数据包被保留,而无效的数据包被丢弃,ipfrag参数指定了碎片整理时的最小内存。)
oracle内核参数详解的更多相关文章
- (转)centos7优化内核参数详解
centos7优化内核参数详解 原文:http://blog.csdn.net/xiegh2014/article/details/52132863 cat /etc/sysctl.conf #CTC ...
- linux中与Oracle有关的内核参数详解
工作当中遇到oracle运行时CPU占用率达到90%以上,调小以下参数值后恢复正常. fs.file-max = 65536 net.core.rmem_default=262144 net.core ...
- Oracle cursor_sharing 参数 详解
一. 官网的说明 http://download.oracle.com/docs/cd/E11882_01/server.112/e17110/initparams042.htm#REFRN10025 ...
- Linxu内核参数详解
#表示SYN队列的长度,默认为1024,加大队列长度,可以容纳更多等待连接的网络连接数. net.ipv4.tcp_max_syn_backlog = 65536 #每个网络接口接收数据包的速率比内核 ...
- Linux内核参数详解
所谓Linux服务器内核参数优化(适合Apache.Nginx.Squid等多种web应用,特殊的业务有可能需要做略微调整),主要是指在Linux系统中针对业务服务应用而进行的系统内核参数调整,优化并 ...
- centos7优化内核参数详解
cat /etc/sysctl.conf #CTCDN系统优化参数 #关闭ipv6 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.d ...
- Oracle utl_file_dir参数详解
1 UTL_FILE_DIR参数定义 UTL_FILE_DIR是Oracle中的一个"静态参数",可以设置一个或多个路径.用于在PL/SQL中进行文件I/O操作(可以用utl_fi ...
- Oracle中用exp/imp命令参数详解【转】
Oracle中用exp/imp命令参数详解 [用 exp 数 据 导 出]:1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中 exp sy ...
- Oracle 11g Dataguard参数详解
https://www.jb51.net/article/52269.htm注:本文译自<Oracle Data Guard 11g Handbook> Page 78 – Page 88 ...
随机推荐
- 微信小程序 请求签名接口超时 踩坑路。。
我们公司一般做开发都是先用测试机的接口调试功能,等功能都调试的差不多了,再换成线上的正式接口,因为正式接口要验证签名. 这几个功能都调试的差不多了,准备换成线上正式接口了,结果却出了问题,提示请求超时 ...
- 【并行计算与CUDA开发】英伟达硬件加速解码器在 FFMPEG 中的使用
目录(?)[-] 私有驱动 编译 FFMPEG 使用 nvenc 这篇文档介绍如何在 ffmpeg 中使用 nvenc 硬件编码器. 私有驱动 nvenc 本身是依赖于 nvidia 底层的私有驱动的 ...
- 冲刺Noip2017模拟赛1 解题报告——五十岚芒果酱
题1 国际象棋(chess) [问题描述] 有N个人要参加国际象棋比赛,该比赛要进行K场对弈.每个人最多参加2场对弈,最少参加0场对弈.每个人都有一个与其他人都不相同的等级(用一个正整数来表示).在对 ...
- mysql根据时间统计数据语句
select FROM_UNIXTIME(`createtime`, '%Y年%m月%d日')as retm,count(*) as num from `user` GROUP BY retm se ...
- centos7服务搭建常用服务配置之二:Rsync+sersync实现数据实时同步
目录 1.RSYNC数据备份 1.1 rsync服务简介 1.2 rsync特点和优势 1.3 rysnc运行模式简介 1.4 数据同步方式 2 Rsync实验测试 2.1 实验环境说明 2.2 服务 ...
- spring websocket 使用@SendToUser
spring websocket 使用@SendToUser 原文链接:https://blog.csdn.net/yingxiake/article/details/51224569 之前我们利用@ ...
- mac 环境下mysql登陆失败问题Access denied for user 'root'@'localhost' (using passwordYES)
1.停止mysql服务 sudo /usr/local/mysql/support-files/mysql.server stop 2.进入mysql的bin目录 cd /usr/local/mysq ...
- DISCO Presents Discovery Channel Code Contest 2020 Qual Task E. Majority of Balls
Not able to solve this problem during the contest (virtual participation). The first observation is ...
- [DEBUG] spring boot在eclipse中用maven打包成jar访问templates报500错误
更新:打war包的话只要把html文件放在resources/templates下即可,根本不需要放外面. 配置application.yml和templates放外面这种做法,打war包确实不行. ...
- POJ 1177 矩形周长并 模板
Picture 题目链接 http://poj.org/problem?id=1177 Description A number of rectangular posters, photographs ...