■SI ObjectBrowser掲示板

ユーザの皆様、開発者、サポート担当者の交流のための掲示板です!discussion
ユーザーのみなさま同士で教え合ったり、アドバイスしたりする暖かい交流の場にしたいと思っていますので、相互協力をよろしくお願いします。なお、過去に同じようなQ&Aがあるケースも多いので、投稿前にキーワード検索してみてください。

※◆のカラーは投稿の対象となる製品に対応しています。【…OB …OBER …全般 ◇…その他】
※ライセンスに関するお問合せにつきましては、お問い合わせページよりご連絡いただきますようお願いいたします。
※誹謗中傷や公序良俗に反する書き込みはご遠慮ください。運営側の判断によりメッセージを削除する場合があります。
※環境依存や技術的調査が必要な問題については掲示板上ではお答えしかねます。ご了承ください。




ロック情報が表示できない 2003/03/05 20:18:23
山田 貴裕           t-yamada@niscom-jp.com
こんにちは、山田@nisCOMと申します。

以下のような現象が発生します。
対処方法があれば教えてください。
よろしくお願いします。

(現象)
ロック情報を表示しようとすると、
「権限が不足している為、情報を表示する事が出来ません。」
となり、情報が表示されない

(再現手順)
1. O7_DICTIONARY_ACCESSIBILITY 初期化パラメータをFALSEにする
2. DB起動
3. OOBを使用してSYSTEMユーザーでログイン
4. ロック情報を表示


(環境 Client)
Windows2000 Professional Edition
Oracle Client 8.1.7.0.0
Object Browser 7.0.12.52

(環境 Server)
Windows2000 Advanced Server (+SP2)
Oracle Enterprise Edition R8.1.7.4.5
元の文章を引用して返信

Re: ロック情報が表示できない 2003/03/05 22:50:30
後迫@SI
こんばんは
後迫@SIです。

お問い合わせいただいた件についてですが、
まずSYSスキーマで接続していただき、
以下のオブジェクトが存在するか
確認していただいてもよろしいでしょうか。

@SYSに以下のオブジェクトがあるか
OBJ$
USER$

APUBLICに以下のオブジェクトがあるか
V$LOCK
V$SESSION
元の文章を引用して返信

Re: ロック情報が表示できない 2003/03/06 11:50:03
山田 貴裕           t-yamada@niscom-jp.com
後迫@SIさん、ありがとうございます。

山田@nisCOMです。

一つ重要なことを言い忘れていましたが、
O7_DICTIONARY_ACCESSIBILITYをTRUEにした場合は
問題なくロック情報が表示できます。


>@SYSに以下のオブジェクトがあるか
>OBJ$
>USER$
>
>APUBLICに以下のオブジェクトがあるか
>V$LOCK
>V$SESSION

当然ながら、存在します。
ただ、O7_DICTIONARY_ACCESSIBILITYがFALSEになっている場合は
SYSDBAとして接続しないといけないようなので、SQL*Plusで確認しました。



以下冗長かもしれませんが、結果を載せます。

Oracle8i Enterprise Edition Release 8.1.7.4.1 - Production
JServer Release 8.1.7.4.1 - Production
に接続されました。
SQL> desc sys.obj$
名前 NULL? 型
----------------------------------------- -------- ----------------------------
OBJ# NOT NULL NUMBER
DATAOBJ# NUMBER
OWNER# NOT NULL NUMBER
NAME NOT NULL VARCHAR2(30)
NAMESPACE NOT NULL NUMBER
SUBNAME VARCHAR2(30)
TYPE# NOT NULL NUMBER
CTIME NOT NULL DATE
MTIME NOT NULL DATE
STIME NOT NULL DATE
STATUS NOT NULL NUMBER
REMOTEOWNER VARCHAR2(30)
LINKNAME VARCHAR2(128)
FLAGS NUMBER
OID$ RAW(16)
SPARE1 NUMBER
SPARE2 NUMBER
SPARE3 NUMBER
SPARE4 VARCHAR2(1000)
SPARE5 VARCHAR2(1000)
SPARE6 DATE

