oracle同义词
同义词
作用
同义词: 用同义词代替用户名.表名,代码里可以不再出现用户名,提高编码效率
分类
-
私有同义词只被创建它的用户所拥有,只能由该用户以及被授权的其他用户使用。这个同义词的创建者,可以通过授权控制其他用户是否有权使用属于自己的私有同义词。
-
公有同义词由public用户组拥有,数据库中的所有用户都可以使用公有同义词。公用同义词往往用来标示一些比较普通的数据库对象,这些对象往往大家都需要引用。
私有同义词
创建scott1用户
SQL> create user scott1 identified by scott1;
User created
给scott1用户授权
SQL> grant connect, resource to scott1;
Grant succeeded
登录到scott1用户
SQL> conn scott1/scott1;
创建表
SQL> create table sysno_test(
2 id number(9));
创建私有同义词失败
SQL> create synonym sysno_test_syn for scott1.sysno_test;
create synonym sysno_test_syn for scott1.sysno_test
ORA-01031: 权限不足
切换到sys用户,赋予scott用户创建私有同义词的权限
SQL> conn system/sys
SQL> grant create synonym to scott1;
Grant succeeded
切换到scott1,创建同义词成功
SQL> create synonym sysno_test_syn for scott1.sysno_test;
Synonym created
scott1用户尝试访问成功
SQL> select * from sysno_test_syn;
ID
----------
如果scott用户想要访问该同义词,需要将查询权限赋予该用户
SQL> grant select on scott1.sysno_test to scott;
Grant succeeded
scott用户必须加表名访问成功
SQL> conn scott/scott;
SQL> select * from scott1.sysno_test_syn;
ID
----------
公有同义词
sys赋予scott1用户权限
SQL> conn system/sys;
SQL> grant create public synonym to scott1;
Grant succeeded
使用scott用户 创建公有同义词
SQL> conn scott1/scott1;
SQL> create table sysno_test2(
2 id number(9));
Table created
SQL> create public synonym sy_te2_pub for scott1.sysno_test2;
Synonym created
授权该同义词可被查看
SQL> grant select on scott1.sysno_test2 to public;
Grant succeeded
scott用户查询公有词
SQL> conn scott/scott;
SQL> select * from sy_te2_pub;
ID
----------
新创建也可以访问
SQL> conn system/sys;
SQL> create user scott2 identified by scott2;
User created
SQL> grant connect, resource to scott2;
Grant succeeded
SQL> conn scott2/scott2;
SQL> select * from sy_te2_pub;
ID
----------

浙公网安备 33010602011771号