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. 开源、强大的Linux服务器集群管理工具,比宝塔好用!

    在这之前肯定很多人都接触过Linux管理面板:宝塔,宝塔的确非常方便而且好用,安装也简单,复制粘贴几句命令即可安装完成,且提供免费版.今天呢,民工哥向大家介绍另一个Linux的服务器管理面板--App ...

  2. C++ Traits Classes

    参考博文 https://blog.csdn.net/lihao21/article/details/55043881 Traits classes 的作用主要是用来为使用者提供类型信息.在 C++ ...

  3. 2021-01-14:timsort是什么,如何用代码实现?

    福哥答案2021-01-14: 答案来自此链接: 介绍: timsort是一种混合.稳定高效的排序算法,源自合并排序和插入排序,旨在很好地处理多种真实数据.它由Tim Peters于2002年实施使用 ...

  4. MES/MOM国内市场现状趋势与新生态模式参考

    本文分享自华为云社区<工业互联网系列(七)MES/MOM国内市场现状趋势与新生态模式参考>,作者:云起MAE . 国内工业互联网平台服务整体围绕数字化及数据价值挖掘的底层逻辑没有变,变的是 ...

  5. 技术解读丨目标检测之RepPoints系列算法

    摘要:本文对anchor-free的目标检测RepPoints系列算法进行梳理,具体包含RepPoints, RepPoints V2, Dense RepPoints. 背景介绍 近两年来,anch ...

  6. 解锁华为云AI如何助力无人车飞驰“新姿势”,大赛冠军有话说

    摘要:在2020年第二届华为云人工智能大赛•无人车挑战杯赛道中,"华中科技大学无人车一队"借助华为云一站式AI开发与管理平台ModelArts及HiLens端云协同AI开发应用平台 ...

  7. 鱼和熊掌兼得:C++代码在编译时完成白盒测试

    摘要:如果能够让代码在编译的时候,自动完成白盒测试,这不是天方夜谭. 白盒测试也叫开发者测试,是对特定代码函数或模块所进行的功能测试.当前主流的白盒测试方法是:先针对仿真或者生产环境编译出可执行文件, ...

  8. 盘点Python 中字符串的常用操作

    摘要:盘点 Python 中字符串的几个常用操作,对新手极度的友好. 本文分享自华为云社区<盘点 Python 中字符串的常用操作,对新手极度友好>,作者:TT-千叶 . 在 Python ...

  9. 深度克隆从C#/C/Java漫谈到JavaScript真复制

    如果只想看js,直接从JavaScript标题开始. 在C#里面,深度clone有System.ICloneable.创建现有实例相同的值创建类的新实例 克隆原理 值类型变量与引用类型变量 如果我们有 ...

  10. iOS加固保护新思路

    ​ 技术简介 前言 iOS加固保护是基于虚机源码保护技术,针对iOS平台推出的下一代加固产品.可以对iOS APP中的可执行文件进行深度混淆.加固,并使用独创的虚拟机技术对代 码进行加密保护,使用任何 ...