Oracle Preinstall 调优参数的学习


背景

学习是一个痛苦并快乐的过程.
之前自己手工安装过很多套Oracle数据库,也总结过很多
但是很多都是比较皮毛的.
最近遇到了一些问题. 才发现. 快餐只能吃饱,要是想学到东西必须精读.
必须多方考证多方学习.

用户相关

所有的应用都不应该使用root用户进行运行.
主要的问题在于两点:
1. root用户的权限太高, 容易误操作.
2. 运行的程序被人攻击, 会导致更加严重的安全问题.
3. 单独的用户便于分析和分组, 避免混淆. 所以建议不同的应用采用不同的用户,方便也安全.

内核参数

fs.file-max=6815744
kernel.sem=250
kernel.shmmni=4096
kernel.shmall=1073741824
kernel.shmmax=4398046511104
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
fs.aio-max-nr=1048576 主要修改的是 信号量 250个.
然后共享内存相关的参数 3个
这里重点介绍一些:
1. shmmni 可以理解为是页大小, 可以通过 getconf PAGESIZE 方式来获取. 单位是字节.
2. shmmax 指的是单个共享段的最大大小. 单位是字节.
3. shmall 指的是所有的共享段的综合大小. 注意单位是 page. 与上面两个不一样.
这里需要描述一下关系.
------------ 共享内存段 --------------
键 shmid 拥有者 权限 字节 连接数 状态
0x00000000 32768 oracle 600 12177408 142
0x00000000 65537 oracle 600 13388218368 71
0x00000000 98306 oracle 600 21377024 71
0xbda99060 131075 oracle 600 32768 71

参照Oracle的启动信息

可以看数据库启动时的内存分配情况:
Total System Global Area 1.3422E+10 bytes
Fixed Size 12174808 bytes
Variable Size 4932504104 bytes
Database Buffers 8455716864 bytes
Redo Buffers 21377024 bytes 12177408 是明确的 Fixed size
21377024 是明确的 Redo Buffers 因为我这个是一个测试环境, 没有开启大页, 所以看到内存其实没有完全的占用共享段空间.
一个Oracle进程至少有四个共享段, 前端时 shmmax大于 每一个共享段的内存大小. 对应的shmall 指的是所有共享段的总和大小不能超过这个值
理论上 shmall和 shmmax 其实是互相影响的 取两者较小的值进行影响. 如果 shmall的值小于SGA_TARGET的话 服务器是无法运行.
如果 shmmax的值是单个共享段的大小. 如果只有一个共享段. 那么进程只需要挂载一个共享段就可以了. 不需要多次挂载, 理论上如果共享段内的数据发生变化.
不同进程可以只获取一个IPC通信信息就可以, 只需要监听一个IPC.
如果有100个共享段.可能需要监听多个IPC 通道, 肯定性能会有所损耗.
只有一个共享段理论上性能是最优秀的.

文件打开数和TCP内核参数

适当增大文件打开数和tcp的最大默认值能够避免文件数不足和网络性能劣化. 

security/limits.conf的设置是遵从与内的fs.file-max的 只能比他小. 

tcp的默认值和最大值调大可以提高网络的性能, 避免缓冲池太小,大量小包堆积时影响网络的性能. 

理论上可以减少网卡中断,提高利用率和带宽.

内核启动参数与限制

audit=0 numa=off transparent_hugepage=never
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
oracle hard memlock 134217728
oracle soft memlock 134217728
oracle soft data unlimited
oracle hard data unlimited 启动参数会关闭numa 这个前段时间总结过, 主要是Oracle想避免Linux自作聪明的进行跨节点的处理.
透明大页是为了避免出现某些Oracle的bug . 关于透明大页 主要有如下的内容信息. Disabling Transparent Hugepages.
Refer Oracle Note:1557478.1 Disabling defrag.
Refer Oracle Note:1557478.1 MOS:ID 1557478.1   Because Transparent HugePages are known to cause unexpected node reboots and performance problems with RAC,
Oracle strongly advises to disable the use of Transparent HugePages.
In addition, Transparent Hugepages may cause problems even in a single-instance database environment with unexpected performance problems or delays.
As such, Oracle recommends disabling Transparent HugePages on all Database servers running Oracle.

关于大页设置

