同义词上的“表或视图不存在”

inf*_*ous 4 oracle errors

我有一个数据库和一个管理它的用户。然后我有一个额外的 USER_APP,我向它授予了对我的 oracle 数据建模器中所有表的 CRUD 访问权限(然后通过生成的脚本应用这些)

我为来自 USER_APP 帐户的每个表创建了一个同义词,语法如下:

create synonym USER_APP.CLIENTS for USER.CLIENTS;
Run Code Online (Sandbox Code Playgroud)

并且对于每个表生成成功并提交。但是当我尝试在该帐户上以任何方式使用它时,例如:

select * from CLIENTS;
Run Code Online (Sandbox Code Playgroud)

我收到 CLIENTS 不存在的错误,即

ORA-00942 : table or view does not exist.
Run Code Online (Sandbox Code Playgroud)

我能做些什么来解决这个问题,或者我应该在哪里寻找原因/解决方案?

Jus*_*ave 6

同义词与特权无关。它们只是简化命名的一种方式。

您收到的错误似乎表明user_appuser.clients表没有权限。你需要授予那个

GRANT SELECT, INSERT, UPDATE, DELETE
   ON user.clients
   TO user_app;
Run Code Online (Sandbox Code Playgroud)

当然,在您的实际系统中,我猜您会向某个角色授予特权,并且该角色将被授予user_app.