他人が作ったアプリからデータを抽出する必要が生じました。DBはOracleです。分かっているのはシステム管理者(system)のパスワード位です。どこにどのようなテーブルがあるのか全く不明です。

こうした状況で、上記のsystemアカウントにより、当該Oracleに含まれるすべてのテーブルが閲覧できるものでしょうか?
それとも、例えばhogeというアカウントが作成したテーブルは、systemには見えないものでしょうか?
また、当該Oracleが持つすべてのテーブルをsystemを利用して一覧する方法はないでしょうか?

回答の条件
  • 1人10回まで
  • 登録:2006/05/25 10:16:08
  • 終了:2006/05/25 11:41:47

回答(5件)

id:tamo2_xvi No.1

tamo2_xvi回答回数436ベストアンサー獲得回数102006/05/25 10:20:30

ポイント20pt

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

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

id:TEKKAMEN

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

2006/05/25 10:26:10
id:GreatAmigo No.2

GreatAmigo回答回数18ベストアンサー獲得回数12006/05/25 10:26:04

ポイント50pt

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

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

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

id:TEKKAMEN

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

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

2006/05/25 10:32:12
id:GreatAmigo No.3

GreatAmigo回答回数18ベストアンサー獲得回数12006/05/25 10:35:27

ポイント50pt

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

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

select * from dba_tables;

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

select * from dba_users;


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

id:TEKKAMEN

それでは、

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

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

2006/05/25 10:44:49
id:kazz7 No.4

kazz7回答回数446ベストアンサー獲得回数142006/05/25 10:36:57

ポイント20pt

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


select OWNER, TABLE_NAME

from DBA_TABLES

order by 1, 2 ;

id:TEKKAMEN

ありがとうございます。

2006/05/25 10:44:59
id:kazz7 No.5

kazz7回答回数446ベストアンサー獲得回数142006/05/25 10:55:44

ポイント20pt

連続で失礼します。

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

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

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


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

select OWNER, OBJECT_TYPE, OBJECT_NAME

from DBA_OBJECTS

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

order by 1, 2, 3 ;


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

id:TEKKAMEN

ありがとうございます。

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

select * from dba_tables;

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

2006/05/25 11:00:40

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません