学习oracle技术,每天学一点,每天进步一点

delete 数据很慢调优解决

上一篇 / 下一篇  2007-12-29 17:15:27 / 个人分类:pl/sql

delete  from tb_test partition (TB_test_P200711)
r9Av6nv,Q^0 where id<=15744829 and id>=14471371
Vd'f.~yE0 and  created_date between  to_date('2007-11-07 00:00:00','yyyy-mm-dd hh24:mi:ss')ITPUB个人空间&a*bo:FCC
 and to_date('2007-11-07 05:59:59','yyyy-mm-dd hh24:mi:ss')
Quba QmXm0 and id not in (select max(ID) idITPUB个人空间c do+ad6f
                    from tb_test partition (TB_test_P200711)
#rEo}/S ]8P Znc1H0                    where created_date between  to_date('2007-11-07 00:00:00','yyyy-mm-dd hh24:mi:ss')ITPUB个人空间k`e)X2`mUMCq
                     and to_date('2007-11-07 05:59:59','yyyy-mm-dd hh24:mi:ss')
!`%?u8l)v6Z wm0                   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:ITPUB个人空间6XSk6B2K I
ORA-01578: ORACLE data block corrupted (file # 38, block # 502423)
I-bV`5L,|0ORA-01110: data file 38: '/oradata/ora9i/game_lagindex08.dbf'

 

用以下语句查出看是什么对象类型:

 selectsegment_type,owner||'.'||segment_nameITPUB个人空间"SSeiW0t$p u,[
fromdba_extentsITPUB个人空间4H1z!~*C#@ H8JE!v:}
where
38= file_idand502423betweenblock_idandblock_id+blocks -1;

 

查出来是

这个表的索引有损坏,

然后删除重建,再执行那delete sql 正常

 

该表索引损坏导致delete不正常

 

 


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-10-07  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 19539
  • 日志数: 291
  • 图片数: 2
  • 建立时间: 2007-12-11
  • 更新时间: 2008-10-04

RSS订阅

Open Toolbar