付録B システムコールのリターンコード

代表的なシステムコールのリターンコードに対する原因と対策を次の表に示します。表にないエラーについては,使用しているOSのマニュアルを参照してください。

なお,特に断り書きがないかぎりHP-UXでのerrnoを記載しています。

主なシステムコールについてだけ記述しているので,正確に調べる場合には,メッセージで表示されたerrnoの値の該当するニモニックを,使用しているOSのerrno定義ファイル(HP-UX,およびSolarisの場合は/usr/include/sys/errno.h,WindowsおよびVisual C++の場合はヘッダーerrno.hに定義されている内容)で調べてください。さらに,エラーとなったシステムコールについてマニュアルで調べて,該当するニモニックのエラーが返った原因を特定してください。

表B-1 システムコールのリターンコードに対する原因と対策

システムコールerrnoニモニック考えられる主な原因対策
fork11EAGAINプロセスの数が多過ぎるか,一時的なメモリー不足が発生しています。再度実行しても繰り返し発生する場合は,不要なプロセスを停止させてください。
12ENOMEM次のどちらかの原因が考えられます。
  • スワップ領域または仮想メモリー不足のため,プロセスを新しく生成できません。
  • プロセスの数が多過ぎるか,または一部のプロセスが大量のメモリーを消費しています。
スワップ領域または仮想メモリーが足りない場合は,拡張してください。
これらを拡張できない場合は,不要なプロセスを停止させてください。
一部のプロセスが大量のメモリーを消費している場合は,該当するプロセスをいったん停止できないか検討してください。
malloc12ENOMEM次のどちらかの原因が考えられます。
  • スワップ領域または仮想メモリー不足でプロセス固有メモリーを確保できません。
  • プロセスの数が多過ぎるか,または一部のプロセスが大量のメモリーを消費しています。
スワップ領域または仮想メモリーが足りない場合は,拡張してください。
これらを拡張できない場合は,不要なプロセスを停止させてください。
一部のプロセスが大量のメモリーを消費している場合は,該当するプロセスをいったん停止できないか検討してください。
22EINVALメモリー管理情報の不正を検知しました。保守員に連絡してください。
mkdir13EACCESSアクセス権限が不正です。組み込みDB運用ディレクトリ下の,ファイルに対するアクセス権限が正しいか確認してください。
28ENOSPCファイルシステムに十分な空き領域がありません。空き領域を確保してください。
msgget28ENOSPCmsgmni(メッセージキュー識別子数)の指定値が小さいです。
Windowsの場合,インストールドライブの容量,または使用リソース数が不足しています。
msgmniの該当するサーバマシン内で稼働する,全プログラムの所要量を見積もり,指定値を変更したあとに該当するサーバマシンを再起動してください。
Windowsの場合,インストールドライブに,共用メモリーサイズ以上の空き容量を確保してください。
msgrcv22
36
EINVAL
EIDRM
組み込みDBが使用するメッセージキューが削除されました。
Windowsの場合,組み込みDB稼働中に,組み込みDBのインストールディレクトリ下の作業ファイルを削除したおそれがあります。
組み込みDBが異常終了していなければ,強制停止してください。その後,該当するサーバマシンを再起動してください(Windowsの場合,組み込みDBのサービスを再度開始してください)。
msgsnd11EAGAINmsgmni(メッセージキュー識別子の数),またはmsgtql(メッセージ数)の指定値が小さいです。msgmni,msgtqlの該当するサーバマシン内で稼働する,全プログラムの所要量を見積もり,指定値を変更したあとに該当するサーバマシンを再起動してください。
22EINVAL組み込みDBが使用するメッセージキューが削除されました。組み込みDBが異常終了していなければ,強制停止してください。その後,該当するサーバマシンを再起動してください。
open2ENOENTファイル,またはディレクトリが見つかりません。
KFPO00107-Eメッセージの呼び出しモジュールにlogblib.cが出力されている場合は,メッセージテキストファイルが見つかりません。その場合,現在使用していない組み込みDBがOSに登録されている可能性があります。
現在使用していない組み込みDBをajsembdbunsetコマンドで削除してください。
6ENXIOファイルに対するアクセス権がありません。デバイスが存在するか,またデバイスが有効化しているかどうかを確認してください。デバイスが有効化されていない場合は有効化してください。それ以外の原因の場合は,使用しているOSのマニュアルを参照し対策してください。
13EACCESファイルに対するアクセス権がありません。
  • 対象とするファイル,ディレクトリ,または組み込みDB運用ディレクトリの権限を見直してください。
  • 対象とするファイル,ディレクトリ,または組み込みDB運用ディレクトリに対して,実行者がアクセス権限を持っているか確認してください。
