暂无图片
业务过程中有sql语句执行出现了主键冲突,然后就没有进行insert,想查找这条Sql语句
我来答
分享
晨光
2020-11-17
业务过程中有sql语句执行出现了主键冲突,然后就没有进行insert,想查找这条Sql语句

业务进行过程中有sql语句执行出现了主键冲突,然后就没有进行insert操作,怎么查找出具体是哪条Sql语句

我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
肖杰

根据你的描述我能想到两种情况:
一是高并发环境下主键字段相同的多条记录同时插入,比如A会话插入一个值(未提交),B会话随后也插入同样的值,这样会产生lock mode 4的enq: TX - row lock contention,这种情况去查dba_hist_active_sess_history视图里面这个等待事件对应的sql即可。

二是主键值本身已经存在表中了,这种情况直接应用程序日志就会报0001错误,直接看日志就能查到了

暂无图片 评论
暂无图片 有用 0
打赏 0
晨光

谢谢肖老师一直帮我答疑解惑^_^

暂无图片 评论
暂无图片 有用 0
打赏 0
文成

一般这种问题在数据库层面事后是比较难排查的,如果是绑定变量插入的,还需要去查询 sqlbind 相关视图,
应用层一般都是日志的,可以从应用层查看。当然,也可以建立触发器记录这些报错sql和值

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


请输入正文
提交
相关推荐
Rac RMAN备份报ORA-00028: YOUR SESSION HAS BEEN KILLED
回答 4
RELATEDISSUES(bugs,forums,RFAs)16587828这个在MOS上能搜索到什么吗?
IMPDP能否忽略CONSTRAINT的校验
回答 5
路过,学习了。。。。。。。。。。。。。。。。。
utl_http.request 报错ORA-29273: HTTP 请求失败 ORA-06512: 在 "SYS.UTL_HTTP", line 1130 ORA-28860: 致命的 SSL 错误
回答 2
已采纳
正常的,证书也已经安装到wallet里面
为什么pl/sql中和sqlplus中看到的字段属性不一致,FD_AI,FD_THEME sqlplus显示可为空,pl/sql显示不可为空
回答 2
在create table时,如果你的not null约束不是直接写在字段后面, 而是通过check或constraint子句增加的, 通过sqlplus都不会
AWR分析报告问题求助:RAC环境,一次停电,第2个节点重启了,现在第二个节点查询sql比第一个节点慢很多,同样的sql
回答 6
看你报告物理读和逻辑读很高建议优化物理读高sql可以加我qq282263179沟通
ins060001
回答 3
SSH互信可以通过手动配置,删除以前的,用sshkeygen一路回车。或者用数据库自带的脚本,有可能是openssh版本的问题或者bash版本问题;也有可能$HOME/.SSH或其中的文件由不同的用户
Oracle19c,imp导入时报错:
回答 5
已采纳
 LOGFILE和dumpfile都在DIRECTORY下面,不能单独指定
Oracle可空列判问题:我的库会把空字串视为null,即'' is null为真,这是前提。 现在假设用户表就name和password两列,后者允许为空,验证用户登录时这样写显然不行,怎么办?
回答 2
已采纳
可以用nvl函数试试:selectfromuserwherenvl(name,1)nvl(:name,1)andnvl(password,1)nvl(:pwd,1);希望能帮助到你!
ODA一体机有什么缺点
回答 5
嗯,但我问的是ODA。如果业务的数据量当前ODA的存储已经满足不了了。可以扩容吗
insert遇到 tx index contention等待事件
回答 1
第一次插入的时候发生了索引分裂,等索引分裂这个过程结束就没有等待了。重新调用就可以了,是因为之前分裂的索引块足够本次插入使用了。