У Оракла есть пути стабилизации планов. Если ты точно знаешь что текущий план подходит то его можно
зафиксировать для данного SQL_ID. Последний раз я этим занимался в Oracle 11g и как сейчас - не знаю
но наверное этот API сохранился.
Во первых хочу заметить что отладка и оптимизация это разные вещи. Отладка - debugging это когда мы step-by-step исполняем императивный код и наблюдаем состояние переменных. Режим отлалки был в PL/SQL но им пользоваться было настолько неудобно что никто из моих коллег никогда его не включал.
Оптимизация производительности - это целая сложная тема. По ней написаны толстые книги. Для каждой БД своя. И вобщем Дмитрий верно сказал. Команда explain - это просто первый шаг к оптимизации. И дальше 100 дорог в 100 направлений. Сис-парамтеры. Индексы. Партишенинг. Хинты. И много много прочего.