2

ユーザーがスキーマ識別子を指定せずに別のスキーマのテーブルから選択できるようにする Oracle データベース ロールはどれですか? つまり、ユーザー A として - A.table の select をユーザー B に許可します。B は、「A」を指定せずに「テーブルから * を選択」することができます。データベースの 1 つはこれを許可しますが、もう 1 つは「テーブルまたはビューが存在しません」というエラーを返します。

4

6 に答える 6

7

このシノニムを作成できます。オブジェクト「A.CoffeeTable」に「CoffeeTable」という名前のシノニムを作成します。パブリック シノニムを作成して、全員がこのように表示されるようにすることも、ユーザー B の下にシノニムを作成することもできます。

于 2008-10-21T19:59:11.257 に答える
4

使用しているスキーマにテーブル(またはリーが示唆するビュー)のプライベートシノニムがないことを再確認するために、次のことができます

SELECT * FROM all_objects WHERE object_name = 'mytablename'

そして、所有者と object_type の情報を見てください。

于 2008-10-22T10:07:28.330 に答える
2

シノニムがない場合、テーブルと同じ名前を使用してスキーマ A のテーブルから選択するスキーマ B のビューはありますか? これは、多くの点でローカルに参照されているテーブルのように見えます。

于 2008-10-22T02:43:15.480 に答える
2

current_schema だけが違うのかもしれません。試す:

alter session set current_schema=A

于 2008-10-21T20:00:06.853 に答える
0

@erno - おそらく TOAD がパブリック シノニムを表示しなかった理由は、リストに表示される情報をフィルタリングするためです。目の前にヒキガエルはいませんがタブを右クリックすると、フィルタリング オプション (例: 「スキーマが所有するオブジェクトのみを表示する」、「パブリック オブジェクトを表示する」、「システム オブジェクトを表示する」など)

于 2008-10-22T19:43:51.177 に答える
0

ブレットは正しい。これには同義語が使用されます。実際、本番ではスキーマ名がどうなるかわからない場合があります。スキーマ名に A を使用していて、A がすでに Oracle インスタンスに取り込まれている可能性があります。

于 2008-10-21T20:13:22.430 に答える