SQL> desc sys.user$
名前 NULL? 型
----------------------------------------- -------- ----------------------------
USER# NOT NULL NUMBER
NAME NOT NULL VARCHAR2(30)
TYPE# NOT NULL NUMBER
PASSWORD VARCHAR2(30)
DATATS# NOT NULL NUMBER
TEMPTS# NOT NULL NUMBER
CTIME NOT NULL DATE
PTIME DATE
EXPTIME DATE
LTIME DATE
RESOURCE$ NOT NULL NUMBER
AUDIT$ VARCHAR2(38)
DEFROLE NOT NULL NUMBER
DEFGRP# NUMBER
DEFGRP_SEQ# NUMBER
ASTATUS NOT NULL NUMBER
LCOUNT NOT NULL NUMBER
DEFSCHCLASS VARCHAR2(30)
EXT_USERNAME VARCHAR2(4000)
SPARE1 NUMBER
SPARE2 NUMBER
SPARE3 NUMBER
SPARE4 VARCHAR2(1000)
SPARE5 VARCHAR2(1000)
SPARE6 DATE

SQL> select owner, synonym_name from dba_synonyms where synonym_name = 'V$LOCK';

OWNER SYNONYM_NAME
------------------------------ ------------------------------
PUBLIC V$LOCK

1行が選択されました。

SQL> select owner, synonym_name from dba_synonyms where synonym_name = 'V$SESSION';

OWNER SYNONYM_NAME
------------------------------ ------------------------------
PUBLIC V$SESSION

1行が選択されました。

元の文章を引用して返信

Re: ロック情報が表示できない 2003/03/06 16:32:23
後迫@SI
こんばんは
後迫@SIです。

追加情報をいただきありがとうございました。
弊社環境で現象を再現できました。

O7_DICTIONARY_ACCESSIBILITYパラメータをFALSEすると、
SELECT ANY TABLE権限があっても、SYSのオブジェクトを参照できなくなるようです。
($OBJ、$USERにDESCはできましたが、SELECTはできませんでした。)

解決方法ですが、
O7_DICTIONARY_ACCESSIBILITYをTRUEに戻していただくか、
SYSでログインし、以下のSQLを実行していただけばエラーがなくなると思います。
GRANT SELECT ON OBJ$ TO SYSTEM;
GRANT SELECT ON USER$ TO SYSTEM;

どうぞよろしくお願いいたします。


元の文章を引用して返信

Re: ロック情報が表示できない 2003/03/07 20:47:44
山田 貴裕           t-yamada@niscom-jp.com
こんばんは、山田@nisCOMです。

回答ありがとうございます。

>追加情報をいただきありがとうございました。
>弊社環境で現象を再現できました。
>
>O7_DICTIONARY_ACCESSIBILITYパラメータをFALSEすると、
>SELECT ANY TABLE権限があっても、SYSのオブジェクトを参照できなくなるようです。
そうですね、そのためにSELECT_CATALOG_ROLEがありますが、
このロールの中では$OBJ、$USERへの直接の参照権限は
与えられていないので、そういうことかと納得できました。

>解決方法ですが、
>O7_DICTIONARY_ACCESSIBILITYをTRUEに戻していただくか、
>SYSでログインし、以下のSQLを実行していただけばエラーがなくなると思います。
>GRANT SELECT ON OBJ$ TO SYSTEM;
>GRANT SELECT ON USER$ TO SYSTEM;
確かにその通りでした。
サポートされていない方法でしょうがSELECT_CATALOG_ROLEに上記権限
を与えてもよいですね。

O7_DICTIONARY_ACCESSIBILITYをFALSEにしても
OOB Ver.8からはSYSDBAとして接続できるので、
SYSでつないで参照することもできるでしょうし、
Oracle9iだったらSELECT ANY DICTIONARY 権限を
与えれば済むんでしょうかね。

#ちなみに今度のセミナーへ参加させていただく予定です。
#新バージョンのOOBに期待しております。
元の文章を引用して返信