Я делаю много такого рода работы и нахожу, что хороший инструмент для ведения журнала - это путь. Неизменно проблема будет в одном или нескольких операторах SQL DML, особенно в ОБНОВЛЕНИЯХ и УДАЛЕНИЯХ. Если вы создадите простую процедуру ведения журнала, которая записывает данные в таблицу (используя AUTONOMOUS_TRANSACTION) со столбцом метки времени, и оборачиваете вызовы вокруг всего SQL, вы очень быстро определите, куда уходит ваше время. Я разработал зрелый и сложный пакет специально для таких инструментов PL / SQL-кода и для мониторинга производственного кода в режиме реального времени. Обратитесь ко мне, если вам нужна копия.
К сожалению, большинство разработчиков, похоже, считают, что DBMS_OUTPUT решит проблему - может, но не очень эффективно ... или красиво.
Другие средства трассировки Oracle, безусловно, тоже помогают, но их немного сложнее использовать.
Наконец - используйте Диспетчер предприятия и проанализируйте моментальный снимок за определенный период времени. Посмотрите на 10 самых популярных SQL-запросов и, если хотите, используйте SQL-советник.
Надеюсь, это поможет ...