Linux 下 Oracle 内核参数优化
数据库的性能优化涉及到整个数据库运行环境的方方面面,诸如操作系统,Oracle自身,存储,网络等等几个大块。而操作系统则是Oracle稳定运行与最大化性能的基石。本文主要描述基于Linux系统下 Oracle 内核参数的配置。
校验下面的列表中显示的内核参数的值被设置为大于或等于下面所显示的最小值。
如果你的系统中下面的任意参数的当前值已经大于或高于下面列出的值,请不要做任何修改。
下面的步骤给出了如何去校验并设置这些参数的值。
通过执行下面的命令进行校验
/sbin/sysctl -a | egrep "kernel.shmall|kernel.shmmax|kernel.shmmn|kernel.sem"
然后比较下表所列出的值
注意:下表显示的是内核参数以及shell 限制所需的最小值。对于生产数据库,Oracle建议去调整这些值使得数据库性能达到最优。有关优化内核参数更多信息请参考操作系统相关文档。
Oracle 内核参数参考值
Parameter |
Minimum Value |
Recommended value |
File |
semmsl semmns semopm semmni |
250 32000 100 128 |
Set only if those that are set by OS or other applications are lower |
/proc/sys/kernel/sem |
shmall |
2097152 |
shmmax/page_size |
/proc/sys/kernel/shmall |
shmmax |
Minimum of the following values: · Half the size of the memory · 4GB - 1 byte Note: The minimum value required for shmmax is 0.5 GB. However, Oracle recommends that you set the value of shmmax to 2.0 GB for optimum performance of the system. |
Half of RAM or if swap file is less then half of RAM the size of swap file |
/proc/sys/kernel/shmmax |
shmmni |
4096 |
/proc/sys/kernel/shmmni |
|
file-max |
512 * PROCESSES |
/proc/sys/fs/file-max |
|
ip_local_port_range |
Minimum:9000 Maximum: 65000 |
/proc/sys/net/ipv4/ip_local_port_range |
|
rmem_default |
262144 |
/proc/sys/net/core/rmem_default |
|
rmem_max |
4194304 |
/proc/sys/net/core/rmem_max |
|
wmem_default |
262144 |
/proc/sys/net/core/wmem_default |
|
wmem_max |
1048576 |
/proc/sys/net/core/wmem_max |
|
tcp_wmem |
262144 |
/proc/sys/net/ipv4/tcp_wmem |
|
tcp_rmem |
4194304 |
/proc/sys/net/ipv4/tcp_rmem |
校验内核参数
按照下面的步骤去查看指定参数的值,如果有必要的话对其进行修改
执行下表中相应的命令来显示这些内核参数的值,并标记该参数的值是否需要修改。
Parameter |
Command |
semmsl, semmns, semopm, and semmni |
# /sbin/sysctl -a | grep sem This command displays the value of the semaphore parameters in the order listed. |
shmall, shmmax, and shmmni |
# /sbin/sysctl -a | grep shm This command displays the details of the shared memory segment sizes. |
file-max |
# /sbin/sysctl -a | grep file-max This command displays the maximum number of file handles. |
ip_local_port_range |
# /sbin/sysctl -a | grep ip_local_port_range This command displays a range of port numbers. |
rmem_default |
# /sbin/sysctl -a | grep rmem_default |
rmem_max |
# /sbin/sysctl -a | grep rmem_max |
wmem_default |
# /sbin/sysctl -a | grep wmem_default |
wmem_max |
# /sbin/sysctl -a | grep wmem_max |
tcp_wmem |
# /sbin/sysctl -a | grep tcp_wmem |
tcp_rmem |
# /sbin/sysctl -a | grep tcp_rmem |
修改内核参数
如果上述查询的内核值小于最小值,按照下面的步骤进行修改:
使用任意的文本编辑器编辑/etc/sysctl.conf 文件, 添加或编辑下列类似的行:
注:仅仅修改你需要调整的参数。对于信号量参数 (kernel.sem), 你必须指定所有的四个值。 如果当前的值大于最小值,那么使用或保留当前值。
fs.file-max = 512 * PROCESSES
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
or
kernel.sem = 250 256000 100 1024
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 262144
net.ipv4.tcp_wmem = 262144 262144 262144
net.ipv4.tcp_rmem = 4194304 4194304 4194304
注:参数shmmax 最小值是 0.5 GB。然而 Oracle 建议设置该参数的值到2GB去最大化系统性能。
在/etc/sysctl.conf文件里指定的这些参数值,重新启动系统后依然被保留。 然而在 SUSE Linux Enterprise Server 系统中,重新启动系统前输入下面的命令来确保系统启动时读到 /etc/sysctl.conf 文件:
# /sbin/chkconfig boot.sysctl on
输入下面的命令以使得当前修改的这些内核参数的值立即生效:
# /sbin/sysctl -p
上面的这个命令同时可以看到刚刚设置的参数及值,如果不正确再次编辑该文件并输入正确的值。
可以通过命令/sbin/sysctl -a 显示当前所有可用值.
在 SUSE 系统中,输入下面的命令使得系统读取/etc/sysctl.conf文件当系统启动的时候:
# /sbin/chkconfig boot.sysctl on
在 SUSE 系统中,你必须输入oinstall 组的gid作为参数 /proc/sys/vm/hugetlb_shm_group的值. 主要是为oinstall组内的成员授予许可去创建共享内存段
如下面的示例,oinstall组id为501
# echo 501 > /proc/sys/vm/hugetlb_shm_group
运行上述命令后,使用vi添加下列文本到 /etc/sysctl.conf,以允许 boot.sysctl 随操作系统启动时运行:
vm.hugetlb_shm_group=501
注:仅仅一个组能够被定义给vm.hugetlb_shm_group.
一旦在/etc/sysctl.conf 文件更新参数后,要么重新启动计算机或者运行命令 sysctl -p 激活 /etc/sysctl.conf 文件的新值,并使之生效。
为Oracle 用户设置shell限制
为提高oracle性能,必须为oracle用户增加下列shell限制:
Shell Limit |
Item in limits.conf |
Hard Limit |
Maximum number of open file descriptors |
nofile |
65536 |
Maximum number of processes available to a single user |
nproc |
16384 |
增加shell 限制:
添加下列行到/etc/security/limits.conf 文件:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
添加或编辑/etc/pam.d/login 文件,当下面的条目不存在时:
session required pam_limits.so
取决于Oracle用户缺省的shell环境,为缺省的shell启动文件作下列更改:
对于Bourne, Bash, or Korn shell, 添加下列行到/etc/profile 文件 (SUSE Linux 则添加到/etc/profile.local):
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
原文出处:Oracle kernel parameters tuning on Linux
更多参考
有关Oracle RAC请参考
使用crs_setperm修改RAC资源的所有者及权限 使用crs_profile管理RAC资源配置文件 RAC 数据库的启动与关闭 再说 Oracle RAC services Services in Oracle Database 10g Migrate datbase from single instance to Oracle RAC Oracle RAC 连接到指定实例 Oracle RAC 负载均衡测试(结合服务器端与客户端) Oracle RAC 服务器端连接负载均衡(Load Balance) Oracle RAC 客户端连接负载均衡(Load Balance) ORACLE RAC 下非缺省端口监听配置(listener.ora tnsnames.ora)
ORACLE RAC 监听配置 (listener.ora tnsnames.ora) 配置 RAC 负载均衡与故障转移 CRS-1006 , CRS-0215 故障一例
基于Linux (RHEL 5.5) 安装Oracle 10g RAC
使用 runcluvfy 校验Oracle RAC安装环境
有关Oracle 网络配置相关基础以及概念性的问题请参考:
配置非默认端口的动态服务注册
配置sqlnet.ora限制IP访问Oracle Oracle 监听器日志配置与管理
设置 Oracle 监听器密码(LISTENER) 配置ORACLE 客户端连接到数据库
有关基于用户管理的备份和备份恢复的概念请参考
Oracle 冷备份 Oracle 热备份 Oracle 备份恢复概念 Oracle 实例恢复 Oracle 基于用户管理恢复的处理 SYSTEM 表空间管理及备份恢复 SYSAUX表空间管理及恢复 Oracle 基于备份控制文件的恢复(unsing backup controlfile)
有关RMAN的备份恢复与管理请参考
RMAN 概述及其体系结构 RMAN 配置、监控与管理 RMAN 备份详解 RMAN 还原与恢复 RMAN catalog 的创建和使用 基于catalog 创建RMAN存储脚本 基于catalog 的RMAN 备份与恢复 RMAN 备份路径困惑 使用RMAN实现异机备份恢复(WIN平台) 使用RMAN迁移文件系统数据库到ASM linux 下RMAN备份shell脚本 使用RMAN迁移数据库到异机
有关ORACLE体系结构请参考
Oracle 表空间与数据文件 Oracle 密码文件 Oracle 参数文件 Oracle 联机重做日志文件(ONLINE LOG FILE) Oracle 控制文件(CONTROLFILE) Oracle 归档日志 Oracle 回滚(ROLLBACK)和撤销(UNDO) Oracle 数据库实例启动关闭过程 Oracle 10g SGA 的自动化管理 Oracle 实例和Oracle数据库(Oracle体系结构)
Linux 下 Oracle 内核参数优化的更多相关文章
- TCP三次握手与Linux的TCP内核参数优化
感谢各位技术大佬的资料分享,这里我把我理解的内容做一个整理 一:TCP的三次握手 1.TCP简述 TCP是一个面向连接的协议,在连接双方发送数据之前,首先需要建立一条连接.TCP建立连接可以简单称为: ...
- Linux之TCPIP内核参数优化
/proc/sys/net目录 所有的TCP/IP参数都位于/proc/sys/net目录下(请注意,对/proc/sys/net目录下内容的修改都是临时的,任何修改在系统重启后都会丢失),例如下面这 ...
- Linux(Centos )的网络内核参数优化来提高服务器并发处理能力【转】
简介 提高服务器性能有很多方法,比如划分图片服务器,主从数据库服务器,和网站服务器在服务器.但是硬件资源额定有限的情况下,最大的压榨服务器的性能,提高服务器的并发处理能力,是很多运维技术人员思考的问题 ...
- 内核参数优化/etc/sysctl.conf
net.nf_conntrack_max = 65536000net.netfilter.nf_conntrack_tcp_timeout_established = 1200net.ipv4.tcp ...
- Linux之TCPIP内核参数
/proc/sys/net目录 参考1.Linux之TCPIP内核参数优化 所有的TCP/IP参数都位于/proc/sys/net目录下(请注意,对/proc/sys/net目录下内容的修改都是临时的 ...
- linux下TCP/IP及内核参数优化调优(转)
Linux下TCP/IP及内核参数优化有多种方式,参数配置得当可以大大提高系统的性能,也可以根据特定场景进行专门的优化,如TIME_WAIT过高,DDOS攻击等等. 如下配置是写在sysctl.con ...
- 高并发情况下Linux系统及kernel参数优化
众所周知在默认参数情况下Linux对高并发支持并不好,主要受限于单进程最大打开文件数限制.内核TCP参数方面和IO事件分配机制等.下面就从几方面来调整使Linux系统能够支持高并发环境. Iptabl ...
- Linux新系统的安全优化和内核参数优化
拿到一个新的linux系统需要做的安全和内核优化,主要是为了提升系统安全和提升性能,满足后续的应用需要.这里简单记录一下拿到一个新的系统需要做的一些事情,仅此抛砖引玉,具体可根据自己实际情况进行设置. ...
- [效果不错] nginx 高并发参数配置及linux内核参数优化,完整的内核优化设置。PHP-FPM高负载解决办法。
背景:对vps小资源的实践中对,https://justwinit.cn/post/7536/ 的再优化,再实践,再优化,特别是Nginx,PHP,内核: 零)Nginx: error_log /da ...
随机推荐
- iOS -- MJrefresh
- (void)refresh { MJRefreshGifHeader *header = [MJRefreshGifHeader headerWithRefreshingTarget:self r ...
- jqMobile中的dialog和popup的区别
主要区别是:dialog默认含回退按钮.并且dialog在1.4版中已经过时,1.5中将会移除. 下面是 原文1: Using a Dialog Window as a Popup A jQuery ...
- Beta版本冲刺Day3
会议讨论: 628:已经将原本写在jsp中的所有界面修饰代码转移到了css文件中,同时当页面跳转的时候也不会出现崩溃的现象,并且已经解决了上次无法连接数据库的问题.但是又遇到了一些新的小问题,希望明天 ...
- hibernate的hql查询
1.概念介绍 1.Query是Hibernate的查询接口,用于从数据存储源查询对象及控制执行查询的过程,Query包装了一个HQL查询语句. 2.HQL是Hibernate Query Langua ...
- Zookeeper总结
Zookeeper数据模型 zookeeper有一个层级的命名空间,更像一个分布式的文件系统. 唯一的区别就是命名空间中的每一个节点同它关联. ZNodes zookeeper树上的每一个节点被 ...
- 【POJ 2774】Long Long Message 最长公共子串
还是模板啊,手残&&打成||查错查了1h+TAT #include<cstdio> #include<cstring> #include<algorith ...
- Sublime Text插件:HTML+CSS+JAVASCRIPT+JSON快速格式化[转]
今天在github上乱逛,无意间找到victorporof分享的htmlpretty插件,特做推荐: 先看看他是怎么描述htmlpretty的: This is a Sublime Text 2 an ...
- 谈谈MVC项目中的缓存功能设计的相关问题
本文收集一些关于项目中为什么需要使用缓存功能,以及怎么使用等,在实际开发中对缓存的设计的考虑 为什么需要讨论缓存呢? 缓存是一个中大型系统所必须考虑的问题.为了避免每次请求都去访问后台的资源(例如数据 ...
- Ext-进度条
1.progress使用 Ext.MessageBox.progress('请等待',msg:'读取数据中……'); 真实案例 tqbtnNews:function(){ var me = this; ...
- python安装失败0x80240017
安装KB2999226更新补丁后, 可以正常安装python3.5. 此更新包在vs2015的patch包里有.Microsoft下载中心也有,这里列出的适用于win7x86: Windows 7 更 ...