• 締切済み

「ORA-6413 接続がオープンしていません」 エラーについて

VB6.0で開発したアプリ内でPro*Cプログラムを Shell関数でCALLしてOracle8iデータベース環境に 接続しようとしていますが、Pro*Cプログラム内の CONNECT命令で"ORA-6413 接続がオープンしていません。"が返され、接続できません。 (Pro*Cコンパイル時のNetのバージョンもマシン環境と合わせてあります) どなたか解決策お持ちの方、教えて頂けないでしょうか。よろしくお願いします。 なお、この処理は以前は全く問題なく動いていたのですが、 突然接続エラーが出るようになってしまいました。 ※コーディングは下記のようにしています。 (VB) 変数1 = Shell(PRO*C.exe 接続情報(id/ps@Host) 引数2 引数3 引数4 引数5 引数6 引数7) (Pro*C ちょっと見にくいですが。。) int DBConnect( 接続情報 )     char *接続情報 ; { strcpy( (char *)変数.arr, 接続情報 ) ; 変数.len = strlen( (char *)変数.arr ) ; EXEC SQL CONNECT :変数 ; return(0) ; sqlerr: warning: Err_Print( sqlca.sqlerrm.sqlerrmc ) ; ←Connectでエラーとなりここに飛んでます。Err_Print内でテキストにエラーメッセージを吐いてます return(-1) ; }

みんなの回答

  • trasan
  • ベストアンサー率0% (0/0)
回答No.5

先ほど同様の問題が発生し、 検索してここにたどり着きました。 (前は動いていたのに動かなくなった) 原因はEXE名にカッコが入っていたからでした。 →EXE名を変えると動作しました。 EXE名もoracleに送信されるので 使ってはマズイ文字が入ったEXE名だと 接続できなくなるからです。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.4

>ちなみに他のPCではありませんが、他のPro*Cexeは同じ接続文字列で接続できて動いてます。 じゃぁ、一番先に思いつくのは動かないPro*Cのexeが悪いってことですよね。 他に何が考えられますか? exeの引数の処理の仕方が間違ってるだけのような気もしますけど。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

>しかし、DOS窓上でVBコーディングと同じようにPro*C.exeを起動すると >VBから実行したのと同じ結果となってしまいます。 >(つまり、VBからの引数のid/pass@HOSTでPro*C内でCONNECT命令を発行すると接続できないということです) もうひとつ確認ポイントを挙げていたんですけど。 >・他のPCでPro*Cのexeをコマンドプロンプトから起動して動作するか?

chotaihen
質問者

補足

現在、すぐには他のPCが準備できないので問題のEXEを他PCで試すことができません。 ちなみに他のPCではありませんが、他のPro*Cexeは同じ接続文字列で接続できて動いてます。

noname#85336
noname#85336
回答No.2

この部分が気になりますが、SQL Plusでは接続できますか? >なお、この処理は以前は全く問題なく動いていたのですが、 >突然接続エラーが出るようになってしまいました。

chotaihen
質問者

補足

補足が遅くなり申し訳ありません。 SQL PlusではVBコーディング内のid/passで接続できます。 しかし、DOS窓上でVBコーディングと同じようにPro*C.exeを起動するとVBから実行したのと同じ結果となってしまいます。(つまり、VBからの引数のid/pass@HOSTでPro*C内でCONNECT命令を発行すると接続できないということです) 引き続きのフォロー、お願いします。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

まず、問題の切り分けが必要。 ・Pro*Cのexeをコマンドプロンプトから起動して動作するか?(同じPC上で) するんでしたらVBからの呼び方が悪いってことに。 しないんだったら、 ・他のPCでPro*Cのexeをコマンドプロンプトから起動して動作するか? これで切り分けはできるんじゃないですか?