学习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')
QubaQ mXm0 and id not in (select max(ID) idITPUB个人空间 cdo+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个人空间6XSk6B2KI
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:}
where38= file_idand502423betweenblock_idandblock_id+blocks -1;
查出来是
这个表的索引有损坏,
然后删除重建,再执行那delete sql 正常
该表索引损坏导致delete不正常
导入论坛
引用链接
收藏
分享给好友
推荐到圈子
管理
举报
TAG: