web-dev-qa-db-ja.com

同義語の「テーブルまたはビューが存在しません」

データベースとそれを管理しているユーザーがいます。次に、追加のUSER_APPに、OracleデータモデラーのすべてのテーブルへのCRUDアクセスを許可しました(そして、生成されたスクリプトを使用してこれらを適用しました)。

次の構文で、USER_APPアカウントからすべてのテーブルのシノニムを作成しました。

create synonym USER_APP.CLIENTS for USER.CLIENTS;

そして、すべてのテーブルの生成が成功し、コミットが行われます。しかし、私がそのアカウントでとにかくそれを使用しようとすると、たとえば:

select * from CLIENTS;

クライアントが存在しない、つまりエラーが発生する

ORA-00942 : table or view does not exist.

それを修正するために私は何ができますか、または原因/解決策を決定するためにどこを探すべきですか?

4

シノニムは特権とは何の関係もありません。これらは単に命名を単純化する方法です。

表示されているエラーは、user_appuser.clientsテーブルに対する権限を持っていないことを示しているようです。あなたはそれを許可する必要があります

GRANT SELECT, INSERT, UPDATE, DELETE
   ON user.clients
   TO user_app;

もちろん、実際のシステムでは、特権を付与する役割があり、その役割はuser_appに付与されると思います。

6
Justin Cave