同义词是现有对象的一个别名,分为私有同义词和公用同义词,如一个表的表名过长或访问其他用户的表需要加上用户名作为前缀,可以用别名来解决。
part_1:查看scott用户是否具有创建同义词的权限
--scott用户输入如下语句,查询自己的权限
select * from session_privs where privilege like '%SYNONYM%';
part_2:通过sys用户,为scott授予创建同义词的权限:
--sys用户输入授权指令
grant create any synonym to scott;
part_3:查看授权是否成功:
--scott用户输入如下语句,查询自己的权限
select * from session_privs where privilege like '%SYNONYM%';
part_4:现在scott用户可以为salgrade表创建一个别名:sg
create synonym sg for salgrade;
part_5:测试别名创建是否生效;
select * from sg;
part_6:通过sys,创建一个新的用户mike并为其赋予连接和查询scott.emp表的权限
--sys用户下依次输入下列指令
create user mike identified by 3713;--创建用户mike
grant connect to mike;--授权连接
grant select on scott.emp to mike;--授权查表
part_7:登录mike用户,并输入查表指令测试是否授权成功
select * from scott.emp;
part_8:由于mike要写scott.emp表名,这样就比较冗长,所以下面通过scott用户创建公共同义词emp,这样mike就可以直接输入emp而不用带上scott.前缀了;
--step_1
--sys用户下输入下面指令,为scott授权创建公共同义词
grant create public synonym to scott;
--step_2:scott查询是否授权成功
select * from session_privs where privilege like '%SYNONYM%';
--step_3:
--scott登录的情况下输入创建公共同义词语句
create public synonym emp for scott.emp;
part_9:现在mike就可以直接查询同义词emp而不用再写scott.emp了
--切换到mike用户,输入查询指令
select * from emp;
20170111-10:10