2

私は現在、Oracle の初心者です。2 つのデータベースを Oracle にインポートするように依頼されました。私は成功した...一種の...私は思う。したがって、これらのデータベースはユーザーとともにエクスポートされ、データベースをインポートするとユーザーが作成され、すべてのテーブルがそのユーザーに関連付けられました。2 番目のデータベースについても同じことが言えます。最初のインポート USER1 と 2 番目の db インポート USER2 でユーザーを呼び出すだけです。USER1 には独自のテーブルがあり、USER2 には独自のテーブルがあります。

これらのテーブルをすべて表示できるユーザーを作成したいと考えています。そのため、データにアクセスして操作するために一方にログインする必要はなく、もう一方にログインして同じことを行う必要はありません。それぞれに関連付けられた USER1 と USER2 のテーブルを表示および操作できる USER3 を作成したいと考えています。私はいくつかの方法を試しましたが、これを機能させることができないようです。どんな助けでも大歓迎です。

ありがとう

4

1 に答える 1

8

USER3 が USER1 が所有するテーブルをクエリできるようにするには:

GRANT SELECT ON USER1.tablename TO USER3;

これは、テーブルごとに個別に実行する必要があります。

あなたが必要とする可能性のあるその他の許可は、INSERT、UPDATE、および DELETE です。たとえば、フル コントロールを許可します。

GRANT SELECT, INSERT, UPDATE, DELETE ON USER1.tablename TO USER3;

USER3 としてログインし、テーブルをクエリするには、通常、スキーマを指定する必要があります。たとえば、次のようになります。

SELECT * FROM USER1.tablename;

毎回スキーマを指定する必要がないようにしたい場合は、同義語を使用できます。

(login as USER3)

CREATE SYNONYM tablename FOR USER1.tablename;

これで、USER3 としてログインして、これを実行できます。

SELECT * FROM tablename;

「どうしてそんなことをしなければならないのか、まったく理解できません。」

ユーザー (またはスキーマ) は、Oracle がアプリケーションを編成し、ガバナンスを実施するために使用する手段です。適切に設計されたアプリケーションでは、あるスキーマがそのすべてのオブジェクトに対するすべての権限を別のユーザーに付与する必要があることはほとんどありません。必要最小限の権限セットを他のユーザーに付与するポリシーをお薦めします。これを行うには、選択を行い、個別のステートメントを作成して、特定のオブジェクトに特定の権限を付与する必要があります。

于 2012-12-29T07:45:31.180 に答える