Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

3

积分

0

好友

0

主题
1#
发表于 2012-3-1 00:29:04 | 查看: 3577| 回复: 1
最近生产库经常报死锁,虽然是程序逻辑的问题,但是每次把从trace文件中找到互锁的两条记录发给开发之后,他们总是要找好久才能定位到出问题的代码,有时甚至难以找到原因,身为dba的我们如何提供更多的信息和他们一起定位原因呢?有没有什么好办法?
2#
发表于 2012-3-2 18:25:58
“但是每次把从trace文件中找到互锁的两条记录发给开发之后,他们总是要找好久才能定位到出问题的代码,”

非RAC 环境 一般可以在ora-60的trace中找到 最后造成死锁的2句SQL语句的, 如这个例子http://t.askmaclean.com/redirect.php?tid=355&goto=lastpost

RAC环境中 一般在trace里只能找到最后触发死锁的那条SQL


几点建议:

1  定位具体的SQL语句, 方法如上
2  定位造成死锁的行, 这个可以通过trace里的dictionary objn file# block#找到, 也可以在ASH  v$active_session_history;的current_obj# current_file# current_block#
3. 通过以上信息 分析为什么这些SQL语句在问题时段会交叉地锁住问题行, 是否存在 调整相关SQL运行的时段 来避免死锁的可能性, 在避免死锁的问题上 DBA有着举证的义务, 即证明某些SQL的锁是不合理的

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-11-15 01:51 , Processed in 0.058619 second(s), 22 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569