Recently I faced one of familiar Oracle error ORA -00942 : table or view does not exist I got it in while compiling procedure, because eventually I found it became invalid state. I tried to create new directory and give read/write permission on it and change inside procedure, but it still was INVALID. But instead inside procedure I put hard code path of that directory it was success. Like: create or replace procedure `procedure_name` ( `variable` IN varchar2 ) AS `variable` varchar2(2000) := '/../../dir'; begin select ... into `variable` from dba_directories whhere directnory_name = '...'; .... .... end; / But it is not make sense. Then after google I found to overcome that issue, all I need to grant ALL on dba_directories to user not only READ, WRITE. As SYS grant all on dba_diretories to `user`' then I was able to compile successfully original procedure, no longer need to manipulate procedure. SQL> set linesize ...