暂无图片
Oracle driving_site hint不起作用
我来答
分享
杨豹
2023-08-23
Oracle driving_site hint不起作用
暂无图片 100M

我有一条sql,类似于

select /*+driving_site(t2)*/ * from tableA t1, tableB@dblink t2 where t1.xx = t2.xx;

复制

但是从执行计划中仍然看到的是sql在本地执行,我想通过driving_site的hint让sql去远端执行,但是driving_site似乎不起作用。

  1. 在哪些情况下driving_site会失效?
  2. 如何从trace文件中找到这条sql在数据库后台执行时hint被忽略的原因
我来答
添加附件
收藏
分享
问题补充
5条回答
默认
最新
redgame
在某些情况下,查询可能会被数据库优化器重写,以获得更好的执行计划。这可能导致提示被忽略。例如,如果优化器决定将查询重写为一个等价的形式,这可能会导致提示失效。 可以启用SQL跟踪:在执行该SQL语句时,通过设置适当的跟踪标志和级别,将跟踪信息记录到跟踪文件中。 解析跟踪文件:使用适当的跟踪文件解析工具(如tkprof)来分析跟踪文件。该工具将提供关于SQL查询的详细信息,包括执行计划和使用的提示。
暂无图片 评论
暂无图片 有用 2
打赏 0
杨豹
题主
2023-08-24
是否方便展示一下步骤,在19c中
PiscesCanon

是不是在DML中的SQL,比如:insert into select /*+ driving_site(t) */。

如果是DML的环境,那么select部分带有driving_site hint是一定不起作用。

文档 ID 825677.1中提出:

        DRIVING_SITE hint is not working for DML or DDL.  Remember DRIVING_SITE hint is for query optimization and not intended for DML or DDL, as a distributed DML statement must execute on the database where the DML target resides.

暂无图片 评论
暂无图片 有用 1
打赏 0
杨豹
题主
2023-08-24
并非insert,只是纯粹的select,并使用了绑定变量
redgame
这个也是有的
暂无图片 评论
暂无图片 有用 1
打赏 0
杨豹

微信图片_20230824134119.png

暂无图片 评论
暂无图片 有用 0
打赏 0
杨豹
题主
2023-08-24
右边是sql语句,左边是后台抓到的执行计划,从outline里面其实可以看到driving_site的关键字,但是却没生效
My1492

这个很正常呀,查询被数据库优化器重写,以获得更好的执行计划。提示的不如数据库算的

暂无图片 评论
暂无图片 有用 0
打赏 0
广州_老虎刘
2023-08-25
这个不正常, 用hint的目的就是要控制优化器的行为, 有时优化器的选择不一定是好的选择。 上面这个情况, 我简单模拟了一下, 是可以通过driving_site控制在对端执行的(不加hint默认在本地执行)。 题主可以通过逐步简化SQL的方法,看看问题出在哪里。
回答交流
Markdown


请输入正文
提交
相关推荐
关于Oracle定时任务停止后自动消失问题
回答 10
如果这个任务经常自动冒出来,建议查询dbasource及相关应用程序中,是否有建立此任务的指令
oracle可以从asm迁移到文件系统吗?
回答 4
已采纳
可以
oracle12c 12.1补丁包在哪里可以下载到?
回答 4
oracle12c12.1补丁包在哪里可以下载到? 最新的7月的GI的及DB的PSU。
Oracle大表分区改造
回答 2
已采纳
可以使用在线重定义的方式,参考我之前回答的这个问题https://www.modb.pro/issue/10548
主库里直接复制出来,要怎么给他定义或者添加队列号,使他单独运行成功
回答 2
谢谢
Oracle12C GI升级一个节点成功,一个节点失败
回答 2
这种情况比较常见,排查起来比较复杂,一般都是手工单独去打节点2的补丁。
rose 来双击热备 oracle,模式 是和rac 差不多的吗?
回答 2
已采纳
rose是双机高可用软件,正常来说,针对同一个实例,只能做主备模式,即主机运行,备机停止;而rac既可以实现高可用(两台机器故障任一台都不影响业务),也有负载均衡的作用,两台机器同时运行,scanip
万里开源分布式数据库支持MySQL协议吗?
回答 2
万里开源是前MySQL中国研发中心,多年来一直基于MySQL数据库开发GreatDB产品,100%兼容MySQL生态的。
有rac+racdg的文档吗?
回答 4
adg都用rac是真有钱哈。。。。。。。。
Oracle透明网关建立后创建dblink连接报错
回答 3
感觉你的透明网关配置有问题,重点检查下windows上的防火墙有没有开放1522端口
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~