概述

ORACLE RAC凭借其卓越的容错能力和可扩展性以及对应用透明的切换能力引领了数据库高可用架构的潮流,但在实际的生产环境中,出现的性能问题非常多,对数据库的稳定性产生很大的影响,有一些甚至影响到了业务的连续性。今天主要分享一下RAC一些可以优化的方面。


01

RAC架构

下面是一个比较简单的Oracle集群基本结构。

用户通过业务网发起一个查询请求,数据库会判断要请求的数据块在两个节点的内存(buffer cache)中是否存在,如果存在,这些数据块就通过私网复制传递到需要的节点上,如果没有,再从存储读取到内存。在这个过程中,私网负责数据块传递及锁控制方面的通信,而存储,除了要响应数据请求,还要负责保存数据和记录日志。所以,共享存储和私有网络被认为是RAC系统的核心和灵魂。

在RAC环境中,存储层面(Orion测试)最关注的指标包括I/O吞吐量、IOPS、I/O延时;而私有网络层面(Netperf测试)最关注的是带宽和网络延时


02

系统与参数配置

系统与参数配置分为三个层次(从底向上):操作系统配置、Grid和RDBMS软件配置、数据库参数配置。

1、操作系统配置

1)使用推荐的操作系统版本、安装补丁程序

2)配置系统参数、网络参数、异步IO参数、VMO参数、内存大页

Oracle Database (RDBMS) on Unix AIX,HP-UX, Linux, Mac OS X,Solaris,Tru64 Unix Operating Systems Installation and Configuration Requirements Quick Reference (8.0.5 to 11.2) (文档 ID 169706.1)

MOS上的这个配置指引文档,列举了各种操作系统平台上,安装数据库之前要注意的配置事项,有很高的参考价值。

2、数据库软件配置

1)升级数据库到稳定版本

2)稳定的版本通常是小版本号比较高的版本,例如10.2.0.4、10.2.0.5、11.2.0.4

3)Grid和Rdbms软件保持相同的PSU版本

4)grid软件的PSU可以比Rdbms软件更高,但建议让他们保持相同的版本上运行

5)保持PSU更新到较新的版本,并打one off patch

对于特别重要的系统,要制定PSU的更新策略,另外,还需要关注PSU上最新的one off patch的更新信息。

3、数据库参数配置

在RAC环境中,有三个数据库参数是需要注意的:

parallel_force_local--建议设置为true,用于控制需要开并行守护进程的会话只能在该会话当前所在实例上开启并行守护进程。因为并行进程所操作的数据很可能非常接近,如果在多个实例同时运行,很可能产生大量的私网间的数据块传递和实例间资源争用。

gcs_server_processes--用于控制LMS进程的数量。在某些特殊环境中,RAC两个节点的CPU数量可能不一致,而CPU核数,决定了LMS进程初始化的数量,lms数量不一样在高负载时会产生严重的性能问题,在此种情况下,需要手工设置gcs_server_processes参数,使RAC数据库所有节点的lms进程数相同。

DRM(dynamic remastering)特性--建议关闭。在RAC环境中,数据块资源有一个主节点,为了提升本地节点的命中率,DRM特性可以动态调整数据块资源的主节点,哪个节点上对该资源请求的次数最多,就让它做了该数据块的主节点。但在调整主节点的过程中,有可能出现超时,使系统性能不稳定、严重的时候使数据库挂起。

另外,单实例数据库的参数优化在RAC环境同样适用。这里例举一些参数或特性:parallel_max_server 、 adaptive_cursor_sharing、cardinality feedback、serial direct path read、deferred_segment_creation、delayed failed logins、undo_autotune 、audit_trail 、adaptive_log_file_sync


03

优化设计--业务分割

RAC实现业务分割

1)优点 – 避免数据在实例内存间传递导致的性能下降。

2)劣势 – 数据无法使用全部的节点资源

实现:

1)根据业务增加各自的服务

2)客户端连接到各自的服务上


04

优化设计--并行查询

默认情况下,Oracle会将并行子进程尽可能的放到各个实例上执行,可 能有正面和负面的影响:

– 正面 多个实例处理数据,充分利用系统资源。

– 负面 大量的数据需要在实例的内存间传递,影响性能。

如果充分利用资源更能提高并行效果,就把并行分布到各个实例上执行。 如果Interconnect导致严重的性能下降,就考虑把并行开在一个实例上。


05

优化设计--对象的设计

1、Hot Table

1)数据块存放少量的行

• 减少数据块在多个实例间的争用。

2)partition

• 让数据落在多个段上,减少段访问的争用(段头热块)。

2、顺序键值索引

反向索引(无法进行range scan操作)

避免从多个实例访问索引(业务分割)

3、Hot Sequences

将多一些的sequences cache到内存当中

4、readonly

将read only的表放到readonly表空间上,减少数据块的一致性维护锁定,避免表空间上的

checkpoint操作。


06

总结

1)如果可能,业务分割。

2)如果可能,限制并行在一个实例上运行(测试)

3)Interconnect速度尽可能的快

4)Sequence 尽可能cache多一些

5)表空间的READ ONLY

6)对于小表,尽可能减少每个数据块中的数据。

7)避免大表的全表扫描。

