×

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

QI 发表于 2019-9-11 17:10

本帖最后由 QI 于 2019-9-11 17:12 编辑

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

1.png
2.png

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


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


使用show parameter memory查看memory_target

3.png

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

通过show parameter pga查看PGA大小

4.png

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

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

5.png

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

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

6.png

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

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

7.png

彩蛋1:


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

8.png

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

9.png

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

10.png

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

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

11.png

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

12.png

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


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

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

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

13.png

输出为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;

14.png

新添加四个组,分别给节点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;

15.png

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

alter system checkpoint;

16.png

将组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;

17.png

脚本如下,按需使用:

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插件放在系统里,解压安装。

18.png

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

19.png

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



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

喜欢这篇分享吗?喜欢就给楼主打点赏吧!点个赞也是极大的鼓励!

发帖可获得5S豆;若您的分享被加精或推荐优秀等,将获得更多S豆奖励,了解更多S豆奖励信息

完善手机号和公司名称,让服务更省心更便捷!立即完善

×
有话想说?点这里!
可评论、可发帖

本版版主

1194
457
124

发帖

粉丝

关注

160
141
18

发帖

粉丝

关注

本版热帖

本版达人

新手24268...

本周建议达人

清风慕竹

本周分享达人

新手10696...

本周提问达人