You have some exception handler there? I think error number indicates that.
What is real error database gives?
This is the "when" clause in the exception handler of the proc:
(-20054, 'Invalid Operation');
Sorry, but I am not sure what you mean by "real error database gives"
I assume oracle OS user do not have privilege read/write to directory.