2012-09-27 5 views
10

我々持っているOracleのDBMS(11グラム)と、以下の構成:別のスキーマにあるDBLINKを使用してOracleを選択するにはどうすればよいですか?

  • A DBユーザー "MYUSER"
  • 2つのスキーマ "MYUSER" と "SCHEMA_B"
  • ユーザー "MYUSERは、" アクセス可能「SCHEMA_B 「そのテーブル
  • 公共DBリンク上でアクセス許可を読み取った 『直接
をSCHEMA_B『『DBのユーザーを使用する場合DB_LINKが動作している
  • 』 SCHEMA_B』にある』 DB_LINK

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

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

    select * from [email protected]"DB_LINK" 
    select * from [email protected]"SCHEMA_B"."DB_LINK" 
    select * from [email protected]_B."DB_LINK" 
    select * from [email protected]_B.DB_LINK 
    select * from [email protected]_LINK 
    select * from "SCHEMA_B"[email protected]_LINK 
    

    私はエラーメッセージは次のとおりです。 ORA-02019。 00000 - "リモートデータベースの接続記述が見つかりません"

    ありがとうございます!

  • 答えて

    11

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

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

    次のように行います。すべてのユーザーにデータベース・リンクを共有するには

    create database link db_link... as before; 
    create view mytable_view as select * from [email protected]_link; 
    grant select on mytable_view to myuser; 
    
    +0

    は「PUBLIC」ディレクティブを使用します。 CREATE PUBLIC DATABASE LINK ... – Rusty1

    関連する問題