暂无图片
awr出现大量** SQL Text Not Available **
我来答
分享
暂无图片 匿名用户
awr出现大量** SQL Text Not Available **

数据库内存只分配了服务器40%的内存但是服务器内存使用率达到了百分之90左右。

数据库的日志操作正常,cpu使用率也很小。

数据库版本:11.2.0.4

查看awr报错

其中:

Execute to Parse % 只有4.5

SQL ordered by Version Count
Version Count基本都在好几百
sql text基本上都是** SQL Text Not Available **

请教一下这种情况如何处理?

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
张sir

数据库一般都是大io的,内存使用率百分之90,大概率是有大量内存被用来作为io的cache了,可以重启下os。或者看看到底哪个进程占用的内存最多,11g一般没有bug进程占用大内存

暂无图片 评论
暂无图片 有用 1
打赏 0
小草

在Oracle数据库中,出现大量“SQL Text Not Available”的情况,通常是由于以下原因之一:

共享池不足:共享池中的内存不足以存储所有的SQL文本和执行计划。尽管你提到CPU使用率较低,但如果内存分配不当,可能会导致共享池频繁溢出。

SQL语句版本过多:SQL ordered by Version Count中版本计数很高,这可能表明有很多不同的SQL文本在执行,导致共享池中的空间被消耗。每个不同的SQL版本都会占用内存。

处理建议:
增加共享池大小:

可以考虑增加shared_pool_size,以便存储更多的SQL文本和执行计划。
sql
ALTER SYSTEM SET shared_pool_size = <新的值> SCOPE = BOTH;
使用SQL对象库:

如果应用程序经常生成相似的SQL,考虑使用绑定变量,以减少SQL版本的数量。
检查和优化SQL:

定期使用AWR报告中的SQL性能分析,识别和优化高版本计数的SQL语句。
使用SQL Tuning Advisor:

对于版本计数高的SQL,使用SQL Tuning Advisor来分析和优化SQL语句。
监控和调整其他内存参数:

确保pga_aggregate_target和其他内存参数配置合理,避免整体内存使用过高。
清理无用的SQL:

使用DBMS_SHARED_POOL来清理不必要的对象或释放内存。
定期收集统计信息:

通过DBMS_STATS收集表和索引的统计信息,以帮助优化器选择更好的执行计划。
检查应用程序逻辑:

确保应用程序中使用了有效的SQL编写方式,减少不必要的SQL生成。

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