oracle delete删除数据很慢的解决

教程发布:风哥 教程分类:ITPUX技术网 更新日期:2022-02-12 浏览学习:641

oracle delete删除数据很慢的解决
下面操作delete删除数据:
delete from tb_test partition (TB_test_P200711)
where id<=15744829 and id>=14471371
and created_date between to_date('2007-11-07 00:00:00','yyyy-mm-dd hh24:mi:ss')
and to_date('2007-11-07 05:59:59','yyyy-mm-dd hh24:mi:ss')
and id not in (select max(ID) id
from tb_test partition (TB_test_P200711)
where created_date between to_date('2007-11-07 00:00:00','yyyy-mm-dd hh24:mi:ss')
and to_date('2007-11-07 05:59:59','yyyy-mm-dd hh24:mi:ss')
group by client_id, game_code_id, event_date);
commit;

以上sql需要删除60多万条数据,加上分区和时间条件后,速度还可以介绍,只要4-5分钟
但在另外一台机器测试时,很慢,而且结果都出不来,一直运行
通过和正常机器对比, 执行计划都一样 ,表结构和索引,数据都已分析
最后只能能数据库层看了,看下alert_ora9i.log 日志文件
日志报有坏快
Errors in file /orasys/oracle/admin/ora9i/bdump/ora9i_smon_3928.trc:
ORA-01578: ORACLE data block corrupted (file # 38, block # 502423)
ORA-01110: data file 38: '/oradata/ora9i/game_lagindex08.dbf'

用以下语句查出看是什么对象类型:
select segment_type,owner||'.'||segment_name
from dba_extents
where 38= file_id and 502423 between block_id and block_id+blocks -1;查出来是这个表的索引有损坏,然后删除重建,再执行那delete sql 正常该表索引损坏导致delete不正常

本文标签:
网站声明:本文由风哥整理发布,转载请保留此段声明,本站所有内容将不对其使用后果做任何承诺,请读者谨慎使用!
【上一篇】
【下一篇】