shared pool主要由保存数据字典的data_dictionary和保存SQL和PL/SQL代码和执行计划的library cache组成 。还包括其它供系统不同特性和技术使用的若干缓冲区,如为shared server模式提供的UGA等。
优化shared pool的思路:
1)根据设置经验,例如,可设置shared_pool_size=sga_target*(10%~15%)。
2)重点关注保存SQL和PL/SQL代码和执行计划的library cache相关指标。查看AWR报告Load Profile部分,分析Hard Parses/s等指标。分析Instance Efficiency Percentages (Target 100%)中LibraryHit %、Execute to Parse %、Soft Parse %等
需要关注的等待事件:
Latch:library cache
Latch:shared pool
3)查看Time Model Statistics中与shared pool相关指标(parse time elapsed与hard parse elapsed time)。
如果hard parse elapsed time所占比例较高,说明应用的语句共享性存在严重问题。
优化方法:
1)评估语句共享性
Execute to Parse %=(execute次数-Parse次数)/Execute次数*100%
如果Execute to Parse %太低,说明解析次数非常高,系统整体共享性差。一般该指标达到70%以上,就说明语句共享性不错。
AWR报告中Library Hit %、Soft Parse %和Hard Parses/s。Parse包含Hard Parse与Soft Parse次数,但我们应关注Hard Parses。
查询非共享的sql语句(执行次数为1):
select sql_text from v$sqlarea where executions=1 order by upper(sql_text);
2)通过shared pool advisory设置合理的shared_pool_size。也可以通过设置shared_pool_reserved_size参数,使一些比较大的PL/SQL对象常驻内存中,减少shared pool出现碎片的可能性。
3)合理设置large_pool_size参数
large pool缓冲区用于备份恢复操作、并行处理、ASM、共享连接模式、模拟异步I/O操作等场景,应合理设置large_pool_size以避免使用shared pool缓冲区,加剧shared pool缓冲区空间的紧张和产生碎片的可能性。
注意:并不是所有的sql都需要共享,对于统计报表类sql因其单笔事务的资源消耗大,并发量不高的特点,应该保证其执行计划的最优,这时候不用绑定变量。
分享到:
相关推荐
### Oracle性能调整:Shared Pool深入分析及性能优化 #### 一、Shared Pool概念与重要性 **Shared Pool** 是Oracle数据库实例内存结构SGA(System Global Area)中的一个重要组成部分,主要用于存储共享的数据结构...
在相克军的ORACLE讲座中,这一章节详细探讨了Shared Pool的工作原理、优化策略以及相关问题的解决方法。 首先,Shared Pool由三个主要部分构成:Free(剩余空间)、Library Cache和Row Cache。Free区域是用来存储未...
### Oracle Shared Pool 学习资料知识点详述 #### 17.1 Shared Pool 的基本原理 **概述:** Shared Pool 是 Oracle SGA (System Global Area) 中的一个关键组成部分,主要负责存储可共享的数据结构,例如 SQL 语句...
### Oracle数据库性能优化——SharedPool原理及性能分析 #### SharedPool的基本原理 Oracle数据库通过引入SharedPool机制,显著提高了数据库的性能。在Oracle 7版本以前,并没有SharedPool的概念,每个用户连接...
这块位于系统全局区域 SGA(system global area)的共享池(shared buffer pool)中的内存可以被所有的数据库用户共享。因此,当你执行一个 SQL 语句(有时被称为一个游标)时,如果它和之前的执行过的语句完全相同...
总的来说,理解并优化Sharedpool是提升Oracle数据库性能的关键。通过对Sharedpool的深入分析,我们可以更好地掌握SQL语句的缓存机制,减少解析开销,从而实现系统性能的提升。在实际操作中,合理设置初始化参数,...
本文将深入探讨Oracle性能优化的两个关键方面:SGA(System Global Area)的Shared Pool优化和Buffer Cache的优化。 首先,我们关注Shared Pool的调优。Shared Pool是SGA的一个组成部分,它存储了SQL语句、PL/SQL...
如果`shared_pool_size`不足,Oracle会报4031错误。 `shared_pool_reserved_size`参数用于在Shared Pool中预留空间给大对象,如大型软件包。系统默认会保留5%的Shared Pool空间,一般不建议手动设置,让系统自动...
优化SPFILE涉及到动态性能监视,定期分析并调整如DB_CACHE_SIZE、SHARED_POOL_SIZE等参数,以适应数据量的增长和应用的变化。 3. **PFILE(Parameter File)**:当没有SPFILE时,Oracle使用PFILE启动。虽然PFILE不...
在数据库管理领域,SQL Profile是一种优化工具,它用于在Oracle数据库中固定特定的执行计划,以提高查询性能。本文将详细讲解SQL Profile的工作原理、如何创建以及如何利用它来优化数据库性能。 首先,理解SQL ...
通过调整SHARED_POOL_SIZE,保持足够的空间以减少硬解析。 **优化数据字典高速缓存:** 增大DB_CACHE_SIZE,确保数据字典信息能快速访问。 **优化游标:** 管理游标缓存,避免过多的软解析,优化 cursor_sharing ...
通过优化内存分配,如合理配置共享池(Shared Pool)、数据库缓冲区(Database Buffer Cache)等,可以显著提高数据库的处理能力。 6. 并发和锁定优化:监控和调整数据库的并发机制,优化锁的使用策略和死锁的处理...
1. **Shared Pool优化**:Shared Pool是Oracle内存结构的一部分,用于存储解析的SQL语句、数据字典信息以及PL/SQL代码。优化Shared Pool可以显著提升性能,因为它减少了对磁盘I/O的需求。 2. **Gets、Pins和Reloads...
其他需要关注的初始化参数,如DB_CACHE_SIZE(数据库缓存大小)、SHARED_POOL_SIZE(共享池大小)、JAVA_POOL_SIZE(Java池大小)等,都可能需要调整。 4. ADDM的使用 自动化数据库诊断监视器(ADDM)是Oracle...
系统全局区(SGA)是Oracle内存管理的关键部分,它包括了Shared Pool、Database Buffer Cache、Redo Log Buffer、Java Pool、Streams Pool、Large Pool等子区域。SGA的大小可以通过`ALTER SYSTEM SET SGA_MAX_SIZE=?...
同时,缓存策略的设置,如Redo Log Buffer、Shared Pool、Buffer Cache等,也需要根据实际负载进行优化。 数据库的物理存储结构,如数据文件、控制文件、重做日志文件的布局,也会影响性能。通过合理规划这些文件的...
Oracle 10g中的Shared Pool、Large Pool、Java Pool等内存组件的合理配置,对于保持良好的数据库响应时间和吞吐量非常重要。此外,利用Oracle 10g的内存自动管理功能(Automatic Memory Management)可以简化内存...
- SQL语句及其执行计划会被缓存在共享缓冲池(shared buffer pool)中。 2. **SQL缓存**: - 为了进一步提高性能,可以通过调整`init.ora`文件中的参数来控制SQL缓存的大小。 - 更大的缓存可以存储更多的SQL语句...