ORACLE-synonym用法场景

遇到眼前事、不会就百度

img

要求如下:对接的部门需要用我们的数据做查询,原本说好的接口,当我把接口查询做出来后,文档也写完了之后,发给对接部门之后,屁事就来了,又要求分页、有巴拉巴拉,我可QNMDB。本来对该部门对接就不想弄、原因是之前对接几张表数据、给我发了400多页的数据字典word文档,关键是文档还一点都不清晰。所以导致我一点想给他们弄的心思都没有。

吐槽归吐槽、思量下来,给他们建立一个数据库用户,只给他们查询权限,且用户下面不建立表了,直接将他们所需要的表分享到该用户下,不需要添加用户名就可以直接访问,于是百度了下,oracle里面也有个叫同义词/synonyms,网上给的理解是:进行大型系统开发时,往往会涉及到多个子系统的开发。为了方便开发一般数据库都会存在同一个数据库实例中,方便数据共享。这种数据共享的方式在Oracle中叫"同义词/synonyms"。

😋 这就很赞了:

有两种方式创建:

第一种:直接新建

1.PL/SQL中的synonyms中右键新建

img

2.在弹出synonyms窗口中填写相关信息

为了别(害)出(人)心(害)裁(己)同义词可以取别的不相干的字符

img

3.创建成功,可以在本用户下直接查询其他用户表

img select * from “同义词表名”

第二种:语句执行

用户我是新建的:

  1. 所以 先登录sys或者拥有dba权限用户,创建用户B(用户名)

create user B identified by BB(密码自行修改);

grant connect to B;

  1. 对用户B要使用的A表进行授权,使得登录B用户可以访问A的表

​ 所有权限赋予:

    grant all on A.TABLE to B;(此时登录B用户,可以使用A用户的MMC表)。

  单独权限赋予:

    grant select on A.TABLE TO B; (赋予查询权限)

我这边操作的时候只赋予了查询的权限

  1. 这时候创建同义词

create synonym B.TABLE for A.TABLE ;

举个例子:我这边想把用户A的XZCF表分享给用户B。

create synonym B.xz for A.xzxk;

我如果这么执行的话,那我在用户B下面查询的表的时候,只能执行

select * from xz 才可以查询的到xzxk表

  1. 删除同义词

drop synonym B.TABLE;

  1. 查看所有同义词

select * from dba_synonyms

posted @ 2021-01-22 16:01  迷途的小码农  阅读(725)  评论(0编辑  收藏  举报