Foros: 公開討議 (Thread #32436)

オラクルでテーブル名をダブルクリックするとエラーが発生します (2012-07-04 07:59 by raccoon-dog #64463)

Eclipse + Oracle 10.2.0.1.0 + jdbc の環境にてオラクルに接続しています。
「SQL 実行・ビュー」でSQL文の実行はエラーなく実行できます。
しかし、表示されていないフィールドがあります。

「DB ツリー・ビュー」でテーブル名をダブルクリックしたり、「+」をクリックして
フィールド情報を取得したりすると、下記エラーが発生します。

java.lang.ArrayIndexOutOfBoundsException

オラクルの問題のような気もしますが、オラクルの方は私が設計したものではないので設定変更ができません。

何か回避策はありますでしょうか。
よろしくお願いします。


RE: オラクルでテーブル名をダブルクリックするとエラーが発生します (2012-07-04 13:20 by zigen #64475)

ZIGENです。

接続時のユーザに権限が無いように思えます。
たとえば、DBA権限があるユーザで接続してみても
同じでしょうか?
Responder al #64463

RE: オラクルでテーブル名をダブルクリックするとエラーが発生します (2012-07-05 22:02 by raccoon-dog #64487)

ZIGEN 様

早速のご回答ありがとうございます。
本日DBA権限のあるユーザで接続してみましたが、症状は変わりませんでした。
以下、SELECT * FROM user_role_privs; の結果です。

USERNAME GRANTED_ROLE ADM DEF OS_
------------------------------ ------------------------------ --- --- ---
hoge CONNECT NO YES NO
hoge DBA NO YES NO
hoge RESOURCE NO YES NO

DB Viewerの接続情報には以下のとおり設定しています。
JDBC Drive: oracle.jdbc.driver.Oracle.Driver
JDBC タイプ: Type4
接続文字列: jdbc:orcle:thin:@xxx.xxx.xxx.xxx:1521:sid
接続ユーザ: hoge
接続パスワード: hoge-pass
接続モード: NORMAL

* 接続モードは、NORMAL以外(SYSDBA, SYSOPER)を選ぶと下記エラーが発生します。
ORA-01017: invalid username/password: logon denied

いろいろ試行錯誤しておりますが、全く解決策がわかりません。
何かアドバイスいただけたら幸いです。

よろしくお願いいたします。
Responder al #64475

RE: オラクルでテーブル名をダブルクリックするとエラーが発生します (2012-07-15 12:07 by zigen #64601)

ZIGENです。

原因が分かりました。
いただいたSQLを見ると、

CREATE TABLE "HOGE"."HogeTab"
という感じに、スキーマ名、テーブル名、カラム名の前後にダブルクォートが入っています。
これにより、Oracle内で大文字小文字を識別して登録されます。

DBViewer側が簡単に対応できるかどうか、ソースを見てみますが
スキーマ、テーブル、カラムだけでなく
制約名とかまでも、ダブルクォートを入れているため、
対応仕切れない可能性があります。

しかし、あらゆる項目に対して、
ダブルクォートを入れているDB設計は、はじめてみました。^^;
※SQL発行する側は、全部大文字、小文字意識しないといけなくなるのd、大変ですね。
Responder al #64487

RE: オラクルでテーブル名をダブルクリックするとエラーが発生します (2012-07-05 23:58 by zigen #64490)

ZIGENです。

お使いになられている環境を教えてもらえませんか?

たとえば
OS:WindowsXP
Eclipse:3.x
DBViewerPlugin: ※DBツリー・ビューにあるDBViewerを右クリックで見れるはず。

また、エラー箇所を特定するために、
Eclipseが出力するログ(ワークスペース\.metadata\.log
を参照し、エラーが発生した時間のログを見せてもらえませんか?

java.lang.ArrayIndexOutOfBoundsException
が発生している箇所で、かつスタックトレースが出力されているところを知りたいです。
Responder al #64463

RE: オラクルでテーブル名をダブルクリックするとエラーが発生します (2012-07-06 14:53 by raccoon-dog #64499)

ZIGEN 様

返答いただきありがとうございます。環境ですが

OS: Windows XP
Eclipse 3.7.2 Indigo SR2 Windows 32bit ベース / Pleiades All in One 3.7.2.v20120225
DBViewerPlugin: 1.2.2 release v20101009

エラー発生時に、ログが残されている形跡はないようです。(見てもよくわかりませんでした。)
以下の方法で記録したログです。
1. Eclipse起動前に、ログファイルを削除
2. Eclipse起動
3. DBViewer で、Oracleに接続
4. DBツリー・ビューにてテーブル名をダブルクリックし、エラーを発生させる
5. Eclipse終了

--- ログの内容 ---
!SESSION 2012-07-06 14:46:20.943 -----------------------------------------------
eclipse.buildId=M20120208-0800
java.version=1.6.0_31
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=ja_JP
Framework arguments: -product
Command-line arguments: -os win32 -ws win32 -arch x86 -product

!ENTRY org.eclipse.ui 4 4 2012-07-06 14:47:04.766
!MESSAGE Invalid preference page path: HTML 讒区枚

!ENTRY org.eclipse.ui 4 4 2012-07-06 14:47:04.776
!MESSAGE Invalid preference page path: XML 讒区枚

以上、よろしくお願いします。

Responder al #64490

RE: オラクルでテーブル名をダブルクリックするとエラーが発生します (2012-07-08 09:18 by raccoon-dog #64538)

ZIGEN 様

いろいろ試していてひとつ気になったことがあります。

>「SQL 実行・ビュー」でSQL文の実行はエラーなく実行できます。
>しかし、表示されていないフィールドがあります。

と書きましたが、SQLの書き方で少し状況が違ってました。
下記 1. の場合ですと、表示されないフィールドがあるのですが
下記 2. の場合だと、全てのフィールドが正常に表示されます。

1. select * from hoge_table;
2. select * from "hoge_table";

これって何か関係ありますでしょうか?
お手数をおかけしますが、よろしくお願いします。
Responder al #64463

RE: オラクルでテーブル名をダブルクリックするとエラーが発生します (2012-07-08 10:51 by zigen #64539)

ZIGENです。

追加情報ありがとうございます。

確かに、」表示されないフィールドがある。」ことによって、
java.lang.ArrayIndexOutOfBoundsExceptionの例外がスローされているのだと思います。

上記の例は、hoge_table とありますが、
実際のテーブルは、日本語のテーブル名でしょうか?
また、表示されないフィールドの名称は日本語とか、特殊文字が入ってたりしませんか?

対象のテーブルのDDL(CREATE TABLE文)を以下のメールアドレスまで、
送っていただけないでしょうか?

ZIGEN (zigen@home.email.ne.jp)
※@はスパムメールのため全角になっております。メールの際は半角にしてください。
Responder al #64463

RE: オラクルでテーブル名をダブルクリックするとエラーが発生します (2012-07-08 14:26 by raccoon-dog #64540)

ZIGEN 様

いろいろありがとうございます。
hoge_table についてですが、日本語は使用しておりません。
使用文字は半角アルファベットとアンダーバーのみです。

また、テーブル名をクォートしなくても全てのフィールドが表示されるテーブルにおいても
DBツリー・ビューでテーブル名をダブルクリックしたり[+]をクリックすると
エラーが表示されるという状況です。

DDLは、先程ご指定のメールアドレスに送らせていただきました。

大変お手数をおかけしておりますが
よろしくお願い致します。
Responder al #64539