- PR -

Oracle, dba_% の保管場所

1
投稿者投稿内容
tun_chn
会議室デビュー日: 2006/11/25
投稿数: 7
投稿日時: 2006-11-25 20:11
基本的なことかもしれませんが。。。
その居場所がいまいち分かっていない感じで、、、。

こんな感じで「列名称」や「データ型」が見れるのはいいのですが、
desc sys.LOGMNRG_DICTIONARY$
desc system.LOGMNR_DICTIONARY$
desc sys.LOGMNRT_DICTIONARY$
desc dba_objects
desc sys.dba_tables
desc sys.dual
desc scott.dual_look_test1 ← sys.dual のコピー
desc system.dual_look_test2 ← sys.dual のコピー

ここで見えている、sys や system の領域って、結局どこなのでしょう?

例えば、system ユーザで、

select object_name from dba_objects;

で見ると、全てのユーザのテーブル名称が SQL の結果として出力されるのはいいのですが、
何らかの GUI ツールを介して見てみると、そのユーザが所有しているテーブルの
配下に(ここでは SYS か SYSTEM)、肝心の dba_objects がない。dba_*, all_* も見えてない。

GUI ツールの種類、または、設定次第で、
そのユーザ(ここでは SYS か SYSTEM)所有ということで見れるのでしょうか。

単に GUI からは見えないのが仕様ということであれば、そう理解します。
SQL*Plus などで、見るしかないのがそもそもの設計です、と。。そうなんでしょうか。
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2006-11-25 20:15
実際のブツもsysやsystemのスキーマにありますよ。
publicなシノニムだから実体が見えていないだけでは?
tun_chn
会議室デビュー日: 2006/11/25
投稿数: 7
投稿日時: 2006-11-26 21:28
引用:

あしゅさんの書き込み (2006-11-25 20:15) より:
実際のブツもsysやsystemのスキーマにありますよ。
publicなシノニムだから実体が見えていないだけでは?



あしゅさん、ありがとうございます。
ちなみに、いちいち Private にして見るようなことって、違法でしょうか。
ちょっと、数が多いので、。
まぁ SQL コマンド書いてもいいですが。
開発上、そんなに意味ないような。
Desmo
大ベテラン
会議室デビュー日: 2004/03/24
投稿数: 149
投稿日時: 2006-11-27 15:17
あしゅさんの回答通りなのですが、部分的にもう少し詳しく書きますと・・・
desc dba_objects
を実行するとは、publicシノニムの dba_objects が使用されます。
では、そのpublicシノニム(dba_objects)には何が書かれているかというと、
CREATE PUBLIC SYNONYM DBA_OBJECTS FOR SYS.DBA_OBJECTS
/
となっています。
中に書かれている SYS.DBA_OBJECTS というのは SYSのVIEWです。

GUIツールで見えるかどうかは、そのツールの仕様次第だと思います。(Oracle側の設定とは関係ありません)
そのツールがシノニムやビューを閲覧できるような仕様であれば、所謂データディクショナリと呼ばれるものは全て閲覧できるハズですし、事実そういったツールは沢山あります。
逆にテーブルしか見えないような仕様であるなら、単純にマウス操作だけで これらを閲覧することは出来ないのではないでしょうか。
1

スキルアップ/キャリアアップ(JOB@IT)