Сотня-другая миллионов строк — для Oracle очень скромная БД. Никакого деградирования производительности на длительных операциях, даже очень сложных, я не замечал.
В любом случае нужно стараться по возможности упаковать всё в стандартные операторы DML с джойнами, без дополнительного кода, курсорных циклов и т.п. При очень больших объёмах изменений необходимо разбивать транзакцию на несколько, чтобы ограничить использование undo tablespace. Разумееется, включить параллелизм и тщательно рассмотреть план выполнения запроса.