暂无图片
Oracle19C rac,同样sql语句,两个节点执行计划不一样的原因,怎么预防?
我来答
分享
手机用户0852
2024-06-11
Oracle19C rac,同样sql语句,两个节点执行计划不一样的原因,怎么预防?

Oracle19C rac,同样sql语句,两个节点执行计划不一样的原因,怎么预防?

我来答
添加附件
收藏
分享
问题补充
8条回答
默认
最新
小鲁菜
暂无图片

原因:数据分布不均,系统负载差异,统计信息未更新或不一致,并行度设置一直,确保 Oracle 实例版本一致

解决:定期更新统计信息;

使用绑定变量而不是硬编码值可以确保 SQL 语句被优化器视为同一查询,从而可能得到一致的执行计划;

根据系统负载和资源分布调整相关数据库参数,如并行度设置。

视图监控 SQL 执行计划的差异

暂无图片 评论
暂无图片 有用 0
打赏 0
暂无图片
手机用户0852

两个节点参数一样,sql 变量一样

暂无图片 评论
暂无图片 有用 0
打赏 0
伟鹏

绑定一下执行计划

暂无图片 评论
暂无图片 有用 0
打赏 0
手机用户0852

gv$sql中sqltext , sql_id 相同 ,parsing_schema_name,plan_hash_value不同

两个parsing_schema_name下有相同的表名,但是index 不同,开发的存储过程中表名前没有schema_name,所以造成现在这个情况,

这种情况如何绑定?开发不统一表名前加schema_name

暂无图片 评论
暂无图片 有用 0
打赏 0
伟鹏
2024-06-12
没搞懂你说的啥意思,等于说你的sql里面的表名对应不同的schema,那你这个就不是所谓相同的sql了,不同用户下执行各自表下的sql。你执行计划应该就不会一样。你还要求人家执行计划一样,费解。
手机用户0852

即使刚统计了信息,也会出现这种两个节点不一致的执行计划,sql 采用绑定变量,rac ,并行度,版本参数都一致,


1.这两个参数在生产库中一般怎么设置?optimizer_adaptive_plans,optimizer_adaptive_statistics

2.gv$sql中sqltext , sql_id 相同 ,parsing_schema_name,plan_hash_value不同

两个parsing_schema_name下有相同的表名,但是index 不同,开发的存储过程中表名前没有schema_name,所以造成现在这个情况,

此种情况,绑定一个schema_name执行计划,会不会影响另一个schema_name执行计划?


暂无图片 评论
暂无图片 有用 0
打赏 0
手机用户0852

没搞懂你说的啥意思,等于说你的sql里面的表名对应不同的schema,那你这个就不是所谓相同的sql了,不同用户下执行各自表下的sql。你执行计划应该就不会一样。你还要求人家执行计划一样,费解。


--不是,现在我遇到的是这样sql ,采用绑定变量,rac ,并行度,版本参数都一致,sqltext 一样,但是parsing_schema_name不一样,分别解析各自底下的表,数据量不一样,表名一样,但是index 不一样,所以不同的parsing_schema_name,plan_hash_value 肯定不一样

目前是两个问题,

1.相同的sqlid,相同的parsing_schema_name,有不同的plan_hash_value ,造成这个情况的原因及预防

2.相同的sqlid,不同的parsing_schema_name,不同的plan_hash_value,如果绑定的话,绑定一个schema_name 下的sqlid,会不会影响另一个schema_name 的执行计划?

暂无图片 评论
暂无图片 有用 0
打赏 0
小鲁菜
2024-06-12
表结构一样,尝试 下,创建全局索引来处理跨 schema 查询呢
手机用户0852

不跨 schema 查询,就是各个schema访问各自的表,只不过表名,表结构相同,就是表的index 不同

所以就出现了在GV$SQL 中sqlid相同,parsing_schema_name不同,plan_hash_value不同的情况

从中情况我绑定一个会不会影响另一个schema,y因为绑定按sqlid,plan_hash_value,所有相同的sql_id 就都绑成一个了

暂无图片 评论
暂无图片 有用 0
打赏 0
手机用户8303

剛好最近遇到相同問題

最後解法是建立SQL Plan Baselines

绑定執行計畫

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


请输入正文
提交
相关推荐
ORACLE子表链接主表,主表的数据只显示在第一行怎么做到
回答 1
一般来说,主表和子表关联,主表的数据会显示和子表一样的行数,而且会重复,我猜你的意思是,对于主表中的每一行记录,在结果中都只保留一条。先说问题,从你这个格式中来看,如果有人对这个数据进行了排序,那么你
最近几年公司逐渐使用各种数据库,有什么好工具能够快速管理多种数据库吗?
回答 1
DBeaver、Navicat这两款相对来说是支持较多且通用的数据库管理工具和SQL客户端。你可以尝试试用一下,找适合自己的。但是通用的缺点肯定是没那些专用的好用的。就像Oracle,使用plsqld
OGG在ADG进行switchover时的处理方法
回答 3
专家:    你好!     我又按照你的推测测试了一遍,没发现数据丢失,请查看附件,谢谢!
RAC会崩溃吗?
回答 1
已采纳
当然会,糟糕的设计或选择会让它崩溃。除了数据库本身之外,还有许多组件参与提供数据库服务。RAC可能准备就绪并处在运行状态,但客户却无法访问;客户端和服务器之间的中间网络组件可能存在故障;破坏所有硬件的
Docker安装完Oracle 19c,远程连接12170,怎么处理?
回答 2
客户端3个文件配置:oci.dll,监听,tns解析。
请问oracle external模式下的磁盘组里面的磁盘能删除吗
回答 3
external至少需要1块盘,表示没有做磁盘冗余,即你磁盘组的大小就是所有磁盘的大小之和,这只是表示你磁盘出故障后没有冗余的数据可以恢复,只能依赖外部的比如raid技术。但是磁盘组内删除添加磁盘是可
有做国产化的么?生产中替换oracle,一般用什么呢?
回答 4
已采纳
我们是用的postgresql
Oracle硬盘读取最长活动时间100是什么原因
回答 1
存在大量读取的sql,比如大量的全表扫描
关于12c inmemory特性问题
回答 5
inmemory这个我们用了将近一年都没出现过这种情况,就最近两个月开始出现的这个问题,现在都是每天早晨运维手动重新加载inmemory
oracle 12c rac安装问题
回答 3
使用afd方式创建的asm磁盘asmcmdafdlabelDATA1/dev/sdbinitasmcmdafdlabelFRA1/dev/sdcinit但是1点上能看到磁盘信息[root@rac1ra