崔华 - Oracle 11gR2 RAC预防性优化措施

刚依白

2018/05/13 发布于 技术 分类

今年是中国数据库技术大会第六个年头,大会将继续秉承分享IT最佳应用实践的宗旨,围绕传统数据库和大数据两条技术主线,在目前IT技术和管理快速的大背景下,更加深入地探讨数据库技术的现状和未来的发展方向,以及我们在这个转型过程中的实践经验和教训。

文字内容
1. Oracle 11gR2 RAC预防性优化措施 崔华 (dbsnake) allantreycn@gmail.com
2. 关于我 • 中航信架构师团队的负责人 • Oracle ACE总监 • 畅销书《基于Oracle的SQL优化》作者
3. 打最新PSU和Oracle推荐的Patch • Quick Reference to Patch Numbers for Database PSU, SPU(CPU), Bundle Patches and Patchsets (Doc ID 1454618.1) • Oracle Recommended Patches -- Oracle Database (Doc ID 756671.1)
4. 配置Hugepage • ALERT: Disable Transparent HugePages on SLES11, RHEL6, OL6 and UEK2 Kernels (Doc ID 1557478.1) • HugePages and Oracle Database 11g Automatic Memory Management (AMM) on Linux (Doc ID 749851.1) • Hugepages Not Used when ASM is used (Doc ID 1457842.1) • ASM & Shared Pool (ORA-4031) (Doc ID 437924.1) • Shell Script to Calculate Values Recommended Linux HugePages / HugeTLB Configuration (Doc ID 401749.1) • HugePages on Oracle Linux 64-bit (Doc ID 361468.1)
5. 配置Hugepage(续) 特别注意的是——如果要禁掉ASM实例的AMM,就一定不要同 时reset memory_target和memory_max_target,而是应该将 memory_target设为0并只reset memory_max_target。 在任意一个RAC节点执行如下操作: alter system set sga_target=2048M scope=spfile sid='*'; alter system set pga_aggregate_target=1024M scope=spfile sid='*'; alter system set memory_target=0 scope=spfile sid='*'; alter system set memory_max_target=0 scope=spfile sid='*'; alter system reset memory_max_target scope=spfile sid='*';
7. 停掉NTP,配置CTSSD 1、在RAC各个节点先停掉NTPD 2、cluvfy comp clocksync 3、将RAC各个节点的NTP配置文件/etc/ntp.conf改名 4、重启GI
9. 调整ASM实例的LARGE_POOL_SIZE alter system set large_pool_size=128M scope=spfile sid='*';
10. 关闭跨实例并行 alter system set parallel_force_local=true scope=spfile sid='*';
11. 设置dump文件大小上限 alter system set max_dump_file_size='4096M' scope=spfile sid='*';
12. 关闭UNDO_RETENTION的自动调整 alter system set "_undo_autotune"=false scope=spfile sid='*'; alter system set undo_retention=10800 scope=spfile sid='*';
13. 设置并行子进程的数量上限 手工设置并行子进程的数量上限为CPU个数*2,避免Oracle 自动计算的值太大,并行执行时把资源耗光: alter system set parallel_max_servers=128 scope=spfile sid='*';
14. 关闭DRM 关闭DRM(因DRM导致的问题非常多): alter system set "_gc_policy_time"=0 scope=spfile sid='*'; alter system set "_gc_undo_affinity"=false sid='*';
15. 增加实例延迟降级锁的时长 增加实例延迟降级锁的时长为3毫秒,避免遇到一些导致实例 crash的bug: alter system set "_gc_defer_time"=3 scope=spfile sid='*';
16. 关闭数据文件的自动扩展 否则undo和temp可能超过你的空间规划,大量吃掉空间
17. 关闭登录、登出的审计日志 11g默认打开了登录、登出审计,如果短连接比较多,则: 1、可能会导致system表空间被撑爆 2、在执行” insert into sys.aud$...” 这个SQL时大量软解 析,消耗大量CPU时间,可能导致连接超时 建议关闭记录的每一次登录、登出操作。在sqlplus中执行如 下语句: noaudit create session;
18. 关闭登录、登出的审计日志(续)
19. 关闭自适应游标共享 alter system set "_optimizer_adaptive_cursor_sharing"=false sid='*' scope=spfile; alter system set "_optimizer_extended_cursor_sharing"=none sid='*' scope=spfile; alter system set "_optimizer_extended_cursor_sharing_rel"=none sid='*' scope=spfile;
20. 关闭Cardinality feedback 11g的Cardinality feedback可能会导致执行计划的不稳定: alter system set "_optimizer_use_feedback"=false sid ='*' scope=spfile;
21. 设置28401和10949事件 alter system set event='28401 trace name context forever,level 1','10949 trace name context forever,level 1' sid='*' scope=spfile;
22. 使并行会话改为使用large pool alter system set "_px_use_large_pool"=true sid ='*' scope=spfile;
23. 恢复LGWR的post/wait通知方式 alter system set "_use_adaptive_log_file_sync"=false sid='*' scope=spfile;
24. 禁用ora.crf 禁用ora.crf,避免osysmond进程大量吃系统资源(如CPU) 以root用户在每个RAC节点执行以下语句: crsctl modify res ora.crf -attr "AUTO_START=never" -init crsctl modify res ora.crf -attr "ENABLED=0" -init crsctl stop res ora.crf -init
25. 配置OSWatcher • OSWatcher (Includes: [Video]) (Doc ID 301137.1) • Document 1531223.1 OSWatcher User Guide • Document 461053.1 OSWatcher Analyzer User Guide