ORACLE 11G 查询DBA_SEGMENTS 慢的问题
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 慢的问题相关推荐
- oracle查询字体,客户端为Oracle 11g 查询中文字体 显示乱码
问题描述: 在WINDOWS SERVER 2012下面安装的Oracle,字符集为 SIMPLIFIED CHINESE_CHINA. ZHS16GBK, 用PL/SQL登陆数据库,发现中文变乱码. ...
- Oracle 11g dataguard三种模式以及实时查询(Real-time query)功能设置
之前我们讨论过<Linux Oracle 11g dataguard物理standby 配置过程>, 但是在实际过程中会遇到不同的问题,首先我们讨论下ORACLE DATAGUARD的三种 ...
- 体验一下Oracle 11g物理Active Data Guard实时查询(Real-time query)
以下为[高可用] 课后一则实验日志: --------------------------------------------------------------------------------- ...
- oracle查询100到200数据,100分数据库查询语句(ORACLE 11g)
100分求一个数据库查询语句(ORACLE 11g) 一张表tabl1 如下: epqname createtime e ...
- oracle查效能,【DataGuard】Oracle 11g物理Active Data Guard实时查询(Real-time query)特性...
在Oracle 11g以前版本中的的Data Guard物理备用数据库,可以以只读的方式打开数据库,但此时Media Recovery利用日志进行数据同步的过程就停止了,如果物理备用数据库处于恢复的过 ...
- 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 ...
- oracle查询挂起,表挂起更新查询Oracle 11g(Table hangs on Update query Oracle 11g)
表挂起更新查询Oracle 11g(Table hangs on Update query Oracle 11g) 我正在更新一个Oracle表字段,引用另一个具有类似Key字段的表,但在此特定表上, ...
- 关于oracle 11g自动分区+分区改名+定时任务综合使用实现自动分区后可以进行分区查询
一直想用oracle 11g 的interval分区(间断分区),这需要配合分区改名才能让我们可以使用分区查询,因为自动分区出来的分区名会是SYSPxxx这样.. 下面直接代码 drop tables ...
- oracle查询大小写敏感参数,【学习笔记】Oracle 11G密码大小写敏感的设置方法 sec_case_sensitive_logon参数...
天萃荷净 分享一篇Oracle数据库密码大小写敏感设置案例,从11.1开始密码大小写敏感了,同时可以设置sec_case_sensitive_logon参数可以忽略大小写敏感(USER$.SPARE4 ...
最新文章
- 诺奖10年,干细胞领域再突破!华大单细胞技术助力获得人类体外诱导全能干细胞...
- Vue 进入/离开动画
- mysql搭建主主_mysql主主配置
- JavaScript三种弹出框(alert,confirm和prompt)用法举例
- 教你分分钟使用Retrofit+Rxjava实现网络请求
- java锁的膨胀过程和优化
- java深入学习2多线程(面试必备)
- php获取当天 天气预报,PHP获取当天和72小时天气预报,并生成接口
- 支持的存储类型有_跟我一起看博途1200系统手册之数据类型的介绍
- 结果不对_男子去医院抽血体检,拿到化验单发现不对劲,医院:医生专业不精...
- matlab 2ask原理,基于Matlab对2ASK调制解调及其仿真设计
- “绿坝-花季护航”软件
- mysql数据库密码怎么修改_MySQL数据库密码如何修改?
- 540s inter 固件_Intel SSD Firmware Update Tool(英特尔ssd固件更新工具)下载 v2.1.6官方版...
- 武汉理工大学计算机学院宿舍,武汉理工大学专业所属校区及新生住宿分布情况(v2.0)...
- 前端页面嵌入word文档_word文档怎样加页面
- Strings Mix
- ballerina 学习 三十二 编写安全的程序
- SpringBoot整合JavaMail通过阿里云企业邮箱发送邮件
- 员工到管理者的四点转变|智测优测总结