none
ASP.NETWebアプリからのOracleDB検索でデータが検索できない RRS feed

  • 質問

  • こんにちは。

    現在、ASP.NETのWebアプリを作成しているのですが、Oracleからのデータ取得がうまくいかず困っています。

    環境と事象を以下に記載しますので、解決策が判る方はアドバイス頂ければ幸いです。

    ◆環境
    ・OS :Windows Server 2008 R2
    ・IIS :7.5
    ・DBMS:Oracle 11g
    ・言語:VB.NET

    ◆事象
    ・WebアプリからのDB検索で、検索出来るはずのデータが検索できない。(データ件数が0)

    ◆確認したこと
    ・Webアプリから発行するクエリに問題があるのかと思い、DB検索クエリをログにはき出し、このログにはき出したクエリを
     sql*plus上で実行した所、ちゃんとデータが返ってくる。(データ件数は2,000件程度)

    クエリ単独では問題なく検索できるのに、なぜWebアプリからだと検索ができないのかが判りません。
    IISとオラクルのログを見れば、なにか原因がわかりますでしょうか?また、ログはどのように取得すれば
    よいのでしょうか?

    また、なにか原因として考えられる事はありますでしょうか?

    よろしくお願いいたします。
    2013年12月12日 8:42

回答

  • Oracle を使ったことがない自分がレスするのもなんですが・・・

    ワーカープロセスの Oracle へのログイン、DB に対する権限には問題はありませんか?

    SQL Server の場合は、そのあたりが問題となっていることが多いです。

    2013年12月12日 9:22
  • ありがちなパターンとして、固定長文字列の項目を検索条件としていて、桁数の足りない条件をパラメータとして渡している、というのがあったと思います。

    例えば10文字の項目に対して、"A%"というパラメータでLIKE検索した場合、3文字目から後ろはパラメータとして空白文字が補われてしまうため、結果として検索条件にマッチしない、というようなことが起こったりします。

    参考まで。

    2013年12月13日 1:19
  • IISとオラクルのログを見れば、なにか原因がわかりますでしょうか?また、ログはどのように取得すれば
    よいのでしょうか?

    Oracleのトレースを取り、実際に発行されているSQLを確認されてみてはいかがでしょうか?

    (参考)
    OracleのSQLトレースの取り方が分からない
    http://itpro.nikkeibp.co.jp/members/NOS/TROUBLE/20000701/1/


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    2013年12月13日 1:39
    モデレータ
  • トレースを出すという話なら、ODP.NET自体のトレース機能を使うのも手ですよ。

    http://docs.oracle.com/cd/E49329_01/win.121/b72971/featConfig.htm#sthref129

    2013年12月13日 6:41
  • > 教えて頂いたトレースの取り方を参考に調査を進めたいと思います。

    それより、差し支えなければ、「ちゃんとDBからの検索ができている」ページと「特定の画面のみ出来ない」ページのソースを見せてもらったほうが解決が早いかもしれませんよ。

    2013年12月13日 11:38
  • 回答ありがとうございました。返信がおそくなりすみません。

    時間がかかりましたが、この問題は解決しました。結局、SQL文に問題があることがわかりました。

    皆様どうもありがとうございました。

    2013年12月25日 1:43

すべての返信

  • Oracle を使ったことがない自分がレスするのもなんですが・・・

    ワーカープロセスの Oracle へのログイン、DB に対する権限には問題はありませんか?

    SQL Server の場合は、そのあたりが問題となっていることが多いです。

    2013年12月12日 9:22
  • SurferOnWwwさん

    返信ありがとうございます。

    >ワーカープロセスの Oracle へのログイン、DB に対する権限には問題はありませんか?

    はい、このあたりは問題ありません。

    ちょっと不思議なのが、同様に作成している他の画面ではちゃんとDBからの検索ができているのですが、
    特定の画面のみ出来ないのです。

    よろしくおねがいします。

    2013年12月12日 11:35
  • > ちょっと不思議なのが、同様に作成している他の画面ではちゃんとDBからの検索が
    > できているのですが、特定の画面のみ出来ないのです。

    それでは、ここに書いてあること以外なにも知りえない回答者に、今提供されている
    情報だけで原因が分かるとは思えないのですが。


    • 編集済み SurferOnWww 2013年12月12日 13:27 誤字訂正
    2013年12月12日 12:51
  • ありがちなパターンとして、固定長文字列の項目を検索条件としていて、桁数の足りない条件をパラメータとして渡している、というのがあったと思います。

    例えば10文字の項目に対して、"A%"というパラメータでLIKE検索した場合、3文字目から後ろはパラメータとして空白文字が補われてしまうため、結果として検索条件にマッチしない、というようなことが起こったりします。

    参考まで。

    2013年12月13日 1:19
  • IISとオラクルのログを見れば、なにか原因がわかりますでしょうか?また、ログはどのように取得すれば
    よいのでしょうか?

    Oracleのトレースを取り、実際に発行されているSQLを確認されてみてはいかがでしょうか?

    (参考)
    OracleのSQLトレースの取り方が分からない
    http://itpro.nikkeibp.co.jp/members/NOS/TROUBLE/20000701/1/


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    2013年12月13日 1:39
    モデレータ
  • トレースを出すという話なら、ODP.NET自体のトレース機能を使うのも手ですよ。

    http://docs.oracle.com/cd/E49329_01/win.121/b72971/featConfig.htm#sthref129

    2013年12月13日 6:41
  • ありがとうございます。

    ODP.NETというのがあるのですね。恥ずかしい話、はじめて知りました。

    来週になるかと思いますが、試してみます。

    2013年12月13日 10:58
  • ありがとうございます。

    アドバイスいただいた件に留意して調べてみます。

    どうもありがとうございました。

    2013年12月13日 10:59
  • 回答ありがとうございます。

    情報が足らずすみません。もうちょっと状況を整理してから投稿すべきだったかもしれません。

    2013年12月13日 11:00
  • 回答ありがとうございます。

    教えて頂いたトレースの取り方を参考に調査を進めたいと思います。

    2013年12月13日 11:00
  • > 教えて頂いたトレースの取り方を参考に調査を進めたいと思います。

    それより、差し支えなければ、「ちゃんとDBからの検索ができている」ページと「特定の画面のみ出来ない」ページのソースを見せてもらったほうが解決が早いかもしれませんよ。

    2013年12月13日 11:38
  • 回答ありがとうございました。返信がおそくなりすみません。

    時間がかかりましたが、この問題は解決しました。結局、SQL文に問題があることがわかりました。

    皆様どうもありがとうございました。

    2013年12月25日 1:43