除了preinstall 进行的设置
大页内存的设置也较为关键.
还是刚才Oracle数据库的例子, 我将机器的设置为大页模式进行一次重新启动
show parameter SGA
sga_target big integer
12800M
计算大页的数量 因为大页默认是 2MB, 这样的话 大页数量应该就是 6400个. 为了保证能够正确进入SGA
我们建议将 大页设置为 6410个. 浪费十个大页的空间.
# 注意 主要是看free的大页数量. total-free 就是系统使用的大页数量.
vi /etc/sysctl.conf vm.nr_hugepages = 6410
sysctl -p 生效 cat /proc/meminfo 查看效果
HugePages_Total: 6410
HugePages_Free: 6410
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 13127680 kB
DirectMap4k: 313216 kB
DirectMap2M: 14366720 kB
DirectMap1G: 20971520 kB 重启数据库
启动之后验证一下内存的信息:
HugePages_Total: 6410
HugePages_Free: 9
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 13127680 kB
DirectMap4k: 321408 kB
DirectMap2M: 14358528 kB
DirectMap1G: 20971520 kB

Oracle数据库验证 需要大页信息的脚本

  • 参考Doc ID 401749.1
#!/bin/bash
echo "
This script is provided by Doc ID 401749.1 from My Oracle Support
# ipcs -m
Press Enter to proceed..."
read
KERN=`uname -r | awk -F. '{ printf("%d.%d\n",$1,$2); }'`
HPG_SZ=`grep Hugepagesize /proc/meminfo | awk '{print $2}'`
if [ -z "$HPG_SZ" ];then
echo "The hugepages may not be supported in the system where the script is being executed."
exit 1
fi
NUM_PG=0
for SEG_BYTES in `ipcs -m | cut -c44-300 | awk '{print $1}' | grep "[0-9][0-9]*"`
do
MIN_PG=`echo "$SEG_BYTES/($HPG_SZ*1024)" | bc -q`
if [ $MIN_PG -gt 0 ]; then
NUM_PG=`echo "$NUM_PG+$MIN_PG+1" | bc -q`
fi
done RES_BYTES=`echo "$NUM_PG * $HPG_SZ * 1024" | bc -q`
if [ $RES_BYTES -lt 100000000 ]; then
echo "Sorry! There are not enough total of shared memory segments allocated for
HugePages configuration.
# ipcs -m
of a size that can match an Oracle Database SGA. Please make sure that:
* Oracle Database instance is up and running
* Oracle Database 11g Automatic Memory Management (AMM) is not configured"
exit 1
fi
case $KERN in
'2.4') HUGETLB_POOL=`echo "$NUM_PG*$HPG_SZ/1024" | bc -q`;
echo "Recommended setting: vm.hugetlb_pool = $HUGETLB_POOL" ;;
'2.6') echo "Recommended setting: vm.nr_hugepages = $NUM_PG" ;;
'3.8') echo "Recommended setting: vm.nr_hugepages = $NUM_PG" ;;
'3.10') echo "Recommended setting: vm.nr_hugepages = $NUM_PG" ;;
'4.1') echo "Recommended setting: vm.nr_hugepages = $NUM_PG" ;;
'4.14') echo "Recommended setting: vm.nr_hugepages = $NUM_PG" ;;
*) echo "Kernel version $KERN is not supported by this script (yet). Exiting." ;;
esac
# End

Oracle Preinstall 调优参数的学习的更多相关文章

  1. Oracle SQL调优记录

    目录 一.前言 二.注意点 三.Oracle执行计划 四.调优记录 @ 一.前言 本博客只记录工作中的一次oracle sql调优记录,因为数据量过多导致的查询缓慢,一方面是因为业务太过繁杂,关联了太 ...

  2. Oracle 系统调优

    一:前言 一:调整初始化参数 1: Oracle 初始化参数分类 2:主要系统调优参数介绍 二:系统全局区 sga 优化 1:调整内存分配 2:调整日志缓冲区 1:查询当前oracle 实例的日志缓冲 ...

  3. JVM调优参数、方法、工具以及案例总结

    这种文章挺难写的,一是JVM参数巨多,二是内容枯燥乏味,但是想理解JVM调优又是没法避开的环节,本文主要用来总结梳理便于以后翻阅,主要围绕四个大的方面展开,分别是JVM调优参数.JVM调优方法(流程) ...

  4. Oracle SQL 调优健康检查脚本

    Oracle SQL 调优健康检查脚本 我们关注数据库系统的性能,进行数据库调优的主要工作就是进行SQL的优化.良好的数据架构设计.配合应用系统中间件和写一手漂亮的SQL,是未来系统上线后不出现致命性 ...

  5. Dubbo性能调优参数及原理

    本文是针对 Dubbo 协议调用的调优指导,详细说明常用调优参数的作用域及源码. Dubbo调用模型 常用性能调优参数 参数名 作用范围 默认值 说明 备注 threads provider 200 ...

  6. Spring Cloud 各组件调优参数

    Spring Cloud整合了各种组件,每个组件往往还有各种参数.本文来详细探讨Spring Cloud各组件的调优参数. Tomcat配置参数 1 server: 2 tomcat: 3 max-c ...

  7. Linux TCP/IP调优参数 /proc/sys/net/目录

    所有的TCP/IP调优参数都位于/proc/sys/net/目录. 例如, 下面是最重要的一些调优参数,后面是它们的含义: /proc/sys/net/core/rmem_default " ...

  8. hadoop作业调优参数整理及原理

    hadoop作业调优参数整理及原理 10/22. 2013 1 Map side tuning参数 1.1 MapTask运行内部原理 当map task开始运算,并产生中间数据时,其产生的中间结果并 ...

  9. JVM性能调优的6大步骤,及关键调优参数详解

    JVM性能调优方法和步骤1.监控GC的状态2.生成堆的dump文件3.分析dump文件4.分析结果,判断是否需要优化5.调整GC类型和内存分配6.不断分析和调整JVM调优参数参考 对JVM内存的系统级 ...

  10. 直通BAT必考题系列:JVM性能调优的6大步骤,及关键调优参数详解

    JVM内存调优 对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数. 1.Full GC 会对整个堆进行整理,包括Young.Tenured和Perm.Full GC因为需要对 ...

随机推荐

  1. Guava常用工具类总结

    === -"我想写得更优雅,可是没人告诉我怎么写得更优雅" -"Null的含糊语义让人很不舒服.Null很少可以明确地表示某种语义,例如,Map.get(key)返回Nu ...

  2. Spring源码学习笔记5——注册BeanPostProcessor,初始化事件多播器,注册事件监听器

    一丶前言 上篇Spring容器回调完所有的BeanFactoryPostPocessor,之后可以做到替换所有占位符,解析所有配置类等工作,这篇还会迎来一个Spring留给我们扩展的一个接口,涉及到A ...

  3. 心理健康数据集:mental_health_chatbot_dataset

    一.数据集描述 1.数据集摘要   该数据集包含与心理健康相关的问题和答案的对话对,以单一文本形式呈现.数据集是从流行的医疗博客(如WebMD.Mayo Clinic和HealthLine).在线常见 ...

  4. 斐波那契数Fibonacci

    509. 斐波那契数 斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列.该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和.也就是: F(0) = 0,   F(1) = ...

  5. CNCF首个云原生多云容器编排项目Karmada正式晋级孵化

    文分享自华为云社区<CNCF首个云原生多云容器编排项目Karmada正式晋级孵化]>,作者:云容器大未来. 近日,云原生计算基金会(CNCF)宣布,CNCF技术监督委员会(TOC)已投票通 ...

  6. MySQL数据库技术与应用:数据查询

    摘要:数据查询是数据库系统应用的主要内容,也是用户对数据库最频繁.最常见的基本操作请求. 数据查询 数据查询是数据库系统应用的主要内容,也是用户对数据库最频繁.最常见的基本操作请求.数据查询可以根据用 ...

  7. 2022 IDC中国未来企业大奖优秀奖颁布,华为云数据库助力德邦快递获奖

    摘要:华为云数据库助力德邦快递打造的"基于数智融合的一站式物流供应链平台"项目从500多个项目中脱颖而出,荣获2022 IDC中国未来企业大奖优秀奖"未来智能领军者&qu ...

  8. 一图解析MySQL执行查询全流程

    摘要:当我们希望MySQL能够以更高的性能运行查询时,最好的办法就是弄清楚MySQL是如何优化和执行查询的. 本文分享自华为云社区<mysql执行查询全流程解析>,作者:breakDraw ...

  9. Kubernetes(K8S) 拉取镜像 ImagePullBackOff pull access denied

    K8S 拉取阿里云镜像  第一次用时,没注意 授权,所以在 kubectl apply 后一直出现  ImagePullBackOff [root@k8smaster ~]# kubectl appl ...

  10. Spring Boot Admin 配置应用

    Spring Boot Admin 监控SpringBoot 服务的运行情况 https://codecentric.github.io/spring-boot-admin/2.3.0/#spring ...