USERAとしてログインしているとすると、user_tables、user_tab_columnsなどのUSERBスキーマのすべてのuser_*ビューにアクセスしたいとします。これどうやってするの?ありがとう
8316 次
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 に答える