请问安装 Oracle 数据库应该如何正确地调整内核配置参数?

2020-03-10 23:12:11 +08:00
 king1688888888
需要在 Linux 下搭建 Oracle 11g 的数据库,官方文档里只提供了满足安装条件的内核配置参数(/etc/sysctl.conf ),内容如下:

官方文档: https://docs.oracle.com/cd/E11882_01/install.112/e24326/toc.htm#BHCCADGD

fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
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

假设我的服务器配置是两个物理 CPU16 核 32 线程,内存是 64G。请问 fs.file-max、kernel.shmmax、fs.aio-max-nr 等等参数的最佳数值是怎么计算出来的?有什么公式或者在线网站可以计算吗?
2577 次点击
所在节点    Linux
4 条回复
LeeLou
2020-03-11 08:22:07 +08:00
按照 dba,或者 ocp 的说法,据说是根据实例的运行情况,动态的进行调整。 非常的复杂
etmad
2020-03-11 08:32:04 +08:00
我是按这脚本来设置的,自己备份 sysctl.conf。
MEMTOTAL=$(free -b | sed -n '2p' | awk '{print $2}')
SHMMAX=$(expr ${MEMTOTAL} \* 4 / 5)
SHMMNI=4096
SHMALL=$(expr ${MEMTOTAL} / \( 4 \* 1024 \))
cat >> /etc/sysctl.conf << EOF
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmax = $SHMMAX
kernel.shmall = $SHMALL
kernel.shmmni = $SHMMNI
kernel.panic_on_oops = 1
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
EOF
king1688888888
2020-03-11 16:08:43 +08:00
@etmad 请问大佬脚本中的计算公式是来自工作经验值还是官方?
etmad
2020-03-11 17:26:02 +08:00
@king1688888888 官方有文档 https://docs.oracle.com/database/121/LADBI/app_manual.htm#LADBI7864
这个好像没什么特别注意的,调性能还是要看 AWR 吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/651704

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX