oracle赋予表查询权限后,查询却显示表或视图不存在

oracle赋予表查询权限后,查询却显示表或视图不存在,第1张

需求如下:创建一个新用户abc,给一张表TT1的访问权限给他。只给这一张表,并且是查询权限,不能再有其他权限。

首先创新新用户abc,然后再给予表TT1的查询权限。

使用grant select on tt1 to abc,执行成功后发现。

登陆新用户abc,提示错误ora-00942: 表或视图不存在

查看后发现执行查询的格式不正确。

select * from tt1正确的格式应该是使用建表用户名.表名来查询。如下:

select * from scott.tt1

如果要不带建表用户名,需要先建同义词。

create public synonym tt1 for scott.tt1执行成功后,再到abc用户里执行select * from tt1就可以了

问题完美解决。

________________END______________

就是说 你 *** 作的那个表或试图 没有在你 *** 作的那个数据库下

例如 你在master数据下 创建了 一张表

而你 *** 作的时候是在 另一个数据库下 *** 作的 切 没有明确的加上 某个数据库下的某张表 就会提示这样的提示

[ZK_PaymentDB].[dbo].[P_AreaSite]---》

ZK_PaymentDB 表示数据库

dbo 是表示一个用户 拥有系统管理员权限

P_AreaSite 就是要 *** 作的表了

首先确保那些报表或视图不存在的表or视图究竟存不存在,如果不存在,那就是导的有问题了,重新导入即可。

如果确实有表,那就先试一下在PLSQL中重新编译一下存储过程,看下可不可以?

一般来说,如果是表和存储过程是属于一个USER的话,这样就可以解决了,

先试下吧,如果不行的话,那就有可能是分别属于不同的用户了

你可以查一下SELECT * FROM DBA_ORJECTS where object_name = '表名或存储过程名' 来查询一下,是否属于同一个USER,希望能对你有所帮助 。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/6829252.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-28
下一篇2023-03-28

发表评论

登录后才能评论

评论列表(0条)

    保存