Oracle Preinstall 调优参数的学习
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 调优参数的学习的更多相关文章
- Oracle SQL调优记录
目录 一.前言 二.注意点 三.Oracle执行计划 四.调优记录 @ 一.前言 本博客只记录工作中的一次oracle sql调优记录,因为数据量过多导致的查询缓慢,一方面是因为业务太过繁杂,关联了太 ...
- Oracle 系统调优
一:前言 一:调整初始化参数 1: Oracle 初始化参数分类 2:主要系统调优参数介绍 二:系统全局区 sga 优化 1:调整内存分配 2:调整日志缓冲区 1:查询当前oracle 实例的日志缓冲 ...
- JVM调优参数、方法、工具以及案例总结
这种文章挺难写的,一是JVM参数巨多,二是内容枯燥乏味,但是想理解JVM调优又是没法避开的环节,本文主要用来总结梳理便于以后翻阅,主要围绕四个大的方面展开,分别是JVM调优参数.JVM调优方法(流程) ...
- Oracle SQL 调优健康检查脚本
Oracle SQL 调优健康检查脚本 我们关注数据库系统的性能,进行数据库调优的主要工作就是进行SQL的优化.良好的数据架构设计.配合应用系统中间件和写一手漂亮的SQL,是未来系统上线后不出现致命性 ...
- Dubbo性能调优参数及原理
本文是针对 Dubbo 协议调用的调优指导,详细说明常用调优参数的作用域及源码. Dubbo调用模型 常用性能调优参数 参数名 作用范围 默认值 说明 备注 threads provider 200 ...
- Spring Cloud 各组件调优参数
Spring Cloud整合了各种组件,每个组件往往还有各种参数.本文来详细探讨Spring Cloud各组件的调优参数. Tomcat配置参数 1 server: 2 tomcat: 3 max-c ...
- Linux TCP/IP调优参数 /proc/sys/net/目录
所有的TCP/IP调优参数都位于/proc/sys/net/目录. 例如, 下面是最重要的一些调优参数,后面是它们的含义: /proc/sys/net/core/rmem_default " ...
- hadoop作业调优参数整理及原理
hadoop作业调优参数整理及原理 10/22. 2013 1 Map side tuning参数 1.1 MapTask运行内部原理 当map task开始运算,并产生中间数据时,其产生的中间结果并 ...
- JVM性能调优的6大步骤,及关键调优参数详解
JVM性能调优方法和步骤1.监控GC的状态2.生成堆的dump文件3.分析dump文件4.分析结果,判断是否需要优化5.调整GC类型和内存分配6.不断分析和调整JVM调优参数参考 对JVM内存的系统级 ...
- 直通BAT必考题系列:JVM性能调优的6大步骤,及关键调优参数详解
JVM内存调优 对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数. 1.Full GC 会对整个堆进行整理,包括Young.Tenured和Perm.Full GC因为需要对 ...
随机推荐
- Redis 的主从复制
Redis 主从复制是指:将一台 Redis 服务器的数据复制到其它的 Redis 服务器,前者所在的 Redis 服务器也被称为 "主节点"(Master / Leader),后 ...
- Java面试必考:什么是字节码?采用字节码的好处?
Java面试必考:什么是字节码?采用字节码的好处? 于哥你好,最近在java面试中被问答到什么是字节码?采用字节码的好处是什么?瞬间懵了,如果你连这个都不知道,我保证你面试GG! 首先说下Java的优 ...
- Rasa中的tracker_store和event_broker
Rasa 中的 tracker_store 相对主流为 Redis,event_broker 相对主流为 RabbitMQ.后续为了研究学习直接将 tracker_store 和 event_br ...
- KubeEdge在边缘计算领域的安全防护及洞察
摘要:着重介绍Kubeedge在安全防护方面的实践,并介绍OpenSSF在开源软件安全方面的计划与目标. 本文分享自华为云社区<KubeEdge在边缘计算领域的安全防护及洞察>,作者:华为 ...
- Angular:都2021年了,你为啥还没用Angular
摘要:数据绑定是将应用程序UI或用户界面绑定到模型的机制.使用数据绑定,用户将能够使用浏览器来操纵网站上存在的元素. Web开发需要模型和视图之间的数据同步.这些模型基本上包含数据值,而视图则处理用户 ...
- 如何用 DataTester 设计并创建可视化实验
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 设计一个可视化实验 确定实验目标:(示例)通过修改页面的「免费试用」按钮背景颜色,提高免费试用按钮的转化率. 确定 ...
- PPT 求职应聘:如何利用PPT去制作简历
PPT 求职应聘:如何利用PPT去制作简历 知识的载体 传播.美学.价值 价值:是通过思考 价值:将PPT导成了长图放到了微薄, 如何制作简历 09:00
- Jmeter对各种接口类型的测试
JMeter对各种类型接口的测试 默认做接口测试前,已经给出明确的接口文档(如,http://test.nnzhp.cn/wiki/index.php?doc-view-59):本地配好了JMeter ...
- 微软的一些公开课,Python、机器学习、SQL、AI,全部免费
大家好,我是老章,刷X看到一位博主Alif Hossain@alifcoder总结了微软的一些公开课,全部免费,蛮不错的.感兴趣可以学一波,还能领徽章. 1. 机器学习简介 本课程是学习机器学习基础知 ...
- anaconda学习(未完成)
1.Anaconda安装教程(以32.7.4为例)官网地址:https://www.anaconda.com/download(如无法下载可跳转清华源下载)下载完成后点击打开即可安装点击Next选择I ...