后面会分享更多devops和DBA方面内容,感兴趣的朋友可以关注下!

参数调整 新部署rac_详解Oracle数据库RAC架构性能优化--参数设置+优化设计相关推荐

  1. 参数调整 新部署rac_开工的欲望 | AI Studio悄然上线新功能,用你的模型生成在线预测服务...

    开工第一天,小伙伴们是不是还没有从过年的状态转换过来?今天给大家介绍一个AI Studio新功能,能让大家用自己训练好的模型,轻松生成在线预测服务,通过在线API调用,而且是免费的哦~ 大家是不是已经 ...

  2. 参数调整 新部署rac_CDH5部署三部曲之三:问题总结

    本文是<CDH5部署三部曲>的终篇,前面两章完成了CDH5集群的部署和启动,本章将实战中遇到的问题做个总结,如果碰巧您也遇到过这些问题,希望本文能给您一些参考: 系列文章链接 <CD ...

  3. 【ORACLE】详解oracle数据库UTL_RAW包各个函数的模拟算法

    前言 这篇文章可能是你至今(2022-02-11)能在互联网看到的,关于utl_raw包的逻辑说得最深入的一篇文章了. 由于最近在复刻oracle中自带的包到其他数据库,因此需要对oracle中的包的 ...

  4. 详解ORACLE数据库硬解析、软解析、软软解析

    概述 TOM大叔的调优书中说过一句话,大概意思就是:如果有人让我写本怎样让ORACLE性能最慢的书的话我会将取消绑定变量(bind variable)做为书的第一章和最后一章,可见绑定变量的重要性.而 ...

  5. 创建数据库_详解Oracle数据库物化视图及创建物化视图索引

    概述 物化视图是一种特殊的物理表,"物化"(Materialized)视图是相对普通视图而言的.普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图S ...

  6. 手动更改oracle监听,详解Oracle数据库手动注册监听的方法

    本文主要介绍了为一个Oracle数据库(t02)配置多个监听(listener)的实验,过程有点小曲折.通过这个实验让我们来学习一下如何手动注册监听.以下是演示的过程. 1.新增两个测试的监听,lis ...

  7. oracle命令未正确结束_详解Oracle数据库终止正在进行expdp导出数据的正确操作

    概述 今天在做expdp导出时因没预估好数据量,所以需终止正在进行expdp导出数据的任务.那么怎么正确停止expdp导出任务呢?下面介绍一下我的操作过程. 1.不能用ctrl+c来终止导出(演示) ...

  8. isight参数优化理论与实例详解_详解oracle数据库优化参数--cursor_sharing

    概述 大家都知道硬解析,软解析对数据库sql的执行效率影响是很大的.在Oracle中,用户输入的SQL语句要进行所谓的Parse解析过程,用于生成执行计划,这也就是Query Optimizer的主要 ...

  9. oracle select 变量_详解oracle数据库优化参数--cursor_sharing

    概述 大家都知道硬解析,软解析对数据库sql的执行效率影响是很大的.在Oracle中,用户输入的SQL语句要进行所谓的Parse解析过程,用于生成执行计划,这也就是Query Optimizer的主要 ...

最新文章

  1. RESTful视图之Request 与 Response
  2. IPhoneX网页布局简介
  3. java break的用法_Java基础break、continue语句的用法
  4. [费用流专题]Going Home,Minimum Cost,工作安排
  5. java基础—计算: 2012-3-17到2012-4-6中间有多少天?
  6. cookie 以及session 的使用
  7. 安全运维 - Windows系统攻击回溯
  8. 『华为ICT』数据通信网络基础
  9. xp系统计算机蓝屏,xp蓝屏,教您教你怎么修复xp蓝屏问题
  10. 一线顶级互联网公司offer的成功经验【转自IT面试】
  11. MSDC 4.3 接口规范(20)
  12. Randy Pausch_卡内基梅隆大学演讲--真正实现你的梦想
  13. Oracle Coherence 3.5 读书笔记之3 - 满足性能,可扩展和可用性目标
  14. c语言五子棋毕业设计,基于c语言五子棋小游戏--本科生毕业设计.doc
  15. Walk Through the Fire,Is there a way out
  16. 织梦(DEDECMS)系统网站搬家技巧-dedeCms换空间搬家教
  17. 不知道天气咋样?一起用Python爬取天气数据分析告诉你
  18. python优化网站_5个Python脚本优化你的网站搜索引擎优化
  19. Demo:超市管理系统(python)
  20. ROS(Noetic)学习笔记 创建机器人URDF模型并在rviz中显示过程中遇到的一些问题

热门文章

  1. ssm框架使用重定向报404_如何在 ASP.NET Core MVC 中处理 404 错误
  2. python是一种面相什么语言_Python面相对象编程的知识总结
  3. 华为鸿蒙还会不会推出,华为如果把鸿蒙独立出来,让小米、魅族和蓝绿厂参股进来,会不会超越安卓?...
  4. python乐观锁代码实现_Django的乐观锁与悲观锁实现
  5. Python-接口自动化(七)
  6. 别转管理,十年程序员老鸟给新手的几条忠告(转)
  7. Spring MVC 文件上传 文件下载
  8. Introduction MBG
  9. 20140418--第1讲.开山篇
  10. linux扫盲之CPU模式