17EEXIST作成しようとしたファイルはすでに存在します。ファイル名を変更して再度実行するか,または既存のファイルが不要であれば,削除してから再度実行してください。
23ENFILEファイルのオープン数がシステムの上限を超えました。
Windows版の場合,インストールドライブの容量が不足しています。
OSのオペレーティングシステムパラメタ(カーネルパラメタ)の,システムでオープンできるファイル最大数(HP-UXの場合はnfile,AIX 5Lの場合はmaxuproc*nofiles*固定ライセンス数,Linuxの場合はNR_FILEまたはfs.file-max)の指定値を大きくしてください。また,不要なプロセスやウィンドウがありましたら停止してください。
Windows版の場合,インストールドライブに,共用メモリーサイズ以上の空き容量を確保してください。
24EMFILE該当するプロセスでオープンしているファイル数が多過ぎます。
Windows版の場合,インストールドライブの容量が不足しています。
OSのオペレーティングシステムパラメタ(カーネルパラメタ)の,プロセスでオープンできるファイル数の最大(HP-UXの場合はmaxfiles,Solarisの場合はrlim_fd_cur,AIX 5Lの場合はnofiles,Linuxの場合はINR_OPEN)の値を大きくしてください。Windows版の場合,インストールドライブに,共用メモリーサイズ以上の空き容量を確保してください。
999ENOENTWindowsの場合,組み込みDBの作業ファイルが破壊されているおそれがあります。組み込みDBが停止しているのを確認してから,次に示すファイルをすべて削除して回復してください。
ただし,4以降のファイルはないことがあります。
  1. 組み込みDB運用ディレクトリ¥uxpldir¥spool¥system¥filmng.dat
  2. 組み込みDB運用ディレクトリ¥uxpldir¥spool¥system¥flg.dat
  3. 組み込みDB運用ディレクトリ¥uxpldir¥spool¥system¥shmmng.dat
  4. 組み込みDB運用ディレクトリ¥spool¥~pdatmode
  5. %PDDIR%¥spool¥~pdipcid
  6. 組み込みDB運用ディレクトリ¥spool¥oslmqid
  7. 組み込みDB運用ディレクトリ¥spool¥oslsmid
  8. 組み込みDB運用ディレクトリ¥spool¥pdprcsts
  9. 組み込みDB運用ディレクトリ¥spool¥scdqid1
  10. 組み込みDB運用ディレクトリ¥spool¥scdqid2
  11. 組み込みDB運用ディレクトリ¥tmp¥pdommenv
  12. 組み込みDB運用ディレクトリ¥uxpldir¥spool¥shm下の全ファイル
  13. 組み込みDB運用ディレクトリ¥uxpldir¥spool¥system¥semmng.dat
  14. 組み込みDB運用ディレクトリ¥uxpldir¥spool¥system¥msgmng.dat
これらのファイルを削除したあとに組み込みDBを開始する場合,エクスプローラなどの他アプリケーションで組み込みDB運用ディレクトリ¥tmpにアクセスしたままの状態で,組み込みDBを開始しないでください。
semget28ENOSPCsemmni(セマフォ識別子の数),またはsemmns(システム内のセマフォ数)の指定値が小さいです。
Windowsの場合,インストールドライブの容量が不足しています。
semmni,およびsemmnsの該当するサーバマシン内で稼働する,全プログラムの所要量を見積もり,指定値を変更したあとに該当するサーバマシンを再起動してください。
Windowsの場合,インストールドライブに,共用メモリーサイズ以上の空き容量を確保してください。
semop22EINVAL組み込みDBが使用するセマフォが削除されました。
Windowsの場合,組み込みDB稼働中に,組み込みDBのインストールディレクトリ下の作業ファイルを削除したおそれがあります。
組み込みDBが異常終了していなければ,強制停止してください。その後,該当するサーバマシンを再起動してください(Windowsの場合,組み込みDBのサービスを再開始してください)。
shmat12ENOMEM次のどれかの原因が考えられます。
  1. 使用できるリソース数が不足しています。共用メモリーをアタッチするプロセスの空間内に連続した空き領域を確保できない場合を含みます。
  2. Windowsの場合,Windowsのレジストリーを参照中にエラーが発生しました。
  3. Windowsの場合,組み込みDBのサービスが開始されていません(共用メモリーをページングファイルに割り当てている場合)。
  1. メモリーを確保して再実行してください。
  2. Windowsのレジストリーが破損しているおそれがあります。この場合,保守員に連絡してください。
  3. 組み込みDBのサービスが開始状態か確認してください。組み込みDBのサービスが停止状態の場合は,サービスを開始してください。
