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'
SELECT table_name from all_tables where owner = 'YOURSCHEMA';
あなたはUSER_TABLES
を問い合わせることができます
select TABLE_NAME from user_tables
DBA権限なしで一般ユーザとしてログインした場合は、次のコマンドを使用して自分のスキーマのすべてのテーブルとビューを確認できます。
select * from tab;
これを試して、交換?あなたのスキーマ名で
select TABLE_NAME from INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA =?
AND TABLE_TYPE = 'BASE TABLE'
select * from user_tables;
(すべての表を表示)
select * from cat;
それはあなたのスキーマのすべてのテーブルを表示するでしょう。
JDBC(Java)でOracleにアクセスしている場合は、 DatabaseMetadata クラスを使用できます。 ADO.NETを使用してOracleにアクセスしている場合は、同様の方法を使用できます。
ODBCを使用してOracleにアクセスしている場合は、 SQLTables 関数を使用できます。
それ以外の場合は、SQLPlusまたは同様のOracleクライアントの情報が必要なだけであれば、すでに説明したいずれかのクエリで問題ありません。例えば:
select TABLE_NAME from user_tables
SELECT table_name、所有者FROM all_tablesここで、owner = 'schema_name'の順序でtable_name
select TABLE_NAME from user_tables;
上記のクエリでは、そのユーザーに存在するすべてのテーブルの名前がわかります。
Dbスキーマに関する情報を表示するには、私の 簡単なユーティリティ を見てください。 Oracleデータディクショナリを使用したデータモデルのリバースエンジニアリング
テーブルのサイズも取得する必要がある場合は、これが便利です。
select SEGMENT_NAME, PARTITION_NAME, BYTES from user_segments where SEGMENT_TYPE='TABLE' order by 1
OWNER
スキーマ下のすべてのテーブルのテーブルおよび行カウンタの名前
SELECT table_name, num_rows counter from DBA_TABLES WHERE owner = 'OWNER'
所有者名がわかっている場合は、2番目のクエリを直接実行できます。
-まず、存在するすべての所有者を選択できます。
SELECT DISTINCT(owner) from SYS.ALL_TABLES;
-次に、その所有者の下のテーブルを見ることができます:
SELECT table_name, owner from all_tables where owner like ('%XYZ%');