以下のリストから製品をお選び下さい。

 

FAQ-DataServer

nextlistnext

テーブル作成時の予想件数

西暦2000年対応

コンフィギュレーション・パラメータ推奨値

startdb時に表示される警告メッセージ

SQLハングアップ時の対応方法

DB稼動時、電源が切れた場合の対応方法

startdb時に、-59のエラーが発生

CLIENTINFOの既定値

埋め込み型SQLプログラムで、-2070のエラー発生

会話型SQLで大量レコードロード時の注意事項

RHLIで大量レコードロード時の注意事項

startdb実行時に、-9825のエラーが発生

-10656のエラー(一時ファイル書き込み不可)が発生

レコード登録時の既定のカラム値について

リンクインデックスの作成方法

カラム値として、数値をインクリメントに自動設定する方法

同一マシン上で複数DBを起動する方法

budbで作成したバックアップを使い、別マシン上でredb可能か

ACCELL/Netクライアント環境で、-180のエラーが発生

クライアント環境で、startdb/shutdbは可能か

クライアント環境でDDL操作は可能か

file.cfとfile.cfgの相違点

SQL問い合わせ時に、-10709のエラーが発生

Bツリーインデックス作成時、-10662、-37のエラーが発生

テーブルレコード登録時の性能改善策

dbld実行時、「キーがない」という内容のエラーが発生

サイズが増大したエラーログファイルの縮小方法

AMGR実行中に、-48(デバイスに空きなし)のエラーが発生

dbdmn立ち上げ時の、rcファイル編集方法

dbdmn実行時、-834のエラーが発生

-3(共有メモリ不十分)のエラー発生時の対応方法

テーブルに、予想件数を越えた行数を追加できるか

同一マシン上で、複数の親dbdmnの起動は可能か

データベースを複数ボリュームで管理する手順

データベースに新ボリュームを追加する手順

UNLIMIT設定のDBボリュームを制限付きに変更する方法

SQLのselect文でorder by句を使用するときの注意事項

SQLのselect文の出力結果から重複値を除く方法

データベースファイル(file.db)のサイズを縮小する方法

物理ログファイル(file.pl)のサイズを縮小する方法

データベース作成者以外でも、startdb/shutdb 実行可能か

マルチボリュームの作成方法

マルチボリュームの場合のデータの格納

ビューテーブルの検索パフォーマンス

uldでエラーが発生

SQL実行中にハングアップした場合、どう対応すべきか。
ハングアップした場合の対応は、以下の手順で行ないます。

以下がその例です。

SQL でボリュームを新しく作成
alter 文で、ボリュームの指定を変更

[1] ハングアップしているプロセスを killする。
注)ハングアップしたSQL等のプロセスを killする場合には、
   kill -15  これで killできない場合は 
         -3 
         -1 
              の順序で、行って下さい。
kill -9 で killを行うと DB が破壊される場合があります。

SQLなどのデータベースプロセスは更新時にロックのリストを内部で管理しています。これは、取得した順番でつながっていて開放する時もこの順序で開放します。
   row 1 --> row 2 --> row 3 ロック取得 
   
   row 1 <-- row 2 <-- row 3 ロック開放 
もし、この状態で kill -9 でプロセスが強制終了させられるとこのロックリストの情報がなくなってしまうので、これを開放させる事は出来ません。 また、コマンドラインからチェックする方法もありません。

したがって、取得しようとしたロックが dead process によって保持されている場合そのデータベースプロセスは -23 "記述されたプロセスIDを持ったプロセスがありません" のエラーを出力して終了する仕様になっています。 もし、そのデータベースプロセスがデーモンの場合、その時点でデータベースダウンにつながり SQL などが起動できなくなります。

dead process によって保持されているロックを参照しないプロセスはそのまま処理を続行できる場合もあります。
[2] 4つのデーモン(fmdmn,lgdmn,cmdmn,cldmn)を停止する。  
$ shutdb
[3] 共有メモリをクリーンナップする。
$ shmclean
[4] リカバリプロセスの実行
$irma
irmaを実行する時は、必ず            
     デーモンが動いていないとき  
     共有メモリが動いていないとき
である必要があります。
そのために 2、及び 3を実行後,行うことが原則です。
ただし、irmaを実行するときに,上記の2,及び 3が実行できないような状況 である場合は、かわりに以下を実行して下さい。
  1. デーモンのプロセスを(4つのデーモン、fmdmn lgdmn cmdmn cldmn )
       $ kill -3
           -3 で、消せない場合は -9  で終了させる。
  2. 共有メモリは、
        $ ipcrm    で消去する。
  3. その後、
        $irma     を実行する。
  4. file.lg が壊れている場合は、logの再作成を行う
    <方法>
       mv file.lg file.lg.sv
       mklog
  5. startdb