oracle中访问别的用户下面的表时,首先需要别的用户的授权,这样便可以通过user.table 的方式进行访问,如果别的用户再在授权的基础上创建同义词,那么便可以通过同义词名称直接访问了。下面以oracle 中scott用户下的emp表为示例,简述下同义词访问和授权访问的操作。
-- 登录 system/manager as sysdba 用户
-- 创建用户
create user zhangqi identified by zhangqi947;
-- 赋权
grant resource, connect to zhangqi;
-- 登录scott用户
-- 将emp表的select、insert、update和delete权限授权给用户zhangqi
grant select,insert,update,delete on emp to zhangqi;
-- 用zhangqi用户登录,可以通过下面方式访问emp表
select * from scott.emp;
-- 登录scott表
create public synonym emp for scott.emp;
-- ORA-01031权限不足
-- 切换system
grant create any synonym to zhangqi;
-- 切换zhangqi
create synonym emp for scott.emp;
-- 通过同义词访问
select * from emp;
-- 通过授权直接访问
select * from scott.emp;
以上操作亲试可用,对同义词理解尚浅,如果描述有误,请批评斧正。谢谢。