22EINVAL組み込みDBの共用メモリーがありません。
OS起動完了前(/etc/rc実行中)にコマンドを実行したことが考えられます。
Windowsの場合,組み込みDB稼働中に,組み込みDBのインストールディレクトリ下の作業ファイルを削除したおそれがあります。
または,組み込みDBの起動が完了していない状態でコマンドを実行したことが考えられます。
OS起動完了前にコマンドを実行したのであれば,OSの起動完了を待って再度コマンドを実行してください。組み込みDBが起動完了していない場合は,組み込みDBの起動が完了してからコマンドを実行してください。
Windowsの場合,組み込みDBが異常終了していなければ,強制停止してください。その後,組み込みDBのサービスを再開始してください。
shmdt12ENOMEMWindowsの場合,次のどちらかの原因が考えられます。
  • Windowsのレジストリーを参照中にエラーが発生しました。
  • 組み込みDBのサービスが開始されていません(共用メモリーをページングファイルに割り当てている場合)。
  • Windowsのレジストリーが破損しているおそれがあります。この場合,保守員に連絡してください。
  • 共用メモリーをページングファイルに割り当てている場合,組み込みDBのサービスが開始状態か確認してください。組み込みDBのサービスが停止状態の場合は,サービスを開始してください。
shmctl1EPERMオーナーではないので共用メモリーを処理できません。KFPO00107-Eメッセージが出力されている場合は,そのメッセージを参照してください。
12ENOMEMWindowsの場合,次のどちらかの原因が考えられます。
  • Windowsのレジストリーを参照中にエラーが発生しました。
  • 組み込みDBのサービスが開始されていません(共用メモリーをページングファイルに割り当てている場合)。
  • Windowsのレジストリーが破損しているおそれがあります。この場合,保守員に連絡してください。
  • 組み込みDBのサービスが開始状態か確認してください。組み込みDBのサービスが停止状態の場合は,サービスを開始してください。
shmget12ENOMEMUNIXの場合,要求されたサイズの共用メモリーを確保するだけのメモリー量がサーバマシンにはありません。
Windowsの場合は表B-2を参照してください。
UNIXの場合,サーバマシンのメモリー使用量を減らしてください。または,OSの実メモリーを増やしてください。
Windowsの場合は表B-2を参照してください。
22EINVALUNIXの場合,獲得しようとした共用メモリーのサイズが,OSのオペレーティングシステムパラメタ(カーネルパラメタ)のshmmaxの指定値を超えました。
Windowsの場合,組み込みDB稼働中に,組み込みDBのインストールディレクトリ下の作業ファイルを削除したおそれがあります。
UNIXの場合,OSのオペレーティングシステムパラメタ(カーネルパラメタ)のshmmaxの指定値を大きくしてください。指定を変更したあとに該当するサーバマシンを再起動してください。
組み込みDBサーバがWindows版の場合,組み込みDBが異常終了していなければ,強制停止してください。その後,組み込みDBのサービスを再開始してください。
28ENOSPCUNIXの場合,共用メモリー識別子の数がOSの上限値を超えました。
Windowsの場合,インストールドライブの容量が不足しています。Windowsの場合,組み込みDBサーバがWindows版の場合,インストールドライブの容量が不足しています。また,共用メモリーとしてページングファイルを割り当てている場合は,組み込みDBのサービスが共用メモリーを管理するためのプロセス固有メモリーが不足していることが考えられます。
UNIXの場合,次に示す項目の中で対処できることを一つ以上してください。
  • 同一マシン上にある共用メモリーセグメント数を減らしてください。
  • OSのオペレーティングシステムパラメタ(カーネルパラメタ)のshmmniの指定値を大きくしてください。
