ユーザーがスキーマ識別子を指定せずに別のスキーマのテーブルから選択できるようにする Oracle データベース ロールはどれですか? つまり、ユーザー A として - A.table の select をユーザー B に許可します。B は、「A」を指定せずに「テーブルから * を選択」することができます。データベースの 1 つはこれを許可しますが、もう 1 つは「テーブルまたはビューが存在しません」というエラーを返します。
6 に答える
このシノニムを作成できます。オブジェクト「A.CoffeeTable」に「CoffeeTable」という名前のシノニムを作成します。パブリック シノニムを作成して、全員がこのように表示されるようにすることも、ユーザー B の下にシノニムを作成することもできます。
使用しているスキーマにテーブル(またはリーが示唆するビュー)のプライベートシノニムがないことを再確認するために、次のことができます
SELECT * FROM all_objects WHERE object_name = 'mytablename'
そして、所有者と object_type の情報を見てください。
シノニムがない場合、テーブルと同じ名前を使用してスキーマ A のテーブルから選択するスキーマ B のビューはありますか? これは、多くの点でローカルに参照されているテーブルのように見えます。
current_schema だけが違うのかもしれません。試す:
alter session set current_schema=A
@erno - おそらく TOAD がパブリック シノニムを表示しなかった理由は、リストに表示される情報をフィルタリングするためです。目の前にヒキガエルはいませんが、タブを右クリックすると、フィルタリング オプション (例: 「スキーマが所有するオブジェクトのみを表示する」、「パブリック オブジェクトを表示する」、「システム オブジェクトを表示する」など)
ブレットは正しい。これには同義語が使用されます。実際、本番ではスキーマ名がどうなるかわからない場合があります。スキーマ名に A を使用していて、A がすでに Oracle インスタンスに取り込まれている可能性があります。