暂无图片
oracle慢sql的where条件都是冒号加数字,怎么办
我来答
分享
czxin788
2020-10-24
oracle慢sql的where条件都是冒号加数字,怎么办

一直都在优化mysql的慢sql,人家mysql的慢sql的where条件都带着真实数据的值,非常人性化。最近开始搞oracle的慢sql优化,不论是awr报告,ash报告,alert日志,里面的sql语句的where条件都是绑定变量,说是通过V$SQL_BIND_CAPTURE视图自己找具体带的值。可是这非常麻烦啊,如果where条件的字段多,我还得一个一个拼接。

这不,最近数据库的alert日志总是报死锁,我就想分析一下这些sql,看看执行计划啥的,where条件没具体值,没法下手,

  UPDATE exem_post SET patientid = :1, pname = :2, rpttime = :3, examPara = :4, impression = :5, description = :6, re
mal = :8, rptdtname = :9, ckdtname = :10, exemposition = :11, ckdttime = :12, accessionno = :13 WHERE orderno = :14 a

----- End of information for the OTHER waiting sessions -----

Information for THIS session:

----- Current SQL Statement for this session (sql_id=fcsf5s3d3f1tb) -----
UPDATE PEXAM_ITEMS_TITLE SET REPORT_IMAGE1_URL = :1 WHERE ITEMUUID = :2


复制

这叫我很恼火,两个update语句where条件没值,请问各位大佬是怎么解决这个问题的呢

我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
章芋文

如果是死锁,不看绑定变量基本上可以定位问题吧?直接让应用去改就好了,另外死锁日志里面也有绑定变量的值。

如果是性能,直接看执行计划,判断是否是预期的,有没有抖动,有没有变量窥探的BUG,等等。

暂无图片 评论
暂无图片 有用 0
打赏 0
朱贺

oracle是有方法在获取执行计划的时候获取到对应sql_id中的变量值的,可以了解一下dbms_xplan.display_cursor

暂无图片 评论
暂无图片 有用 0
打赏 0
肖杰

我曾经也有你这样的烦恼~~~~测试SQL性能的时候,需要把具体的绑定变量的值替换到目标SQL中去然后实际跑一下,绑定变量多一点的话就比较繁琐,后来写了个脚本。。。。。。

暂无图片 评论
暂无图片 有用 0
打赏 0
肖杰

不过一般情况下不用,看SQL执行计划的方法很多,直接看执行计划就好了,不需要实际跑一下SQL才可以看的

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


请输入正文
提交
相关推荐
lobsegment清理
回答 1
可以尝试move和压缩。
oracle业务表的数据发生增删改,该表的索引会写redo,undo吗?
回答 6
自己简单测试一下,一目了然,为啥要猜,凭感觉?SQL>createtablet1(idnumber);Tablecreated.SQL>insertall2intot1values(1)3
在上传awr报告时显示参数错误
回答 2
@天王李,已修复,请重新尝试上传
oracle数据库如何降低高水位?
回答 1
已采纳
1可以通过mv表,2.通过t新建表。insert,然后truncate,rename等操作重新组织数据
Oracle 11g 单机能去做大数据吗?(单表数据量在8000w左右)
回答 5
可以的,楼上说的没毛病,主要看服务器性能:ssd,hba卡,网络都要跟上
Oracle 备份
回答 2
可以的,数据库会自己处理备份内容的,这样有可能会造成数据库全备提示找不到部分归档日志(备份归档日志时配置了备份后删除),整体不影响恢复完整性(前提是只要归档日志没有被删除,备份后的删除是可以的),全备
ORACLE 数据库服务停了,还能备份吗?
回答 3
只能冷备了
Oracle for rec in (Select)这种写法的游标里面怎么获取游标总数?
回答 1
已采纳
"for…in()loop"的这种隐式游标没有名称,因此无法使用count属性,建议声明个变量,在循环中累加,只是这样要循环完才知道总数;或者select的时候加上一个“count
简单化一点,把握最根本的东西。就是,去重后,对于相同记录的不同ID,你要保留哪个ID
回答 1
用分析函数,rownumber()over(partitionbyxxorderbyxx)
oracle 中调整字段精度有哪些方法?
回答 1
已采纳
✅oracle调整字段精度的四种方法:调整方式一:(精度只能调大不能调小)altertabletablenameaMODIFY(columnAXXnumber(27,15));调整方式二:(借用一个新