Excluir instrução foi muito lenta no Oracle
Eu tenho uma tabela com cerca de 100k registros e eu quero excluir algumas linhas, o problema é que oDELETE
A declaração está a correr muito devagar - não terminou em 30 minutos. Mas oselect
declaração foi retornar em 1 segundo.
oSELECT
declaração é a seguinte:
<code>select * from daily_au_by_service_summary where summary_ts >= to_date('09-04-2012','dd-mm-yyyy') order by summary_ts desc; </code>
eDELETE
declaração é a seguinte:
<code>delete from daily_au_by_service_summary where summary_ts > to_date('09-04-2012','dd-mm-yyyy'); </code>
Esta tabela tem o único índice emsummary_ts
.
Qual seria a razão?
EDIT: a tabela foi bloqueada por muitas sessões:
<code>SESSION_ID ORACLE_USERNAME OS_USER_NAME OBJECT OWNER OBJECT_NAME OBJECT_TYPE LOCKED_MODE ---------- ------------------------------ ------------------------------ ------------------------------ -------------------------------------------------------------------------------------------------------------------------------- ------------------- ----------- 213 T03RPT elou T03RPT DAILY_AU_BY_SERVICE_SUMMARY TABLE 3 203 T03RPT elou T03RPT DAILY_AU_BY_SERVICE_SUMMARY TABLE 3 202 T03RPT elou T03RPT DAILY_AU_BY_SERVICE_SUMMARY TABLE 3 190 T03RPT elou T03RPT DAILY_AU_BY_SERVICE_SUMMARY TABLE 3 189 T03RPT elou T03RPT DAILY_AU_BY_SERVICE_SUMMARY TABLE 3 188 T03RPT elou T03RPT DAILY_AU_BY_SERVICE_SUMMARY TABLE 3 187 T03RPT elou T03RPT DAILY_AU_BY_SERVICE_SUMMARY </code>
Como matar essas sessões?
O problema foi resolvido depois que eu matei as sessões que bloqueiam a mesa, obrigado pela ajuda. -