[同义词]-oracle-BUG记录

问题描述

   错误描述:”当前用户没有权限访问XX表“,在使用该表的时候,系统返回错误[“未发现表或视图”],当看到这个问题的第一反映,肯定是用户授权,将XX表授权给当前用户,理论上就可以在B用户中访问XX表,但实际上将A.XX表的权限授权给B用户之后,B用户访问XX表的时候,是需要携带表所属的,我授权不仅仅只是通过A.XX表这样方式查询而是想通过不指定表所属的情况下进行访问,很显然这是不可以的,因为B用户中不存在XX表,而A用户只是将XX表授权(查询或删除或增加权限)给B用户但并不代表XX表真实存在于B用户下的库结构中。
在这里插入图片描述

问题解决

   这时候想到数据库的同义词,语法如下:
   注意: 将A用户的表、序列、函数、存储引擎等创建到B用户同义词下的前提下是需要A用户将表、序列、函数、存储引擎等授权给B用户才可以进行创建同义词。

--授权语句序列
grant select on 当前用户下或指定用户下的表或序列或存储引擎等 to 用户;
--同义词创建
create synonym 当前用户的同义词名称 for 指定用户或当前用户的表名称或序列名称或存储引擎等;
--删除同义词
drop synonym 同义词名称;

   创建个相同名称的同义词,这样的话在B用户中调用XX表就间接性调用了A用户下的XX表。

建议

   虽然同义词比较简单省事,但是短期内(例如下个版本发版之前)使用是没有问题,我觉得它更像是短期防止因表视图不存在所出现的系列问题,建议下个版本将该问题修复(或是指定表所属、或是指定拥有者owner)。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值