Oracle SQL

【Oracle】スキーマ名・テーブル名検索方法

2013年8月28日

oracleにて違うスキーマのテーブル名を参照する時は以下の方法を使うと思います。

select * from スキーマ名.テーブル名;

ですが、スキーマを簡略したSQLを書くこともできます。

select * from テーブル名;

しかし、簡略したSQLでプログラムに記述してしまうと後で修正する場合
「このテーブルどこのスキーマだったかな…」となってしまうと思います。

それもスキーマの数が多いと一つ一つ探すのが大変…。

その場合、どのスキーマのテーブルかを調べる方法として以下のSQLを実行すればいいそうです。

--DBA権限があるユーザーの場合
select owner,table_name from dba_tables;
--DBA権限がないユーザーの場合
select owner,table_name from all_tables;

※必要に応じてwhere句を入れるなりしてください。

これでこのテーブルはどのスキーマのテーブルなのかを調べることができると思います。
またテーブル検索もすることができるので便利だと思います。(CDから始まるテーブルってどれくらいあるんだろう…等)

DBA権限ないユーザーの場合はそのユーザーが参照できるスキーマ&テーブル分の取得になると思います。(多分…)

スキーマ名を調べたい場合、以下の方法で調べることができます。

--DBA権限があるユーザーの場合
select username from dba_users;
--DBA権限がないユーザーの場合
select username from all_users;

プログラムの調査を行う際によくどのスキーマのテーブルを参照しているのかわからない場合があるので、この方法を使えば簡単に探せますね!

-Oracle, SQL
-, , ,