Windowsの場合,インストールドライブに,共用メモリーサイズ以上の空き容量を確保してください。
また,共用メモリーとしてページングファイルを割り当てている場合は,システム全体のメモリーの最大使用量を確認して,物理メモリーまたはページングファイルを拡張してください。
write5EIO入出力エラーが発生しました。OSやハードウェアの情報に従って対策してください。
14EFAULTアクセスできない領域に書き込みしようとしました。書き込みしようとしたディスクが切り離されたおそれがあります。系切り替えに伴うディスクの切り替え中の場合は,問題ありませんので無視してください。組み込みDB稼働中に誤ってディスクを切り離してしまった場合は,該当するファイルをバックアップから回復するか,初期化してから使用してください。それ以外の場合は,保守員に連絡してください。
27EFBIGファイルの大きさがシステム制限値を超えました。組み込みDBシステム管理者,およびルートユーザーでのファイルサイズの制限値を組み込みDBシステムで使用するファイルより大きく,または無制限に変更してください。または使用するファイルサイズを小さくしてください。
28ENOSPCファイルシステムに十分な領域がありません。空き領域を確保してください。
abort,creat,
execl,execle,
execlp,execv,
execvp,fopen,
fork,gethostbyaddr,gethostbyname,mmap,msgctl,msgget,msgrcv,msgsnd,open,
read,readv,
select,semctl,
semget,semop,shmat,
shmctl,shmdt,
shmget,signal,sigrelse,sigset,sigsetmask,sigvector,stat,system,write,writevなど
22EINVALWindows版の場合,メモリー不足が考えられます。Windows版の場合,次に示す項目の中で対処できることをしてください。
  • サーバマシン内のデータベースの総容量を減らしてください。
  • システムの仮想メモリーの初期サイズと最大サイズを同じ値(固定値)にしてください。

表B-2 shmgetでエラーが発生した場合の対処方法(Windowsの場合)

共用メモリーの割り当て場所要因確認方法対処方法
ファイルの場合インストールディスクの空き容量が不足している場合組み込みDBをインストールしたドライブに,十分な空き容量があるかを確認してください。空き容量が少ないときは,不要なファイルを削除してください。
仮想メモリーの初期値と最大値の指定が異なるため,ディスクページングファイルを配置したディスクに空き容量がない場合ディスクページングファイルを配置したディスクに空き容量があるかを確認してください。ディスクに空き容量がないときは,仮想メモリーを再配置してください。仮想メモリーを再配置するときは,ドライブに連続した領域を作成するように,初期サイズと最大サイズを同じ値(固定値)にしてください。
メモリーが不足している場合メモリーの使用量を確認してください。仮想メモリーを拡張または再配置してください。仮想メモリーを拡張または再配置するときは,ドライブに連続した領域を作成するように,初期サイズと最大サイズを同じ値(固定値)にしてください。
ページングファイルがあるディスクに十分な空き容量があるかを確認してください。仮想メモリーに拡張が必要ならば拡張してください。このとき,仮想メモリーの指定値は,初期値と最大値を同じ値に指定してください。
ページングファイルの場合インストールディスクの空き容量が不足している場合組み込みDBをインストールしたドライブに,十分な空き容量があるかを確認してください。空き容量が少ないときは,不要なファイルを削除してください。
仮想メモリーの初期値と最大値の指定が異なるため,ディスクページングファイルを配置したディスクに空き容量がない場合ディスクページングファイルを配置したディスクに空き容量があるかを確認してください。ディスクに空き容量がないときは,仮想メモリーを再配置してください。仮想メモリーを再配置するときは,ドライブに連続した領域を作成するように,初期サイズと最大サイズを同じ値(固定値)にしてください。
メモリーが不足している場合メモリーの使用量を確認してください。仮想メモリーを拡張または再配置してください。仮想メモリーを拡張または再配置するときは,ドライブに連続した領域を作成するように,初期サイズと最大サイズを同じ値(固定値)にしてください。
ページングファイルがあるディスクに十分な空き容量があるかを確認してください。仮想メモリーに拡張が必要ならば拡張してください。このとき,仮想メモリーの指定値は,初期値と最大値を同じ値に指定してください。
組み込みDBのサービスが開始していない場合組み込みDBのサービスが開始状態かどうかを確認してください。組み込みDBのサービスが停止状態のときはサービスを開始してください。