カテゴリー「プログラミング」の6件の記事

2009年5月 2日 (土)

CSEでPostgreSQLでlibpq.dllエラー

いつも便利に使っているCSE(Common SQL Environment)でPostgresSQLに接続しようとしたところlibpq.dllがエラーだという。
PostgresSQLはWindows版の8.36を新しく入れたのが問題だったようだ、libpq.dllが更新されてしまうとダメになるらしい。
byplayerさんが作っていくれたlibpq.dllを入れることによって接続できるようになりました。

助かりました、ありがとうございます。


| | コメント (0) | トラックバック (0)

2008年11月 9日 (日)

Pro*C で ORA-24909発生

Pro*Cで作成プログラムを実行していたところ、 ORA-24909 が発生しました。

メッセージを確認すると
 ORA-24909: コールが進行中です。 現在の操作は取り消されました
  原因: 接続された別のコールが進行中に、OCIコールが呼び出されました。
  処置: コールが特別な状態で進行中の場合(たとえば、シグナル・ハンドラに使用されている場合など)に
      OCIコールがサポートされるかどうかを確認してください。

よく分かりません。

ログをみると、カーソルのフェッチをかけている瞬間に、UPDATEを動かしたような動かさないような・・・
というか、1度きりで再現しないのです。

英語のサイトですが、Oracle10.2.0.1のバグと書いてあるっぽいし・・・
http://www.dbmotive.com/oracle_error_codes.php?errcode=24909

ということで、様子見

| | コメント (0) | トラックバック (0)

Solaris 10 ホスト名の変更方法

HULFT 7 の評価版を試すことになったのだが、Solarisのホスト名をあろうことか「 test 」に変更しないといけない。
HULFTのインストール時にプロダクトキーとホスト名でチェックをしているらしく、この名前でないと導入すらすることができないのだ。

ということで変更方法。
1.スーパーユーザーになる。 su -
2.以下のファイルに書いてあるホスト名の変更
 /etc/nodename
  /etc/hostname.[xxx]interface  [xxx] はインターフェース名
  /etc/inet/hosts
3.次にいかのディレクトリの名前を変更
  /var/crash/[ホスト名]  [ホスト名]のディレクトリを mv コマンドで新しいホスト名に変更する
4.リブート!

これであなたのSolaris10 にも HULFTの評価版が入れられます!

| | コメント (0) | トラックバック (0)

2008年10月31日 (金)

Oracle Pro*C で fork exec waitpid

いやーはまりました。
先週から悩んでいたなぜか waitpid が -1 になってしまう問題が解決しました。

01|  main(){
02|    Oracle コネクト
03|     :
04|   pid = fork()
05|   if ( pid == 0 ) {
06|       // 子プロセス
07|       exec( ほげほげ);
08|    } else {
09|       //親プロセス
10|       ret = waitpid (pid, &status , 0);  //子の終了まで待つ
11|    }
12|  }

この例だと10行目のret = waitpid (pid, &status , 0); が ret = -1; になってしまうんです。
結論から言うと 2行目のOracleコネクトした後( forkする前)に以下を入れると waitpid の戻り値が正しくとれて、statusにも終了コードまたはシグナルがとれるようになります。

signal(SIGCHLD, SIG_DFL);

どうやら、Oracle Pro*C でも内部的に forkを行っている模様で、それが悪さをしているようです。
おかげで、昨日会社に泊まってしまいました。。。

| | コメント (0) | トラックバック (0)

2008年10月19日 (日)

Oracle 10g の dbstart シェル

Solaris 10にOracle 10gをインストールして自動起動をさせようと思ったが、なぜかdbstartが異常終了してしまう。(`COUNT=$'がダメとか)

普通にtelnetでログインし、dbstartシェルを起動するとうまくDBが起動できる。
いろいろ調べてるうちにdbstartの先頭にシェルの指定が無いことが判明。

#!/bin/bash を先頭に追加することにより無事に自動起動できるようになりました。
dbshutも同様にシェルの指定が無かったので追加。

こんなんで2時間くらい悩んでしまいますた・・・

| | コメント (0) | トラックバック (0)

2008年9月11日 (木)

シリアライズ可能クラス xxxxx は long 型の static final serialVersionUID フィールドを宣言していません。

シリアライズ可能クラス xxxx は long 型の static final serialVersionUID フィールドを宣言していません。

の対処方法、Eclipse 上で該当行の左端のビックリを押すか、Ctrl + 1を押す。
Java1
こんな画面がでるので、「生成シリアル・バージョンIDの追加」を選択する。






するとコードに「private static final long serialVersionUID = -5886252748708459158L;」なのが追加されて警告がなくな
ります。

他の方のブログなどで、Eclipseの設定で警告を無視してしまうように書いてあるところがありましたが、将来的にはまずいでしょう。
今のウチから正しい対処をしたほうがよいですよ!

| | コメント (0) | トラックバック (0)