■SI Object Browser 掲示板


ユーザの皆様、開発者、サポート担当者の交流のための掲示板です!

ユーザーの皆様同士で教え合ったりもできる交流の場にしたいと思っていますので、相互協力をよろしくお願いします。
なお、過去に同じようなQ&Aがあるケースも多いので、投稿前にキーワード検索してみてください。

discussion
※各投稿のカラーは対象となる製品に対応しています。【■…OB ■…OBER ■…全般 ■…その他】
※ライセンスに関するお問合せにつきましては、お問い合わせページよりご連絡いただきますようお願いいたします。
※誹謗中傷や公序良俗に反する書き込みはご遠慮ください。運営側の判断によりメッセージを削除する場合があります。
※環境依存や技術的調査が必要な問題については掲示板上ではお答えしかねます。ご了承ください。
CLOB型を参照しようとするとフリーズします 2011/04/19 11:46 OB 3
【状況】
あるサーバAにて、
Object Browser Ver11.1(以下OB)と、
Oracle11gの両方がインストールされています。
サーバAのOBから同一サーバA上のデータベースと接続し、
CLOB型の中身を参照しようとすると(...をクリックすると)、
フリーズして操作を受け付けなくなります。

【環境の再現】
あるマシンAにOracle11gが入っており、
他のマシンBからOBを使ってそのデータベースを参照すると問題無いのですが、
Oracleが入っている同じマシンA上にOBをインストールし、
CLOB型のデータを参照しようとするとフリーズします。

つまり、PC上のOBから同一PC上のデータベースに接続し、
CLOB型を参照しようとするとフリーズするようです。

これはバグなのでしょうか、それとも仕様なのでしょうか。

以上、御解答の方をよろしくお願い致します。
こんにちは。
土手内@SIです。

お問い合わせいただいた件につきましてですが、
以下のような条件の時に発生する場合があるとの報告を
いただいております。

・Oracle Database/Client のバージョンが異なっている

・特定のデータがある場合に、Oracle Call Interface(OCI)の
 内部でハングアップする

いずれのケースにつきましても、Oracle Database/Clientの
組み合わせによって再現する場合としない場合があり、
現状ではObject Browser側での対応が困難な状況でございます。

本件につきましては、何らかの方法でフリーズ現象を回避できないか
開発側で検討させていただいておりますが、現状では
別途参照可能な環境があるとのことですので、そちらから
ご確認いただく等、運用での回避をお願いできますでしょうか。

ご不便をおかけし、誠に申し訳ございませんが
何卒、よろしくお願いいたします。
[土手内@SI]
>こんにちは。
>土手内@SIです。
>
>お問い合わせいただいた件につきましてですが、
>以下のような条件の時に発生する場合があるとの報告を
>いただいております。
>
>・Oracle Database/Client のバージョンが異なっている
>
>・特定のデータがある場合に、Oracle Call Interface(OCI)の
> 内部でハングアップする

こちらの環境は上記のどちらも該当しません。
(Oracleのバージョンは同じです。
また、一旦データベースを全削除し、
テスト用のテーブルを一つ作成しテストしました。)

もう少し調査をしてみましたが、
CLOBのデータの内容によってフリーズが起こるものと、
起こらないものがあることが分かりました。

フリーズが起こる文字列
・テスト1
・テスト(改行)
・テストa
・test

フリーズが起こらない文字列
・テスト
・テスト1
・テストs
・test1
・(空白)

上記を見て頂ければ分かると思いますが、
文字列の最後が全角文字であればフリーズは起こらず、
文字列の最後が半角文字か改行であればフリーズするといった状況です。
(あるPCのOBから、同じPCのデータベースにアクセスした場合です。)

できればこの不具合は対処して頂きたいので、
調査の方を御検討して頂ければ幸いです。

以上、よろしくお願い致します。
こんにちは。
土手内@SIです。

詳細な情報のご提供、誠にありがとうございます。

開発側にて確認を行いましたところ、ご指摘にありましたようにCLOBデータの末尾が
1バイト文字の場合に再現する模様です。

Object Browser内部の動作としましては、CLOBデータを読み込んでいき、
OCI.DLLより「読取が完了した」というコードが返された段階で
データを表示する動作となっておりますが、CLOBデータの末尾が1バイト文字の場合
この「読取が完了した」コードが返されず、フリーズ現象が発生することを確認しております。

誠に申し訳ございませんが、OCI.DLLに起因する問題となりますため、
正常なデータを表示することは非常に困難な状況でございます。

代替案としまして、SQL実行画面から文字列データとして
SELECTすることで参照が可能となります。

 SELECT TO_CHAR(CLOB列名) FROM テーブル名 [WHERE 条件...]

しかしながら、この方法ですとCLOBデータを直接編集することが不可となりますため
変更が必要な場合には、別途UPDATE文にて対応していただく必要がございます。

本件につきまして、フリーズ現象を回避する方針で検討するよう
開発側に伝えさせていただきますが、「正常データの表示」につきましては
対応が困難となりますこと、誠に恐縮ではございますがご容赦いただけますでしょうか。

ご不便をおかけし、誠に申し訳ございませんが
何卒よろしくお願いいたします。