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 没有提交,所以导致查询也被锁住了。开始通过下面的语句分析具体是哪个锁了:

SELECT LPAD(' ',5*(LEVEL-1))||S."USERNAME" , LPAD(' ',5*(LEVEL-1))||S."INST_ID"||','||S."SID" , S."SERIAL#" , S."SQL_ID", S."ROW_WAIT_OBJ#", S."WAIT_CLASS", S."EVENT", S."P1", S."P2", S."P3", S."SECONDS_IN_WAIT", s."BLOCKING_INSTANCE"||','||s."BLOCKING_SESSION" FROM GV$SESSION S WHERE S."BLOCKING_SESSION" IS NOT NULL OR (S."INST_ID"||','||S."SID") IN(SELECT DISTINCT BLOCKING_INSTANCE||','||BLOCKING_SESSION FROM GV$SESSION) START WITH (s."BLOCKING_INSTANCE"||','||s."BLOCKING_SESSION") = ',' CONNECT BY PRIOR (S."INST_ID"||','||S."SID") = (s."BLOCKING_INSTANCE"||','||s."BLOCKING_SESSION");

把大致的锁的语句发给应用方协助处理,应用方很容易的查出确实有锁并处理了,最后我的查询语句基本上10秒内就能输出结果。
总结:
1 数据量比较大的库要定期重新分析统计信息
2 注意锁,业务不正常肯定也会影响到系统表的性能

ORACLE 11G 查询DBA_SEGMENTS 慢的问题相关推荐

  1. oracle查询字体,客户端为Oracle 11g 查询中文字体 显示乱码

    问题描述: 在WINDOWS SERVER 2012下面安装的Oracle,字符集为 SIMPLIFIED CHINESE_CHINA. ZHS16GBK, 用PL/SQL登陆数据库,发现中文变乱码. ...

  2. Oracle 11g dataguard三种模式以及实时查询(Real-time query)功能设置

    之前我们讨论过<Linux Oracle 11g dataguard物理standby 配置过程>, 但是在实际过程中会遇到不同的问题,首先我们讨论下ORACLE DATAGUARD的三种 ...

  3. 体验一下Oracle 11g物理Active Data Guard实时查询(Real-time query)

    以下为[高可用] 课后一则实验日志: --------------------------------------------------------------------------------- ...

  4. oracle查询100到200数据,100分数据库查询语句(ORACLE 11g)

    100分求一个数据库查询语句(ORACLE 11g) 一张表tabl1 如下: epqname             createtime                             e ...

  5. oracle查效能,【DataGuard】Oracle 11g物理Active Data Guard实时查询(Real-time query)特性...

    在Oracle 11g以前版本中的的Data Guard物理备用数据库,可以以只读的方式打开数据库,但此时Media Recovery利用日志进行数据同步的过程就停止了,如果物理备用数据库处于恢复的过 ...

  6. oracle查效能,Oracle 11g物理Active Data Guard实时查询(Real-time query)特性

    table t (x varchar2(8)); Table created. secooler@ora11g> insert into t values ('Secooler'); 1 row ...

  7. oracle查询挂起,表挂起更新查询Oracle 11g(Table hangs on Update query Oracle 11g)

    表挂起更新查询Oracle 11g(Table hangs on Update query Oracle 11g) 我正在更新一个Oracle表字段,引用另一个具有类似Key字段的表,但在此特定表上, ...

  8. 关于oracle 11g自动分区+分区改名+定时任务综合使用实现自动分区后可以进行分区查询

    一直想用oracle 11g 的interval分区(间断分区),这需要配合分区改名才能让我们可以使用分区查询,因为自动分区出来的分区名会是SYSPxxx这样.. 下面直接代码 drop tables ...

  9. oracle查询大小写敏感参数,【学习笔记】Oracle 11G密码大小写敏感的设置方法 sec_case_sensitive_logon参数...

    天萃荷净 分享一篇Oracle数据库密码大小写敏感设置案例,从11.1开始密码大小写敏感了,同时可以设置sec_case_sensitive_logon参数可以忽略大小写敏感(USER$.SPARE4 ...

最新文章

  1. 诺奖10年,干细胞领域再突破!华大单细胞技术助力获得人类体外诱导全能干细胞...
  2. Vue 进入/离开动画
  3. mysql搭建主主_mysql主主配置
  4. JavaScript三种弹出框(alert,confirm和prompt)用法举例
  5. 教你分分钟使用Retrofit+Rxjava实现网络请求
  6. java锁的膨胀过程和优化
  7. java深入学习2多线程(面试必备)
  8. php获取当天 天气预报,PHP获取当天和72小时天气预报,并生成接口
  9. 支持的存储类型有_跟我一起看博途1200系统手册之数据类型的介绍
  10. 结果不对_男子去医院抽血体检,拿到化验单发现不对劲,医院:医生专业不精...
  11. matlab 2ask原理,基于Matlab对2ASK调制解调及其仿真设计
  12. “绿坝-花季护航”软件
  13. mysql数据库密码怎么修改_MySQL数据库密码如何修改?
  14. 540s inter 固件_Intel SSD Firmware Update Tool(英特尔ssd固件更新工具)下载 v2.1.6官方版...
  15. 武汉理工大学计算机学院宿舍,武汉理工大学专业所属校区及新生住宿分布情况(v2.0)...
  16. 前端页面嵌入word文档_word文档怎样加页面
  17. Strings Mix
  18. ballerina 学习 三十二 编写安全的程序
  19. SpringBoot整合JavaMail通过阿里云企业邮箱发送邮件
  20. 员工到管理者的四点转变|智测优测总结

热门文章

  1. linux 下sh命令:command not found
  2. java 用split分割小数点
  3. 教你用Python画一颗圣诞树给你自己的男/女朋友
  4. php工作审批流程,审核流程_POSCMS_PHP开源_迅睿CMS系统
  5. 3D-03-牧师与魔鬼
  6. python井字游戏
  7. C语言str系列库函数
  8. 对于html的初步认识
  9. 11.python循环语句
  10. 微积分与最优化:最终解决方案的落地手段