我正在尝试授予从schema1到schema2 (oracle10g)对表的访问权限。
我在schema2上创建了一个同义词:
CREATE SYNONYM schema2.table FOR schema1.table;同义词是成功创建的。
然后,我尝试在同一个表上授予select:
grant select on schema1.table to schema2;我得到了:
ORA-00942: table or view does not exist 这对我来说毫无意义。我能够创建同义词,但不能创建授予。我做错什么了?
我无法从schema2获得这张桌子:
select * from table;
ORA-00942: table or view does not exist发布于 2016-09-13 14:02:46
如果我有“创建任何同义词权限”,我可以为模式2中的模式1中的表创建同义词,而不需要对底层对象授予权限。如果我没有对schema1表(授予格兰特选项)的权限将它重新授予给另一个用户,那么我也不能从这个用户进行授权。
解决方案,以schema1身份登录并在那里执行授予,然后同义词将在schema2下工作,或确保我登录的用户有权将授权授予schema1对象。
根据你的评论:
以schema1身份登录,并授予您希望schema2在表中包含的任何操作。
(例如)
SQL>将表上的选择、插入、更新、删除授予SCHEMA2;
然后,SCHEMA2将能够通过其同义词查看表,并允许对其进行这些操作。
如果SCHEMA2打算在视图中使用此表,然后它将授予对其他模式的select访问权以供使用,那么您需要将"WITH GRANT选项“添加到来自schema1或schema2的初始授权中,否则将无法向其他用户重新授予权限。
发布于 2016-09-13 14:02:54
您可以为实际上不存在的对象创建同义词。
create synonym flub for blib;
...so能够创建同义词这一事实并不意味着存在对象。
https://stackoverflow.com/questions/39471855
复制相似问题