Aha! That would also add to the work the delete does! There's a good chance this is why your statement takes so long.
In the ideal world you'd move its contents into the delete procedure and remove the trigger. This isn't always possible though.
Instead of a FOR EACH ROW trigger, can you make a compound trigger that:
- Collects the necessary information in the FOR ROW procedure
- Does the work in the FOR STATEMENT part?
See an example at https://oracle-base.com/articles/11g/trigger-enhancements-11gr1#compound_triggers