I was reading this article:
Managing Oracle Synonyms
Regarding the order of preference, when it come to resolving an object name to the actual object, it says:
-
Local objects will always be accessed first.
-
If a local object does not exist, the object with a private synonym will be accessed.
-
If a private synonym does not exist or the object does not exist, then the public synonym will be used.
I was wondering if the public objects are missing in this order somehow?
E.g. if user BOB queries
select * from FOOBAR
and there is no BOB.FOOBAR in dba_tables/views but PUBLIC.FOOBAR.
Does Oracle resolve it to PUBLIC.FOOBAR or will it check for synonyms first?
Thank you.
At least up to 10g, PUBLIC is not a real user. You cannot create objects in the “Public schema”:
If you run this query:
You can answer the question about pre-defined tables/views in the PUBLIC “schema”.