简单的部署经历——RAC调优
  

QI 2445

{{ttag.title}}
本帖最后由 QI 于 2019-9-11 17:12 编辑

Oracle RAC数据库调优
查看数据库状态:实例状态和监听状态


第一项:给管理进程提升的空间


首先确定是Oracle管理模式,当前Oracle有两种管理模式:SAG+PGA和memory管理。
memory的优先级高,当memory_target值为0时,才会使用SGA+PGA的方式管理。否则则使用memory内存管理


使用show parameter memory查看memory_target


此时memory的值为0,可以确认是SGA+PGA管理方式
通过show parameter sga查看SGA大小

通过show parameter pga查看PGA大小


可以看到SGA+PGA大小一共是16G+6G=22G

Oracle系统中,SGA+PGA管理模式是占用内存的空间,所以要保证SGA+PGA小于内存大小,同时为了防止暴增情况,要给swap留下足够的空间。如果SGA+PGA大于内存大小,会引起数据库无法启动。


这里可以看到我们的linux内存是64G,对于调优来说:我们需要将SGA改为内存大小*0.56,将PGA改为内存大小*0.14

虚拟机内存64G,sga_target大小可配置为36G,pga大小可配置为9G;重启数据库生效


关于swap空间大小,参考Oracle官方指导书给的说法:
当Oracle的内存在1G和2G之间时,swap大小写为1.5倍的内存大小;
当Oracle的内存在2G和16G之间时,swap大小写为和内存大小相等;
当Oracle的内存大于16G时,swap大小设置为16G就可以了。

所以这里我的swap空间写为16G大小(16对于swap来说也不多,反正写16准没错)


彩蛋1:


我们来测试一下memory管理的情况:手动将memory_target的大小修改为小于内存大小。


重启数据库(emmmmmm我好像把memory写的太小了,好像至少要22G)


起不来了怎么办呢?还好我搭的RAC环境,可以进入第二个节点修改这个参数。
(如果全挂了或者是单机环境也是有办法的,这里时间原因,我就没写了,有兴趣的可以私聊讨论哈)


果然修改成22G就起来了……

ORACLE 从11g开始引入自动内存管理特性,该特性需要更多的共享内存/dev/shm/,因此如果要使用该特性必须保证共享内存/dev/shm/的值要大于memory_target和memory_max_target。


所以使用memory会用到/dev/shm/中的空间,刚才把memory改变之后,能看到这个目录生成很多块文件。


如果memory_target的值大于/dev/shm/的空间,会导致数据库无法启动。


第二项:关闭透明大页 ,配置大页内存。

Oracle内存是以页的方式进行管理的,当前内存在分页上拥有Huge Pages(大页内存),以及Transparent Huge Pages(透明大页)两种方式。实际上可以将大页内存理解为分页的预分配方式,将透明大页理解为分页的动态分配方式。
Oracle官方文档中说明在RedHat 6及以后的系统版本默认开启透明大页,所以推荐我们在装Oracle之前关闭透明大页的使用,因为透明大页的动态分配方式会影响数据库内存使用性能。

首先查看是否开启了透明大页:cat/sys/kernel/mm/transparent_hugepage/enabled


输出为always,说明正在使用透明大页
使用echo never > /sys/kernel/mm/transparent_hugepage/enabled
将值调整为never,即关闭透明大页。

修改系统的/etc/sysctl.conf文件,新增一行vm.nr_hugepages = SGA(M)/2+100,SGA大小现在为36G  :   35*1024/2+100 = 18532

echo vm.nr_hugepages = 18532 >> /etc/sysctl.conf

修改系统的/etc/security/limits.conf 文件,新增两行:60397977 = 内存 * 0.9 (B)

*       soft  memlock  60397977
*       hard  memlock  60397977

第三项:优化RedoLOG

如果redo log组大小偏小(256M以下),或redo log组数偏少,需要添加和删除redo log。
RAC集群每个节点至少配置四个redo组。

通过下面命令查询日志组:THREAD#表示节点。

select group# , thread# , status ,bytes/1024/1024 from v$log;


新添加四个组,分别给节点1和节点2,每个组500M。

