《Oracle RAC最佳实践》精华总结
### Oracle RAC最佳实践知识点详解 #### 一、会话级别的动态性能统计 在Oracle RAC环境中,了解各个会话的动态性能对于诊断性能瓶颈至关重要。以下是一些关键的视图和查询,可以帮助我们深入了解会话级别的性能: 1. **`V$SESSTAT`** 和 **`V$SESSION_EVENT`**: - `V$SESSTAT`: 该视图提供了关于每个会话的统计信息。例如,可以通过查询`gcCPUusedbythissession`来查看特定会话使用的全局缓存中的CPU时间。 - `V$SESSION_EVENT`: 这个视图显示了每个会话上发生的等待事件及其等待时间。一个重要的事件是`gccurrentblockbusy`,这代表了对全局缓存中的当前块的繁忙等待。 **示例查询**: ```sql SELECT s.sid, e.time_waited, s.program, s.module FROM v$session_event e, v$session s WHERE s.sid = e.sid AND e.event = 'gccurrentblockbusy' ORDER BY e.time_waited; SELECT st.sid, st.value, s.program, s.module FROM v$sesstat st, v$session s, v$statname n WHERE s.sid = st.sid AND st.statistic# = n.statistic# AND n.name = 'gc CPU used by this session' ORDER BY st.value; ``` #### 二、数据段统计 为了优化数据段的性能,可以使用以下视图来获取相关的信息: 1. **`V$SEGMENT_STATISTICS`**: 当`STATISTICS_LEVEL`参数被设置为`TYPICAL`时,此视图提供了每个数据段的统计信息。需要注意的是,它不包含关于undoblock和undo header transfers的信息。 2. **`V$INSTANCE_CACHE_TRANSFER`**: 这个视图可以帮助我们识别哪些实例在全局缓存中有最多的块级活动。 **示例查询**: ```sql SELECT * FROM v$instance_cache_transfer WHERE cr_busy > 0 ORDER BY cr_busy; ``` #### 三、标识在全局缓存中的长等待SQL 对于那些在全局缓存中引起长时间等待的SQL语句,可以使用以下查询来定位它们: ```sql SELECT SUBSTR(sql_text, 1, 50), cluster_wait_time FROM v$sql WHERE cluster_wait_time > 0 ORDER BY 2; ``` 这里的`cluster_wait_time`表示只完成了部分调用的时间,因此对于长时间运行的SQL可能无法完整获取。 #### 四、服务的性能统计 服务层面的性能监控同样非常重要,可以帮助我们理解不同服务的负载情况。 1. **`V$SERVICE_EVENT`**: 用于查看服务层面的等待事件。 **示例查询**: ```sql SELECT SERVICE_NAME, EVENT, TIME_WAITED FROM v$service_event WHERE event LIKE 'gccr%' ORDER BY 3; SELECT EVENT, TIME_WAITED FROM v$service_event WHERE event LIKE 'gc%' AND SERVICE_NAME = 'ORDER_ENTRY' ORDER BY 2; ``` #### 五、RAC能用调优方法 针对Oracle RAC环境的性能调优,以下是一些常见的策略: 1. **提高Buffer Cache命中率**: - 调整Buffer Cache大小。 - 在OLTP系统中避免执行大型全表扫描。 - 使用Buffer Pools(如Keep/Recycle),特别是对于Index Organized Tables (IOT) 和 IOT溢出。 2. **避免小数据集争抢**: - 减少Latch Free和Buffer Busy Wait。 - 避免频繁的分析操作。 - 减少锁定使用。 - 删除不必要的索引。 3. **提高本地缓存访问**: - 使用Automatic Segment Space Management (ASSM)。 - 序列缓存,在插入操作中尤为重要。 4. **使用数据隔离**: - 使用范围或列表分区。 - 使用哈希分区以减少Buffer Busy争用。 5. **其他建议**: - 将只读表放在只读表空间中。 - 考虑更改锁机制,比如使用只读表空间或者测试GC_FILES_TO_LOCKS参数。 #### 六、典型的RAC操作延迟 为了更好地理解Oracle RAC中的典型操作延迟,我们可以参考以下统计数据: - **Statspack延迟名称**: - `AvetimetoprocessCRblockrequest`: 0.1ms - 10ms - `AvereceivetimeforCRblock`: 0.3ms - 12ms - `Avetimetoprocesscurrentblockrequest`: 0.1ms - 23ms - `Avereceivetimeforcurrentblock`: 0.3ms - 30ms 这些指标可以帮助我们评估RAC中的网络延迟和其他性能瓶颈。 #### 七、最常见的问题 Oracle RAC环境中经常出现的问题包括但不限于以下几点: 1. **CR请求和Buffer等待**: - 可以通过`V$CR_BLOCK_SERVER`、`V$SESSION_WAIT`和`V$SESSION_WAIT_HISTORY`等视图来识别导致问题的回滚段。 2. **Library Cache Locks**: - 这种锁在PL/SQL和高级队列中较为常见。可以通过查询`V$ENQUEUE_STATS`和`V$SEGMENT_STATS`以及事件`10706`来查找相关的信息。 3. **Buffer Busy Waits**: - 叶数据块分裂是引起此类等待的最常见原因之一。通过查询等待事件和系统统计信息,可以找到引起大多数等待的位置。 以上就是Oracle RAC最佳实践中涉及的一些核心知识点。通过对这些方面的深入理解和应用,可以有效地提升Oracle RAC系统的性能和稳定性。









剩余9页未读,继续阅读


- 粉丝: 5
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 四川农业大学2021年9月《计算机建筑辅助设计》作业考核试题及答案参考3.docx
- 人工智能会叛逃?从下棋开始谈起........docx
- 中国象棋源代码JAVA程序.doc
- 换了电脑不熟悉软件发表感言.docx
- 财务会计制度及核算软件备案报告书(2).doc
- 大数据的中心机房建设方案设计.doc
- 网页制作初学者-学用HTML的超链接A标记.doc
- 浅析网络环境下档案信息化及档案信息化建设.docx
- 电力调度自动化系统中数据挖掘技术运用分析.docx
- 下午2576月10日周五计算机应用基础专升本作业多选题5分).docx
- 基于PLC的自动快速门控制系统设计.docx
- 东北农业大学2021年9月《面向对象程序设计》作业考核试题及答案参考1.docx
- 互联网+背景下高职院校学生党建工作的探索.docx
- 互联网发展与保健品销售最终(1).doc
- 第六章用户接口实验 ppt.pptx
- 用asp与php实现百度ping服务的代码(1).doc


