- - PR -
Oracle, dba_% の保管場所
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 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 などで、見るしかないのがそもそもの設計です、と。。そうなんでしょうか。 | ||||
|
投稿日時: 2006-11-25 20:15
実際のブツもsysやsystemのスキーマにありますよ。
publicなシノニムだから実体が見えていないだけでは? | ||||
|
投稿日時: 2006-11-26 21:28
あしゅさん、ありがとうございます。 ちなみに、いちいち Private にして見るようなことって、違法でしょうか。 ちょっと、数が多いので、。 まぁ SQL コマンド書いてもいいですが。 開発上、そんなに意味ないような。 | ||||
|
投稿日時: 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