alter database add logfile thread 1group 5 '+DATA' size 500M;
alter database add logfile thread 1group 6 '+DATA' size 500M;
alter database add logfile thread 2group 7 '+DATA' size 500M;
alter database add logfile thread 2group 8 '+DATA' size 500M;

将组1和组3删掉,也新建500M。因为组2和组4正在使用(CURREN)所以不能删除。

alter database drop logfile group 1;
alter database drop logfile group 3;
alter database add logfile thread 1group 1 '+DATA' size 500M;
alter database add logfile thread 2group 3 '+DATA' size 500M;


更改正在使用的组(两个节点都要写)
alter system switch logfile;                     

alter system checkpoint;


将组2和组4删掉重建

alter database drop logfile group 2;
alter database drop logfile group 4;
alter database add logfile thread 1group 2 '+DATA' size 500M;
alter database add logfile thread 2group 4 '+DATA' size 500M;


脚本如下,按需使用:

alter database add logfile thread 1group 5 '+DATA' size 500M;
alter database add logfile thread 1group 6 '+DATA' size 500M;
alter database add logfile thread 2group 7 '+DATA' size 500M;
alter database add logfile thread 2group 8 '+DATA' size 500M;
alter database drop logfile group 1;
alter database drop logfile group 3;
alterdatabase add logfile thread 1 group 1 '+DATA' size 500M;
alterdatabase add logfile thread 2 group 3 '+DATA' size 500M;
alter system switch logfile;
alter system checkpoint;
alter database droplogfile group 2;
alterdatabase drop logfile group 4;
alterdatabase add logfile thread 1 group 2 '+DATA' size 500M;

alterdatabase add logfile thread 2 group 4 '+DATA' size 500M;

彩蛋2:

在用ssh登陆sqlplus的时候,会将上下和删除编译成字符,且没有上下文可用。
这里给大家提供一个方法:

将rlwrap插件放在系统里,解压安装。


用oracle用户将aliassqlplus='rlwrap sqlplus' 语句写在 .bash_profile 的最后。


将用户切换到root,再切换回oracle进入sqlplus就发现成功啦,简直不要太舒服。
(那个脚本这里上传不了,有需要的也可以私聊我拿)



最后我们整理一下RAC调优的三个步骤。
1、 调整数据库参数也就是SGA和PGA的大小;
2、 关闭系统透明大页并配置大页内存的参数;            所有节点都要调整哦
3、 Redo log日志组调整。

打赏鼓励作者,期待更多好文!

打赏
1人已打赏

Sangfor_闪电回_朱丽 发表于 2019-9-12 11:31
  
GET新技能了!社区小伙伴们的福利帖,感谢楼主分享~~~~

蓝海 发表于 2019-9-12 23:23
  
内容很详细,感谢楼主带来的分享!
秋水伊人 发表于 2019-9-12 23:34
  
学习了,感谢分享
YxY 发表于 2020-4-14 17:18
  
一看就是高手
新手569226 发表于 2021-1-6 21:42
  
感谢楼主的分享,步骤非常详细!
发表新帖
热门标签
全部标签>
每日一问
功能体验
技术笔记
新版本体验
技术咨询
2023技术争霸赛专题
干货满满
技术盲盒
标准化排查
产品连连看
GIF动图学习
信服课堂视频
安装部署配置
秒懂零信任
自助服务平台操作指引
技术晨报
深信服技术支持平台
答题榜单公布
卧龙计划
畅聊IT
答题自测
云计算知识
通用技术
安全攻防
每日一记
sangfor周刊
资源访问
排障笔记本
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
上网策略
测试报告
日志审计
问题分析处理
流量管理
运维工具
用户认证
原创分享
解决方案
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
SDP百科
功能咨询
终端接入
授权
设备维护
迁移
社区帮助指南
地址转换
虚拟机
存储
加速技术
产品预警公告
玩转零信任
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
纪元平台
华北区拉练
天逸直播
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
每周精选

本版版主

217
273
151

发帖

粉丝

关注

本版达人

皮皮虾·真

本周建议达人

郑州网络

本周分享达人

二进制网络

本周提问达人