人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

他人が作ったアプリからデータを抽出する必要が生じました。DBはOracleです。分かっているのはシステム管理者(system)のパスワード位です。どこにどのようなテーブルがあるのか全く不明です。
こうした状況で、上記のsystemアカウントにより、当該Oracleに含まれるすべてのテーブルが閲覧できるものでしょうか?
それとも、例えばhogeというアカウントが作成したテーブルは、systemには見えないものでしょうか?
また、当該Oracleが持つすべてのテーブルをsystemを利用して一覧する方法はないでしょうか?

●質問者: TEKKAMEN
●カテゴリ:コンピュータ 学習・教育
✍キーワード:dB hoge Oracle いもの アカウント
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● tamo2_xvi
●20ポイント

http://www.ne.jp/asahi/hishidama/home/tech/oracle/sqlplus.html

こちらを参考にテーブル一覧を出力されては如何でしょうか?

◎質問者からの返答

テーブル一覧を出力するSQLの質問ではなく、「ほかのアカウントで作成したテーブルでも管理者であれば閲覧できるのか、できるとすればどのような方法で?」という趣旨です。


2 ● GreatAmigo
●50ポイント

systemユーザでログイン後、以下のSQLで参照できます。

select table_name from dba_tables where owner='user名';

user名のところを任意のユーザに置き換えてみてください。

◎質問者からの返答

user名が不明(いくつアカウントがあるか不明)な場合に、where句を省略すれば(誰が作成したテーブルでも)すべて出てくるのでしょうか?

すみません、今手元にOracle実働環境がないのです..


3 ● GreatAmigo
●50ポイント

はい、全て参照できます。

以下のSQL文で実行してください。

select * from dba_tables;

ちなみに、ユーザ一覧は以下のSQL文で取得できます。

select * from dba_users;


他に質問があれば何なりとお聞きくださいませ。

◎質問者からの返答

それでは、

上記のようなSQL文を実行した場合、そこに現れないテーブルは「いかなる場合でも在り得ない」のでしょうか。

つまり、管理者であるsystemユーザーに見えないようにテーブルを作成する方法はない、と考えて良いのでしょうか。


4 ● kazz7
●20ポイント

systemユーザのパスワードが分かるのであれば、SQL*Plusなどを用いて、systemユーザとしてOracleに接続し、以下のようなSQL文で、ユーザごとの全テーブルを確認することが出来ます。


select OWNER, TABLE_NAME

from DBA_TABLES

order by 1, 2 ;

◎質問者からの返答

ありがとうございます。


5 ● kazz7
●20ポイント

連続で失礼します。

|上記のようなSQL文を実行した場合、そこに現れないテーブルは

|「いかなる場合でも在り得ない」のでしょうか。

上記の懸念点を考慮すると、念のためにテーブル以外のオブジェクトも確認しておいた方がよいかもしれません。オブジェクトの種類は数多くありますが、ひとまず「ビュー」と「シノニム」を確認しておけばよいと思います。(アプリからビューやシノニム経由でDBアクセスしている可能性が少なからずありますので)


例えばこんな感じのSQLです。

select OWNER, OBJECT_TYPE, OBJECT_NAME

from DBA_OBJECTS

where OBJECT_TYPE in ('SYNONYM', 'TABLE','VIEW')

order by 1, 2, 3 ;


ただし実際のデータが入っているのはテーブルの方ですので、シノニムやビューを用いているかどうかの確認と言うことになります。

◎質問者からの返答

ありがとうございます。

ということは、少なくともテーブルに関する限りは

select * from dba_tables;

に対して「隠れられる」テーブルは存在しない、という理解でよろしいでしょうか。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