14

Oracle DBMS (11g) と次の構成があります。

  • DBユーザー「MYUSER」
  • 2 つのスキーマ「MYUSER」と「SCHEMA_B」
  • ユーザー「MYUSER」は「SCHEMA_B」にアクセスでき、そのテーブルに対する読み取り権限を持っています
  • 「SCHEMA_B」にある公開DBリンク「DB_LINK」
  • DBユーザー「SCHEMA_B」を直接使用すると、DB_LINKが機能します

質問: 「MYUSER」としてログオンした場合、「SCHEMA_B」の DB リンクを使用してテーブルにアクセスするための正しい構文は何ですか? そうすることはまったく可能ですか?

私はすでにいくつかの星座を試しましたが、すべてうまくいきませんでした:

select * from dual@"DB_LINK"
select * from dual@"SCHEMA_B"."DB_LINK"
select * from dual@SCHEMA_B."DB_LINK"
select * from dual@SCHEMA_B.DB_LINK
select * from SCHEMA_B.dual@DB_LINK
select * from "SCHEMA_B".dual@DB_LINK

表示されるエラー メッセージは次のとおりです。ORA-02019。00000 - "リモート データベースの接続の説明が見つかりません"

ご提案ありがとうございます。

4

2 に答える 2

19

複数のユーザー間でデータベース リンクを共有することはできないと思いますが、すべてではありません。これらは、プライベート (1 人のユーザーのみ) またはパブリック (すべてのユーザー) のいずれかです。

これを回避する良い方法は、データベース リンクを介してアクセスするテーブルを公開するビューを SCHEMA_B に作成することです。これにより、ビューへのアクセスを制御できるため、データベース リンクから選択できるユーザーを適切に制御できます。

次のようにします。

create database link db_link... as before;
create view mytable_view as select * from mytable@db_link;
grant select on mytable_view to myuser;
于 2012-09-27T15:28:53.380 に答える