2

USERAとしてログインしているとすると、user_tables、user_tab_columnsなどのUSERBスキーマのすべてのuser_*ビューにアクセスしたいとします。これどうやってするの?ありがとう

4

3 に答える 3

5

すべてのUSER_*テーブルには、ALL_*およびDBA_*プレフィックスが付いた類似物があります。USER_TABLESには、所有しているすべてのテーブルに関する情報があります。ALL_TABLESには、アクセスできるすべてのテーブルに関する情報があります。DBA_TABLESには、データベース内のすべてのテーブルに関する情報があります。

UserBのテーブルに関する情報を確認したい場合

SELECT *
  FROM all_tables
 WHERE owner = 'USERB';

また

SELECT *
  FROM dba_tables
 WHERE owner = 'USERB';

前者は、ユーザーBのテーブルに対するSELECTアクセス権がある場合に機能します。後者は、DBAがDBA_TABLESビューへのアクセスを許可している場合に機能します。これは通常、SELECT ANY DICTIONARY特権(または以前のバージョンではSELECT_CATALOG_ROLE)を付与することによって行われますが、DBAは個々のDBA_*ビューへのアクセスを許可できます。

于 2011-01-14T20:56:50.913 に答える
3
  • USER_%ビューはあなたが所有するもの、つまりスキーマ内にあるものを提供します。
  • ALL_%ビューは、アクセスできるものを提供します。

したがって、実際に使用する必要があるのはALL_TABLES / etcであり、USERBオブジェクトへの適切なアクセスを許可します。

于 2011-01-14T20:55:36.937 に答える
0

権限があると仮定して、次のことを試すことができます。

ALTER SESSION SET CURRENT_SCHEMA = USERB;

于 2011-01-14T21:01:16.763 に答える