データベースとそれを管理しているユーザーがいます。次に、追加の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.
それを修正するために私は何ができますか、または原因/解決策を決定するためにどこを探すべきですか?
シノニムは特権とは何の関係もありません。これらは単に命名を単純化する方法です。
表示されているエラーは、user_app
がuser.clients
テーブルに対する権限を持っていないことを示しているようです。あなたはそれを許可する必要があります
GRANT SELECT, INSERT, UPDATE, DELETE
ON user.clients
TO user_app;
もちろん、実際のシステムでは、特権を付与する役割があり、その役割はuser_app
に付与されると思います。