ORACLE 11G 查询DBA_SEGMENTS 慢的问题

在ORACLE 11G环境中,一个简单的查询DBA_SEGMENTS表的操作变得极其缓慢,经过排查,发现并非由于数据库负载或统计信息过期引起。问题在于存在表的DML操作导致的锁,影响了DBA_SEGMENTS查询。通过分析锁的来源,发现是由于大量数据变动引发的事务冲突。解决方法包括更新统计信息、检查并处理锁问题。定期维护统计信息和及时解决锁问题对于大数据量数据库的性能至关重要。
摘要由CSDN通过智能技术生成

ORACLE 11G 查询DBA_SEGMENTS表慢的问题

由于公司需要每天巡检数据库,定时跑巡检脚本,之前没有问题,今天发现一个很简单的查询语句居然跑的10个小时还没有出结果:
select sum(bytes)/1024/1024/1024 "SIZE G " from dba_segments;
系统是linux 6.9 11.2.0.4.0 rac 80T的数据量 之前基本上半个小时出结果,这次时间不对。开始怀疑是月底应用跑批,查看数据库的负载也不大,系统的负载也正常,想是不是统计信息该更新了,我来这个公司刚一个月,不知道之前是什么时候更新的,写了个定时任务,删除之前的统计信息,重新分析:
EXEC DBMS_STATS.GATHER_DICTIONARY_STATS:收集
EXEC DBMS_STATS.DELETE_DICTIONARY_STATS:删除
第二天再次跑,问题依旧,开始怀疑是不是有锁表?查看锁确实存在:enq:tx - contention 查询dba_segments 有锁的原因,
是因为一张表发生大量的数据变动,为了防止数据不一致,ba_segments 会从undo 获取数据,这样造成锁,而undo 因为该表的dml 没有提交,所以导致查询也被锁住了。开始通过下面的语句分析具体是哪个锁了:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值