1 2 3 4

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

----------
posted @ 2019-12-06 13:59  多走多看  阅读(293)  评论(0)    收藏  举报