小弟刚入门oralce,现在学习了下同义词,scott用户登陆,为表dept创建了一个公有同义次,语句如下:
create or replace public synonym dept_syno for scott.dept; 既然是public同义词,那其他用户也应该可以查询得到.但是发现用eric用户无法查询,执行:
select * from dept_syno时报没有此表 或者视图而sys用户却能够查询的到此同义词。请问大虾,这是怎么回事呢?

解决方案 »

  1.   

    先确认public synonym是否真的建立成功
    SELECT * FROM ALL_SYNONYMS WHERE SYNONYM_name=Upper('dept_syno');
      

  2.   

    除了同义词,eric用户还需有对scott用户下表的访问权限。scott用户下执行
    grant select on dept to eric;
      

  3.   

    2楼datafractal正解,但是我觉得既然是公有的,应该就不必在授权了,其他用户就可以看到,这里又要授权,呵呵,有点麻烦,oracle的安全机制作的太细了!