Forum Stats

  • 3,840,354 Users
  • 2,262,592 Discussions
  • 7,901,237 Comments

Discussions

hsodbcを使ってSQL*Plusを閉じるとエラー

okie1jp
okie1jp Member Posts: 107
 お世話になります。

 Excel上のデータを人の手を介さずに取り込む必要が生じたため、hsodbcを使って自動取り込みのテスト始めたのですが、SQL*Plus
からログアウトすると、必ずhsodbc.exeのアプリケーション・エラーが発生します。

 エラーメッセージ「"0x00421e26"の命令が"0x000000d0"のメモリを参照しました。メモリが"read"になることはできませんでした。
プログラムを終了するには[OK]をクリックしてください」が表示されてしまうため、自動バッチが組めない状態になってしまいそうです。

 厳密にはSQL*Plus自体は閉じるので、続行は可能かと思うのですが、いちいちエラーメッセージを消しにいく作業が無駄に発生して
しまいます。

 原因がどこにあるのか、回避方法もしくは対策の情報をお持ちの方がいらっしゃいましたら、教えていただきたく(最悪「サポート行き」、
でも諦めが付くので構いません)。

 宜しく、お願いいたします。

テスト環境:
OS WinXP(32bit)
DB 10.2.0.5(32bit)
Excel 2003

 テストはローカル環境で実施していますが、本番環境は全て64bitで、Excelファイル自体もネットワーク上になります(これはこれで
新たな問題が出そうですが、まだ試していません)。

Answers

  • asahide
    asahide Member Posts: 1,095 Bronze Trophy
    alter session close database link DBリンク名;
    を実施してからexitしてもダメでしょうか。
    余り根拠はないですが。


    正直(クライアントの)メモリ関連のエラーなので、本番環境にあわせた形でテストされた方が良いと思います。。
  • tmtsmic
    tmtsmic Member Posts: 120
    こんにちは。

    少し環境が違いますが
    こちらでは期待通りの動きが実現できましたね。
    ■OS (32bit)
     WindowsXP Pro SP3
    
    ■Oracle (32bit)
     Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Prod
     PL/SQL Release 10.2.0.3.0 - Production
     CORE    10.2.0.3.0      Production
     TNS for 32-bit Windows: Version 10.2.0.3.0 - Production
     NLSRTL Version 10.2.0.3.0 - Production
    
    ■Excel
     インストールしていない
     ※xlsファイルだけ置いた
    まず、状況の切り分けをいろいろしたいのですが・・・

    (1)hsodbc.exeはExcelに限らず、例えばSQLServerとのリンクでも使用します。
    なので、もしSQLServerの環境があるなら接続可能か試してみてほしいです。
    ※hsodbc.exeが悪いのか判別するため

    (2)最初から自動の話が出ていますが、手動でも同じエラーになるのでしょうか?

    (3)タスクマネージャでhsodbc.exeのプロセスを監視してみてください。
    起動はリンク先に接続したタイミングですが
    消えるのはどのタイミングですか?例外エラーメッセージのOK押下後ですか?
    プロセスが残ったりはしませんか?

    (4)完了後、SQL*Plusを終了するのではなく、あえて別のユーザーに
    CONNECTするとどうなるでしょうか?同じエラーが出ますか?
    ※どちらの行動もhsodbc.exeのプロセスが終了することに結びつくため


    まあ、あとは別の環境だとどうかとか定番の調査もお試しいただけると。
    ※制作したものが悪いのか判断するため

    # こちらもエラーが出ればまだ色々言えたと思うのですが
    # 無事動いてしまったので・・・すいません。
  • okie1jp
    okie1jp Member Posts: 107
     asahideさん、相変わらず速攻ですね。

     残念ながら、これでもダメでした。
     確かに、メモリ周りなので、この環境特有の症状かもしれませんね(メモリ周りはギリギリまでSGAにまわしていますので)。

     で、本番環境で試そうとしたら、サーバ専用機なので元々Excelなんか入っていませんから(一応、わたしが管理しているサー
    バなのですが、リスナの再起動が必要なので、ドッキドキ)、ドライバが無いため、MSのAccessDatabaseEngineのインストール
    からやる羽目になり、しかも、最初は32bit版しか見つからず(インストールは出来ますが使えません)、やっと64bit版を見つけ
    て、ドライバ自体は使えるようになったんですが…。

     今度は「ORA-28545: エージェントへの接続時に、Oracle Netによってエラーが診断されました。」で、肝心のExcelファイルが
    繋がりません(^^;。

     テスト環境でも似た状況に陥って、色々いじっていたら動いたので、もう少しがんばってみますが、挫けそう。
  • okie1jp
    okie1jp Member Posts: 107
     tmtsmicさん

     ありがとうございます。
     メモリのエラーはこの試行環境固有の問題のようですね。

     とりあえず、↑にもありますように、現在は本番環境で試行しています。
     もう少し、あがいてみます。
  • okie1jp
    okie1jp Member Posts: 107
    edited Apr 4, 2013 9:54PM
     お世話になります。

     まさかと思って、<ORACLE_HOME>\binの中を見たら、64bit版の本番環境にhsodbc.exeがありませんでした…。
     64bit版のGeneric Connectivityは11.2からサポートされているようですね。

     ORACLEで直接取り込むのは諦めて、CSVに吐き出し(を、自動バッチ処理でやってくれる日立製の別システムが
    あるので)、SQL*Loaderで取り込む方法を考えます。
     2段構えになるので、連携タイミングなどがかなり面倒ですが…。

     レスを下さった皆さん、ありがとうございます。
  • tmtsmic
    tmtsmic Member Posts: 120
    >64bit版の本番環境にhsodbc.exeがありませんでした…。
    10.2.0.5 (64bit)の環境をちょろっと覗いてきたのですが
    確かにbinの下にありませんでしたね。( ̄0 ̄;)
    # inithsodbc.oraはあるんですがね・・・
     
     
    ちなみに余談ですが
    >64bit版のGeneric Connectivityは11.2からサポートされているようですね。
    11gではDatabase Gateway for ODBCというものを使いますね。
    #名称変更したんだったかな?ちょっとその辺の記憶が・・・

    10gの場合は「hsodbc」ですが、11gでは「dg4odbc」となります。
    設定の面ではほぼ同じで、hsodbcと書くかdg4odbcくらいの違いです。
    #プロセス名も変わります
     
     
    okie1jp さんは既にご存じの話かとは思いますが、
    他の閲覧者の方々のために補足として書かせていただきました。
  • okie1jp
    okie1jp Member Posts: 107
    tmtsmicさん

     フォローありがとうございます。
     Generic Connectivityのサポート自体も当初はWindowsだけだったり、色々環境特有の困った縛り
    が多かったようですね。
     inithsodbc.oraはテキスト・ファイルなので、ほったらかしになっていたんじゃないでしょうか(^^;。
     32bit版のhsodbc.exeが64bit環境で動いたら大笑いですが、リスナの設定なども全部元に戻してし
    まったので、いまさら試す気はないですけどね(稼働中のDB上でサポート外の冒険はリスキーですし)。
This discussion has been closed.