2

私のアプリケーションには、ユーザーXYZがスキーマ所有者であるOracle上のテーブルがほとんどありません。テーブルはXYZを使用して作成されています。そして、ABCUSERにこれらのテーブルに対するCRUD権限を持たせたいと思います。経由でアクセスを許可しGRANT ALL ON TABLEABC to ABCUSER、付与に成功しました。

しかし、このユーザー(ABCUSER)がDBにクエリを実行しようとすると(TABLEABCから*を選択)、機能していないようです。エラーメッセージが表示されます

ORA-00942: table or view does not exist
00942. 00000 -  "table or view does not exist"
*Cause:    
*Action:
Error at Line: 1 Column: 14

何が足りないのか教えていただけますか?

4

2 に答える 2

6

ユーザーABCUSERはテーブルに対する特権を持っていますが、それを所有していません。したがって、クエリにスキーマを含める必要があります。

select * from XYZ.TABLEABC
/

プログラムにスキーマ名をハードコーディングしたくない場合は、ユーザーは同義語を作成できます。

create synonym TABLEABC for XYZ.TABLEABC
/

その後、元のクエリはABCUSERに対して機能します。

ABCUSERにはCREATESYNONYM権限が必要であることに注意してください。

于 2011-09-28T08:03:48.847 に答える
1

APCが言うように、あなたは類義語を失っています。

テーブルを表示できるようにするユーザーに応じて、PRIVATEまたはPUBLICシノニムが必要になる場合があります。

さまざまなタイプとその使用法の適切な説明はここにあります: http ://www.orafaq.com/wiki/Synonym

于 2011-09-28T08:51:42.493 に答える