1. ホーム
  2. sql

[解決済み] Oracle SQLでスキーマ内の全テーブルを一覧表示するには?

2022-04-21 08:57:58

質問

Oracle SQLでスキーマ内のすべてのテーブルを一覧表示するにはどうすればよいですか?

どのように解決するのですか?

別のスキーマのすべてのテーブルを表示するには、次のシステム特権のうち1つ以上が必要です。

SELECT ANY DICTIONARY
(SELECT | INSERT | UPDATE | DELETE) ANY TABLE

または、大きなハンマーであるDBAの役割です。

そのどれでも、選択することができます。

SELECT DISTINCT OWNER, OBJECT_NAME 
  FROM DBA_OBJECTS
 WHERE OBJECT_TYPE = 'TABLE'
   AND OWNER = '[some other schema]'

これらのシステム特権がない場合、直接またはロールを通じて、あるレベルのアクセス権を与えられたテーブルしか見ることができません。

SELECT DISTINCT OWNER, OBJECT_NAME 
  FROM ALL_OBJECTS
 WHERE OBJECT_TYPE = 'TABLE'
   AND OWNER = '[some other schema]'

最後に、(10g時点では)自分のテーブルに対する権限を取り消すことはできないので、いつでも自分のテーブルのデータ辞書を照会することができます。

SELECT DISTINCT OBJECT_NAME 
  FROM USER_OBJECTS
 WHERE OBJECT_TYPE = 'TABLE'