• 締切済み

「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) ; }

  • Oracle
  • 回答数5
  • ありがとう数11

みんなの回答

  • 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をコマンドプロンプトから起動して動作するか? これで切り分けはできるんじゃないですか?

関連するQ&A

  • カーソルオープンでエラー(ORA-01012)

    Pro*cの質問です。 CONNECTは成功したのですが、カーソルのオープンでエラーになります。 (ORA-01012:ログオンされていません。) 環境に問題があると考え、いろいろと調べているのですが、全く解りません。 自分側か、DB側の問題なのかどうかも、判断できていない状況です。 非常に困っております。どなたか御存知の方、御教授ください。 以下が動作環境になります。 WIN版: Windows2000,VC,Pro*C(8i),Net8,マルチスレッド UNIX版: Solaris8:ForteC,Pro*C(9i),Net8,64Bit,マルチスレッド 以上、情報が不足しているかも知れませんが、宜しくお願い致します。

  • ネットワーク接続のエラーにつきまして(VB6)

    ※2020/09/04 08:54の質問を誤って削除してしまいました。  再度、同じ質問といたしました。  大変、申し訳ありませんでした。 ネットワーク接続のエラーにつきまして(VB6) お世話になります。 プログラム:VB6 OS:Windows10 ネットワーク接続の起動でエラー5になります。 ncpa.cplのリンク先→C:\Windows\System32\ncpa.cpl ※エラー5(プロシージャの呼び出し、または引数が不正です)が良く分かりません。 ご教示願えますと幸いであります。 Private Sub Command1_Click() 'ネットワーク接続の起動 Dim Ret As Long Ret = shell("C:\Windows\System32\ncpa.cpl", vbNormalFocus)'※エラー5 End Sub

  • EXEで実行すると発生するORA:06413エラー

    VBからORACLEへ接続するプログラムを作っています。 VBのエディット画面から実行すると正常に動作するのですが、コンパイルを行いEXEから実行すると下記エラーが発生します。 「Fatal NI connect error 6413,」 以下のOpenDatabaseでエラーが発生しているところまでは突き止めたのですが なぜエラーとなるか、まったく検討がつきません。 Set objOr = CreateObject("OracleInProcServer.XOraSession") Set objDb = objOr.OpenDatabase(mstrSVN, mstrUID & "/" & mstrPWD, 0&) どんなささいな情報でもお持ちの方、よろしくお願いします。

  • メモリ確保エラー時の効率的な書き方

    mallocなどで複数の変数に対してメモリを確保する場合があると思います.例えば3つの変数の場合, char *a, *b, *c; a = (char *)malloc(100); if(a==NULL){ /* メモリ確保できなかったとき */ return (-1); } b = (char *)malloc(100); if(b==NULL){ free(a); return (-1); } c = (char *)malloc(100); if(c==NULL){ free(a); free(b); return (-1); } 変数が多くなるにつれて後から確保する変数のエラー処理(すでに確保したメモリのfree)が増えてしまうので,何か良い方法(コードが短くなるような)はないでしょうか?

  • fgetsでエラー

     C言語を勉強しているものです。 fgetsやfscanfで第一引数にダブルポインタ変数を用いるとエラーが出ます。 なぜそうなるんでしょうか? ダブルポインタだと不可能なんでしょうか? char **moji; FILE *fp; moji = (char**)malloc(sizeof(char*) * 128 * 256); fp = fopen("test.txt","r+"); fgets(moji[0], 26, fp); //ここでエラー mojiを[0]で指定してあげてもエラーなんでしょうか? fgetsだけでなくfscanfでもそうです。 どうしてそうなんるんでしょう?

  • エラー処理

    エラー処理について質問です。 私はどうもVBのエラー処理が頭についているせいか、Javaの例外処理等が面倒に見えてならないんです。 例えば下記はVBのエラー処理なんですが、引数を得て計算して値を返すというものなのですが、引数自体が間違えてたら意味ないということでチェックします。 色んなチェックをして1つでも間違えてたらVVV_ERRORに飛びます。 下記のように「桁数チェック」とか「数値か?」とか調べる場合、Javaだとどのようにして書いたらいいのでしょう? Javaならtry文に全部入れてしまえばいいのでしょうが… .....例 try { x = 10 / 5; y = 20 / 0; //エラー } catch ( ArithmeticException ex ) { System.out.println (" 0で割ることはできません"); .....略 要は下記VBのようにモジュールごとに独自のエラーコードが存在する場合、どうエラー処理を書いたらいいのかということです。 皆さんならどうしますか?よろしければご意見等お願い致します。 //////////////////////////////////////////////////////////////// public Function VVV(YYYYMMDD As String , Kotae As String) As String ...... vvv_err = "" On Error GoTo VVV_ERROR '***************引数チェック '8桁か? If Len(YYYYMMDD) <> 8 Then vvv_err = "8桁ではありません" GoTo VVV_ERROR End If '数値か? If IsNumeric(YYYYMMDD) = False Then vvv_err = "数値ではありません" GoTo VVV_ERROR End If .....略(同じようなIf文の引数チェックがたくさんあります) '***************ERROR処理 VVV_ERROR: vvv_err = vvv_err & err.Description & err.Number .....略

    • ベストアンサー
    • Java
  • PHPでのMySQL接続エラーについて

    PHPを使用してMySQLサーバに接続しようと思うのですが、どうしても "Warning: mysql_connect() [function.mysql-connect]: Can't connect to MySQL server on 'localhost' (10061) in C:\Server\Apache2.2\htdocs\htdocs\connect.php on line 2" と表示されて接続できません。いろいろ試してみたので、情報を列挙いたします。 動作環境 OS:WindowsXP Pro Apache2.2.8 PHP5.2.6 MySQL5.0 1.コマンドプロンプトからはMySQLに正常に入ることが可能です。 2.上記のエラーが出るPHPプログラムは以下の通りです。 "<?php %conn = mysql_connect("localhost", "root", "password"); ?> 3.phpMyAdminを使って接続しようとしても以下のエラーが出ます。 #2003 - サーバが応答しません" 4.セキュリティソフトを終了させて接続しても同様の症状でした。 5.phpinfo()関数は正常に動作し、mysqlやmysqliの情報も表示されます。 以上の内容ですが、よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • データベースのオープンエラーが発生

    WindowsVista SP1にてメニューから特定のプログラムを実行すると Accessデータベースのオープンにてエラーが発生します。 言語はVB6.0です。 メニューからShellExecute "runas"にて実行を行うとAccessデータベースのオープンにて 実行時エラー3051が発生します。 EXEをダブルクリックしたり、Shellにて実行した場合は正常にオープンされます。 lngLoadPgm = ShellExecute(0, "runas", "C:\WORK\TEST.EXE", "", vbNullString, 1)  NG lngLoadPgm = Shell("C:\WORK\TEST.EXE", vbNormalFocus)               OK 原因がまったくわかりません。 わかる方がいましたら教えて下さい。 よろしくお願いします。

  • ORA-01013のエラーについて経験のある方お願いします。

    こんにちは。 ORA-01013のエラーがでて困っています。 条件を絞り込んで件数が少ない場合には、 表示されますが、条件を緩めるとエラーとなります。 対象テーブルは1テーブル、17項目、特に大きい項目無し。 テーブル件数は約120万件 通常はvbからoo4oで利用していますが、 只今解析のためAccessでODBCにて接続しています。 この状況でエラーがでます。 環境: Oracle8 R8.1.7 サーバー windows2000Server クライアント windows2000Pro メモリ 261M(タスクマネージャー表示) Access2000 エラー内容は、 ODBC呼び出しが失敗しました。 ユーザーによってカレント操作の取り消しが要求されました。と言う事で、OracleでのORA-01013は情報のみのようです。 経験ある方のアドバイスをお願い致します。

  • androidのsocketエラー

    androidのソケット通信プログラムを作成しています。 何度もソケットの接続・切断を繰り返していると、以下のエラーが発生します。 Socket.connect メソッド(接続)で発生しています。 socketは毎回.closeメソッドで切断しています。 このようになると、端末を再起動しない限りソケット接続を再度行なうことはできない模様です。このエラーの発生理由がわかりません。お詳しい方おられましたら何卒よろしくお願いします。 ちなみに利用しているandroid端末はKYL21(京セラ androidバージョン4.0.4)です。 01-09 09:06:46.418: W/System.err(29936): java.net.ConnectException: failed to connect to /192.168.10.12 (port 50000): connect failed: ENOBUFS (No buffer space available) 01-09 09:06:46.418: W/System.err(29936): at libcore.io.IoBridge.connect(IoBridge.java:114) 01-09 09:06:46.418: W/System.err(29936): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192) 01-09 09:06:46.418: W/System.err(29936): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:460) 01-09 09:06:46.418: W/System.err(29936): at java.net.Socket.connect(Socket.java:838) 01-09 09:06:46.418: W/System.err(29936): at java.net.Socket.connect(Socket.java:791) 01-09 09:06:46.418: W/System.err(29936): at com.example.simple_test.Wifi_Service.Socket_Connect(Wifi_Service.java:2033) 01-09 09:06:46.428: W/System.err(29936): at com.example.simple_test.Wifi_Service$10.run(Wifi_Service.java:1938) 01-09 09:06:46.428: W/System.err(29936): Caused by: libcore.io.ErrnoException: connect failed: ENOBUFS (No buffer space available) 01-09 09:06:46.428: W/System.err(29936): at libcore.io.Posix.connect(Native Method) 01-09 09:06:46.428: W/System.err(29936): at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85) 01-09 09:06:46.428: W/System.err(29936): at libcore.io.IoBridge.connectErrno(IoBridge.java:127) 01-09 09:06:46.428: W/System.err(29936): at libcore.io.IoBridge.connect(IoBridge.java:112) 01-09 09:06:46.428: W/System.err(29936): ... 6 more