web-dev-qa-db-ja.com

Oracle SQLのスキーマ内のすべてのテーブルを一覧表示する方法を教えてください。

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

139
benstpierre

別のスキーマ内のすべての表を参照するには、次のシステム権限のうち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'
197
Adam Musch
SELECT table_name  from all_tables where owner = 'YOURSCHEMA';
63
Tom

あなたはUSER_TABLESを問い合わせることができます

select TABLE_NAME from user_tables
13
Sathyajith Bhat

DBA権限なしで一般ユーザとしてログインした場合は、次のコマンドを使用して自分のスキーマのすべてのテーブルとビューを確認できます。

select * from tab;
4
chan

これを試して、交換?あなたのスキーマ名で

select TABLE_NAME from  INFORMATION_SCHEMA.TABLES
 WHERE TABLE_SCHEMA =?
  AND TABLE_TYPE = 'BASE TABLE'
3
SQLMenace
select * from user_tables;

(すべての表を表示)

2
yash
select * from cat;

それはあなたのスキーマのすべてのテーブルを表示するでしょう。

2
Arsalan Sheikh

JDBC(Java)でOracleにアクセスしている場合は、 DatabaseMetadata クラスを使用できます。 ADO.NETを使用してOracleにアクセスしている場合は、同様の方法を使用できます。

ODBCを使用してOracleにアクセスしている場合は、 SQLTables 関数を使用できます。

それ以外の場合は、SQLPlusまたは同様のOracleクライアントの情報が必要なだけであれば、すでに説明したいずれかのクエリで問題ありません。例えば:

select TABLE_NAME from user_tables
2

SELECT table_name、所有者FROM all_tablesここで、owner = 'schema_name'の順序でtable_name

1
Sreeju
select TABLE_NAME from user_tables;

上記のクエリでは、そのユーザーに存在するすべてのテーブルの名前がわかります。

1
A A Nayak
0
Michał Niklas

テーブルのサイズも取得する必要がある場合は、これが便利です。

select SEGMENT_NAME, PARTITION_NAME, BYTES from user_segments where SEGMENT_TYPE='TABLE' order by 1

0
Vijay Kumar

OWNERスキーマ下のすべてのテーブルのテーブルおよび行カウンタの名前

SELECT table_name, num_rows counter from DBA_TABLES WHERE owner = 'OWNER'

0
SergioLeone

所有者名がわかっている場合は、2番目のクエリを直接実行できます。

-まず、存在するすべての所有者を選択できます。

SELECT DISTINCT(owner) from SYS.ALL_TABLES;

-次に、その所有者の下のテーブルを見ることができます:

SELECT table_name, owner from all_tables where owner like ('%XYZ%');
0
Kermit the Frog