Oracle 单个表查询速度极慢处理过程

Oracle 单个表查询速度极慢处理过程
 
现象:        今天,接到开发人员报有一个表查询了半天也没出结果,表里大概有几十条数据
配置:        Oracle 10G RAC 、Aix Unix操作系统
处理过程:
我的第一反应数据库问题不大,因为只有这张表查询慢,而数据库里其它表数据的查询速度正常,但是按照流程还是先查看了alert日志,看了看临时表空间和系统表空间状况,结果两个节点都很正常没有问题;
然后我就怀疑可能是表锁的问题
select sid,seq#,event from v$session_wait
SID SEQ# EVENT
729 30819 cursor: pin S wait on X
730 55091 cursor: pin S wait on X
731 64627 cursor: pin S wait on X
733 13616 cursor: pin S wait on X
734 3754 cursor: pin S wait on X
735 49828 cursor: pin S wait on X
736 39022 cursor: pin S wait on X
737 44358 cursor: pin S wait on X
738 17548 cursor: pin S wait on X
739 54959 cursor: pin S wait on X
740 26186 cursor: pin S wait on X
741 4140 cursor: pin S wait on X
743 5668 cursor: pin S wait on X
747 54012 cursor: pin S wait on X
看到了很多 cursor: pin S wait on X 事件
 
然后根据这些SID找到SESSION
select * from v$session where sid in(
'908','923','949','984','1034','1012','1015',
'1049','969','936','950','902','954','905',
'924','929','1018','967','993','920','945','1048')
把这些session杀掉
alter system kill session '902,44335';
alter system kill session '905,45229';
alter system kill session '908,5869';
alter system kill session '920,17125';
alter system kill session '923,43172';
alter system kill session '924,614';
alter system kill session '929,669';
alter system kill session '936,1092';
alter system kill session '945,48687';
alter system kill session '949,61466';
alter system kill session '950,50965';
alter system kill session '954,24688';
alter system kill session '967,61065';
alter system kill session '969,63579';
alter system kill session '984,57651';
alter system kill session '993,65365';
alter system kill session '1012,47090';
alter system kill session '1015,59755';
alter system kill session '1018,52751';
alter system kill session '1034,36331';
alter system kill session '1048,13283';
alter system kill session '1049,58233';
但是结果并不理想,执行上面语句后去查询表依然还是长时间不能出来结果,
且在v$session里查这些session都标记为killed了,然后就想到了到操作系统
级别将这些session进程占用的资源彻底的给释放掉,如下
# kill -9 700924
# kill -9 835748
# kill -9 798908
# kill -9 696720
# kill -9 635236
# kill -9 872802
# kill -9 856554
# kill -9 679966
# kill -9 786648
# kill -9 676248
# kill -9 774198
# kill -9 782442
# kill -9 319908
# kill -9 778586
# kill -9 794812
# kill -9 331788
# kill -9 676090
# kill -9 123228
# kill -9 893198
# kill -9 585828
# kill -9 340378
# kill -9 565494
#
经kill -9 以后,再去查询表,结果很快就出来了
 
现已证实,是此表被锁住的原因,已经让开发去查表设计和使用问题了



转载地址:http://blog.itpub.net/16400082/viewspace-708841/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle数据库的全扫描查询速度突然变时,可能有多种原因导致。以下是一些可能的原因和解决方法: 1. 数据库统计信息过期:Oracle使用统计信息来优化查询计划。如果统计信息过期或不准确,可能会导致查询计划选择不合适的执路径,从而导致查询速度。可以通过收集统计信息来解决这个问题,可以使用DBMS_STATS包中的过程来收集统计信息。 2. 数据库块损坏:如果数据库中的某些数据块损坏,可能会导致全扫描查询。可以使用Oracle提供的工具如DBVERIFY来检查数据库块的完整性,并使用RMAN工具进修复。 3. 硬件问题:硬件故障或配置不当也可能导致全扫描查询。可以检查硬件设备的状态,例如磁盘、网络等,并确保其正常运。 4. 数据库参数设置不当:某些数据库参数的设置可能会影响全扫描查询的性能。例如,可以检查optimizer_mode参数的值是否正确,以及其他与查询优化相关的参数。 5. 数据库索引问题:如果数据库中存在适当的索引,全扫描查询通常会比较。可以检查上的索引是否存在问题,例如索引是否失效或过期,是否需要重新构建索引。 6. 数据库负载过高:如果数据库负载过高,可能会导致全扫描查询。可以通过监控数据库的性能指标,例如CPU利用率、内存利用率等,来确定是否存在负载过高的情况。 以上是一些可能导致Oracle扫描查询速度的原因和解决方法。具体的解决方法需要根据具体情况进分析和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值