Мой сеанс зависает, когда я выполняю этот запрос в Oracle 11g SQL * Plus:
SQL> declare maxid number; begin delete from measure_details where id in (select id from general_measures where code in ('12345','12346')); delete from general_measures where code in (select code from general_measures where code in ('12345','12346')); end; /
Если он "зависает", то это, вероятно, означает, что одна или несколько строк, которые вы пытаетесь удалить, заблокированы незафиксированной транзакцией в другом сеансе - возможно, даже другом вашем собственном?
Если вы сталкиваетесь с тупиками в такого рода DML, моим первым подозрением будут неиндексированные внешние ключи.Взгляните на эту статью от Ask Tom.Если это так.Все, что вам нужно сделать, это создать соответствующие индексы.Но опять же, может быть, ваши столы просто огромные, и для их завершения требуется время.