Giving a use the SELECT
privilege (or any other privilege for that matter) does not create a synonym. As user1
, who is not the table's owner, you should still reference the table by its fully qualified name, with the owner.
Assuming the owner is called owner1
, user1
's query should be:
SELECT * FROM owner1.emp
As for the data dictionary query, this is also to be expected. These privileges are recorded in the [DBA|ALL|USER]_TAB_PRIVS
views:
SELECT * FROM all_tab_privs WHERE grantee = 'USER1'