社区
Oracle 高级技术 帖子详情 oracle 经常出现锁表,请问原因以及解决方案 OneSmileyou 2019-08-23 03:58:34 数据库连接池如下:
出现的现象:后台事务提交一直在等待,查看锁表sql未发现问题,语句如下:
SELECT A.USERNAME,
A.MACHINE,
A.PROGRAM,
A.SID,
A.SERIAL#,
A.STATUS,
C.PIECE,
C.SQL_TEXT
FROM V$SESSION A,
V$SQLTEXT C
WHERE A.SID IN (SELECT DISTINCT T2.SID
FROM V$LOCKED_OBJECT T1,
V$SESSION T2
WHERE T1.SESSION_ID = T2.SID)
AND A.SQL_ADDRESS = C.ADDRESS(+)
ORDER BY C.PIECE;
oracle 的监听日志未找到;频率大概三个小时左右;查询V$SESSION连接池大概70个连接左右,觉得不应该出现这个情况
...全文
1977 3 打赏 收藏 oracle 经常出现锁表,请问原因以及解决方案 数据库连接池如下: 出现的现象:后台事 复制链接
扫一扫 分享 转发到动态 举报
写回复 配置赞助广告取 消
确 定
用AI写文章 3 条回复 切换为时间正序 请发表友善的回复… 发表回复 打赏红包 需支付: 0.00 元 取 消 确 定 OneSmileyou 2019-08-28 打赏举报 回复 感谢上面两位的解答,是因为系统存在过长事务处理 导致事务一直未提交,其他事务在等待长事务提交导致行锁 minsic78 2019-08-23 打赏举报 回复 性能问题不一定是锁的问题。
看你的描述,看来能重现,最好看发生问题时段的AWR的等待事件,如果等不及重现或者不能重现,可以拿事发时间段的AWR报告,如果发生问题的时间短很短,因为AWR快照默认1个小时采集一次,取AWR可能还不够合适,需要取ASH报告。
从现象上来看,如果堵塞时间比较短,而且有规律,光猜的话,可能是redo日志切换的问题,加大redo member大小,加多redo group,可以缓减甚至消灭这种问题。如果不想在猜猜猜上浪费时间折腾的话,还是要有一些证据,比如上面提到的AWR和ASH。 AHUA1001 2019-08-23 打赏举报 回复 这样的查询应该不会锁表,应该有其它的进程在操作。 CSDN Oracle 版精华帖荟萃 经过几年的发展和沉淀、CSDN 积累了很多好的帖子、现在整理一部分出来、让大家查阅时节省时间成本和高效学习 oracle锁表原因,解决方法 1、oracle数据库表在操作insert update 、delete 时忘记提交事务或者回滚,就会发生锁表 oracle 锁表是为什么,怎么解决 1、锁表发生在insert update 、delete 中
2、锁表的原理是 数据库使用独占式封锁机制,当执行上面的语句时,对表进行锁住,直到发生commite 或者 回滚 或者退出数据库用户
3、锁表的原因
第一、 A程序执行了对 tableA 的 insert ,并还未 commite时,B程序也对tableA 进行insert 则此时会发生资源正忙的异常 就是锁表
第二、锁表常发生于并发而不是并行(并行时,一个线程操作数据库时,另一个线程是不能操作数据库的,cpu 和i/o 分配 Oracle 锁表的原因,及解决方案 1. ORACLE中查看当前系统中锁表情况
select * from v$locked_object
可以通过查询
v$locked_object拿到sid和objectid,
然后用sid和v$session链表查询是哪里锁的表,
用v$session中的objectid字段和dba_objects的id字段关联,查询详细的锁表情况。
查询SQL如下:
select sess.si... Oracle 锁表解决方案 Oracle 解决锁表问题 查看锁表语句
Oracle 高级技术
3,494
社区成员
18,711
社区内容
发帖 与我相关 我的任务 Oracle 高级技术 Oracle 高级技术相关讨论专区 复制链接
扫一扫 分享 确定 社区描述 Oracle 高级技术相关讨论专区 社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告 试试用AI创作助手写篇文章吧
+ 用AI写文章