Se você substituir essas chamadas para dbms_utility.get_time por mensagens como:
dbms_output.put_line ('start procedure: ' || to_char(sysdate, HH24:MI:SS'));
e então chame o procedimento assim:
dbms_output.put_line ('before procedure: ' || to_char(sysdate, HH24:MI:SS'));
exec my_procedure;
dbms_output.put_line ('after procedure: ' || to_char(sysdate, HH24:MI:SS'));
então o local onde ocorre o tempo perdido aparecerá.