同义词是数据库模式对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。在使用同义词时,Oracle数据库将它翻译成对应模式对象的名字。与视图类似,同义词并不占用实际存储空间,只有在数据字典中保存了同义词的定义。在Oracle数据库中的大部分数据库对象,如表、视图、同义词、序列、存储过程等,数据库管理员都可以根据实际情况为他们定义同义词。隐藏对象名称和所有者。
私有同义词
私有Oracle同义词由创建它的用户所有;创建的用户需要具有CREATE SYNONYM权限。
【语法】 CREATE SYNONYM <synonym_name> for <tablename/viewname...>
【示例】 --管理员 授权用户zx创建同义词的权限 grant create synonym to zx;
--创建私有同义词 create synonym syn_emp for emp; create synonym syn_v_emp for v_emp;--为视图v_emp创建私有同义词(别名)
--使用私有同义词 select empno,ename from syn_emp; update syn_emp set ename='zx5' where empno='1234';
--删除同义词 drop synonym syn_emp;
|
公有同义词
公有Oracle同义词由一个特殊的用户组Public所拥有。顾名思义,数据库中所有的用户都可以使用公有同义词。公有同义词往往用来标示一些比较普通的数据库对象,这些对象常需要引用。公有同义词一般由管理员用户创建及删除,普通用户需要创建及删除需要create public synonym和drop public synonym权限。
【语法】 CREATE PUBLIC SYNONYM <synonym_name> for <tablename/viewname...>
--登陆sys管理员用户,授权用户zx创建、删除(公有的删除权限需要特别给定)公有同义词权限 grant create public synonym,drop public synonym to zx; --revoke create public synonym,drop public synonym from zx;
--登陆zx用户创建公有同义词 conn zx/zx; create public synonym syn_public_emp for emp;
--使用公有同义词 select * from syn_public_emp;
-- 登录system管理员 conn system/orcl; 创建zx2并授权 --create user zx2 identified by zx2 default tablespace zx_ts; --grant connect,resource to zx2;
--为其它用户zx2授权使用公有同义词(需要给予使用表的权限) grant select,update on zx.emp to zx2; --revoke select,update on zx.emp from zx2;
--登陆zx2用户下使用公有同义词syn_public_emp select * from syn_public_emp; update syn_public_emp set ename='it5' where empno=5555;
--删除同义词 --登陆zx,删除公有同义词 drop public synonym syn_public_emp;
|