付録B システムコールのリターンコード
代表的なシステムコールのリターンコードに対する原因と対策を次の表に示します。表にないエラーについては,使用しているOSのマニュアルを参照してください。
なお,特に断り書きがないかぎりHP-UXでのerrnoを記載しています。
主なシステムコールについてだけ記述しているので,正確に調べる場合には,メッセージで表示されたerrnoの値の該当するニモニックを,使用しているOSのerrno定義ファイル(HP-UX,およびSolarisの場合は/usr/include/sys/errno.h,WindowsおよびVisual C++の場合はヘッダerrno.hに定義されている内容)で調べてください。さらに,エラーとなったシステムコールについてマニュアルで調べて,該当するニモニックのエラーが返った原因を特定してください。
システムコール |
errno |
ニモニック |
考えられる主な原因 |
対策 |
---|---|---|---|---|
fork |
11 |
EAGAIN |
プロセスの数が多過ぎるか,一時的なメモリー不足が発生しています。 |
再度実行しても繰り返し発生する場合は,不要なプロセスを停止させてください。 |
12 |
ENOMEM |
次のどちらかの原因が考えられます。
|
スワップ領域または仮想メモリーが足りない場合は,拡張してください。 これらを拡張できない場合は,不要なプロセスを停止させてください。 一部のプロセスが大量のメモリーを消費している場合は,該当するプロセスをいったん停止できないか検討してください。 |
|
malloc |
12 |
ENOMEM |
次のどちらかの原因が考えられます。
|
スワップ領域または仮想メモリーが足りない場合は,拡張してください。 これらを拡張できない場合は,不要なプロセスを停止させてください。 一部のプロセスが大量のメモリーを消費している場合は,該当するプロセスをいったん停止できないか検討してください。 |
22 |
EINVAL |
メモリー管理情報の不正を検知しました。 |
システム管理者に連絡してください。 |
|
mkdir |
13 |
EACCESS |
アクセス権限が不正です。 |
組み込みDB運用ディレクトリ下の,ファイルに対するアクセス権限が正しいか確認してください。 |
28 |
ENOSPC |
ファイルシステムに十分な空き領域がありません。 |
空き領域を確保してください。 |
|
msgget |
28 |
ENOSPC |
msgmni(メッセージキュー識別子数)の指定値が小さいです。 Windowsの場合,インストールドライブの容量,または使用リソース数が不足しています。 |
msgmniの該当するサーバマシン内で稼働する,全プログラムの所要量を見積もり,指定値を変更したあとに該当するサーバマシンを再起動してください。 Windowsの場合,インストールドライブに,共有メモリーサイズ以上の空き容量を確保してください。 |
msgrcv |
22 36 |
EINVAL EIDRM |
組み込みDBが使用するメッセージキューが削除されました。 Windowsの場合,組み込みDB稼働中に,組み込みDBのインストール先ディレクトリ下の作業ファイルを削除したおそれがあります。 |
組み込みDBが異常終了していなければ,強制停止してください。その後,該当するサーバマシンを再起動してください(Windowsの場合,組み込みDBのサービスを再度開始してください)。 |
msgsnd |
11 |
EAGAIN |
msgmni(メッセージキュー識別子の数),またはmsgtql(メッセージ数)の指定値が小さいです。 |
msgmni,msgtqlの該当するサーバマシン内で稼働する,全プログラムの所要量を見積もり,指定値を変更したあとに該当するサーバマシンを再起動してください。 |
22 |
EINVAL |
組み込みDBが使用するメッセージキューが削除されました。 |
組み込みDBが異常終了していなければ,強制停止してください。その後,該当するサーバマシンを再起動してください。 |
|
open |
2 |
ENOENT |
ファイル,またはディレクトリが見つかりません。 メッセージKFPO00107-Eの呼び出しモジュールにlogblib.cが出力されている場合は,メッセージテキストファイルが見つかりません。その場合,現在使用していない組み込みDBがOSに登録されているおそれがあります。 |
現在使用していない組み込みDBをajsembdbunsetコマンドで削除してください。 |
6 |
ENXIO |
ファイルに対するアクセス権がありません。 |
デバイスが存在するか,またデバイスが有効化しているかどうかを確認してください。デバイスが有効化されていない場合は有効化してください。それ以外の原因の場合は,使用しているOSのマニュアルを参照し対策してください。 |
|
13 |
EACCES |
ファイルに対する権限がありません。 |
|
|
17 |
EEXIST |
作成しようとしたファイルはすでに存在します。 |
ファイル名を変更して再度実行するか,または既存のファイルが不要であれば,削除してから再度実行してください。 |
|
23 |
ENFILE |
ファイルのオープン数がシステムの上限を超えました。 Windows版の場合,インストールドライブの容量が不足しています。 |
OSのオペレーティングシステムパラメタ(カーネルパラメタ)の,システムでオープンできるファイル最大数(HP-UXの場合はnfile,AIX 5Lの場合はmaxuproc*nofiles*固定ライセンス数,Linuxの場合はNR_FILEまたはfs.file-max)の指定値を大きくしてください。また,不要なプロセスやウィンドウがありましたら停止してください。 Windows版の場合,インストールドライブに,共有メモリーサイズ以上の空き容量を確保してください。 |
|
24 |
EMFILE |
該当するプロセスでオープンしているファイル数が多過ぎます。 Windows版の場合,インストールドライブの容量が不足しています。 |
OSのオペレーティングシステムパラメタ(カーネルパラメタ)の,プロセスでオープンできるファイル数の最大(HP-UXの場合はmaxfiles,Solarisの場合はrlim_fd_cur,AIX 5Lの場合はnofiles,Linuxの場合はINR_OPEN)の値を大きくしてください。Windows版の場合,インストールドライブに,共有メモリーサイズ以上の空き容量を確保してください。 |
|
999 |
ENOENT |
Windowsの場合,組み込みDBの作業ファイルが破壊されているおそれがあります。 |
組み込みDBが停止しているのを確認してから,次に示すファイルをすべて削除して回復してください。 ただし,4以降のファイルはないことがあります。
これらのファイルを削除したあとに組み込みDBを開始する場合,エクスプローラなどの他アプリケーションで組み込みDB運用ディレクトリ\tmpにアクセスしたままの状態で,組み込みDBを開始しないでください。 |
|
semget |
28 |
ENOSPC |
semmni(セマフォ識別子の数),またはsemmns(システム内のセマフォ数)の指定値が小さいです。 Windowsの場合,インストールドライブの容量が不足しています。 |
semmni,およびsemmnsの該当するサーバマシン内で稼働する,全プログラムの所要量を見積もり,指定値を変更したあとに該当するサーバマシンを再起動してください。 Windowsの場合,インストールドライブに,共有メモリーサイズ以上の空き容量を確保してください。 |
semop |
22 |
EINVAL |
組み込みDBが使用するセマフォが削除されました。 Windowsの場合,組み込みDB稼働中に,組み込みDBのインストール先ディレクトリ下の作業ファイルを削除したおそれがあります。 |
組み込みDBが異常終了していなければ,強制停止してください。その後,該当するサーバマシンを再起動してください(Windowsの場合,組み込みDBのサービスを再開始してください)。 |
shmat |
12 |
ENOMEM |
次のどれかの原因が考えられます。
|
|
22 |
EINVAL |
組み込みDBの共有メモリーがありません。 OS起動完了前(/etc/rc実行中)にコマンドを実行したことが考えられます。 Windowsの場合,組み込みDB稼働中に,組み込みDBのインストール先ディレクトリ下の作業ファイルを削除したおそれがあります。 または,組み込みDBの起動が完了していない状態でコマンドを実行したことが考えられます。 |
OS起動完了前にコマンドを実行したのであれば,OSの起動完了を待って再度コマンドを実行してください。組み込みDBが起動完了していない場合は,組み込みDBの起動が完了してからコマンドを実行してください。 Windowsの場合,組み込みDBが異常終了していなければ,強制停止してください。その後,組み込みDBのサービスを再開始してください。 |
|
shmdt |
12 |
ENOMEM |
Windowsの場合,次のどちらかの原因が考えられます。
|
|
shmctl |
1 |
EPERM |
オーナーではないので共有メモリーを処理できません。 |
メッセージKFPO00107-Eが出力されている場合は,そのメッセージを参照してください。 |
12 |
ENOMEM |
Windowsの場合,次のどちらかの原因が考えられます。
|
|
|
shmget |
12 |
ENOMEM |
UNIXの場合,要求されたサイズの共有メモリーを確保するだけのメモリー量がサーバマシンにはありません。 Windowsの場合は表B-2を参照してください。 |
UNIXの場合,サーバマシンのメモリー使用量を減らしてください。または,OSの実メモリーを増やしてください。 Windowsの場合は表B-2を参照してください。 |
22 |
EINVAL |
UNIXの場合,獲得しようとした共有メモリーのサイズが,OSのオペレーティングシステムパラメタ(カーネルパラメタ)のshmmaxの指定値を超えました。 Windowsの場合,組み込みDB稼働中に,組み込みDBのインストール先ディレクトリ下の作業ファイルを削除したおそれがあります。 |
UNIXの場合,OSのオペレーティングシステムパラメタ(カーネルパラメタ)のshmmaxの指定値を大きくしてください。指定を変更したあとに該当するサーバマシンを再起動してください。 組み込みDBサーバがWindows版の場合,組み込みDBが異常終了していなければ,強制停止してください。その後,組み込みDBのサービスを再開始してください。 |
|
28 |
ENOSPC |
UNIXの場合,共有メモリー識別子の数がOSの上限値を超えました。 Windowsの場合,インストールドライブの容量が不足しています。Windowsの場合,組み込みDBサーバがWindows版の場合,インストールドライブの容量が不足しています。また,共有メモリーとしてページングファイルを割り当てている場合は,組み込みDBのサービスが共有メモリーを管理するためのプロセス固有メモリーが不足していることが考えられます。 |
UNIXの場合,次に示す項目の中で対処できることを一つ以上してください。
Windowsの場合,インストールドライブに,共有メモリーサイズ以上の空き容量を確保してください。 また,共有メモリーとしてページングファイルを割り当てている場合は,システム全体のメモリーの最大使用量を確認して,物理メモリーまたはページングファイルを拡張してください。 |
|
write |
5 |
EIO |
入出力エラーが発生しました。 |
OSやハードウェアの情報に従って対策してください。 |
14 |
EFAULT |
アクセスできない領域に書き込みしようとしました。書き込みしようとしたディスクが切り離されたおそれがあります。 |
系切り替えに伴うディスクの切り替え中の場合は,問題ありませんので無視してください。組み込みDB稼働中に誤ってディスクを切り離してしまった場合は,該当するファイルをバックアップから回復するか,初期化してから使用してください。それ以外の場合は,システム管理者に連絡してください。 |
|
27 |
EFBIG |
ファイルの大きさがシステム制限値を超えました。 |
組み込みDBシステム管理者,およびルートユーザでのファイルサイズの制限値を組み込みDBシステムで使用するファイルより大きく,または無制限に変更してください。または使用するファイルサイズを小さくしてください。 |
|
28 |
ENOSPC |
ファイルシステムに十分な領域がありません。 |
空き領域を確保してください。 |
|
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など |
22 |
EINVAL |
Windows版の場合,メモリー不足が考えられます。 |
Windows版の場合,次に示す項目の中で対処できることをしてください。
|
共有メモリーの割り当て場所 |
要因 |
確認方法 |
対処方法 |
---|---|---|---|
ファイルの場合 |
インストールディスクの空き容量が不足している場合 |
組み込みDBをインストールしたドライブに,十分な空き容量があるかを確認してください。 |
空き容量が少ないときは,不要なファイルを削除してください。 |
仮想メモリーの初期値と最大値の指定が異なるため,ディスクページングファイルを配置したディスクに空き容量がない場合 |
ディスクページングファイルを配置したディスクに空き容量があるかを確認してください。 |
ディスクに空き容量がないときは,仮想メモリーを再配置してください。仮想メモリーを再配置するときは,ドライブに連続した領域を作成するように,初期サイズと最大サイズを同じ値(固定値)にしてください。 |
|
メモリーが不足している場合 |
メモリーの使用量を確認してください。 |
仮想メモリーを拡張または再配置してください。仮想メモリーを拡張または再配置するときは,ドライブに連続した領域を作成するように,初期サイズと最大サイズを同じ値(固定値)にしてください。 |
|
ページングファイルがあるディスクに十分な空き容量があるかを確認してください。 |
仮想メモリーに拡張が必要ならば拡張してください。このとき,仮想メモリーの指定値は,初期値と最大値を同じ値に指定してください。 |
||
ページングファイルの場合 |
インストールディスクの空き容量が不足している場合 |
組み込みDBをインストールしたドライブに,十分な空き容量があるかを確認してください。 |
空き容量が少ないときは,不要なファイルを削除してください。 |
仮想メモリーの初期値と最大値の指定が異なるため,ディスクページングファイルを配置したディスクに空き容量がない場合 |
ディスクページングファイルを配置したディスクに空き容量があるかを確認してください。 |
ディスクに空き容量がないときは,仮想メモリーを再配置してください。仮想メモリーを再配置するときは,ドライブに連続した領域を作成するように,初期サイズと最大サイズを同じ値(固定値)にしてください。 |
|
メモリーが不足している場合 |
メモリーの使用量を確認してください。 |
仮想メモリーを拡張または再配置してください。仮想メモリーを拡張または再配置するときは,ドライブに連続した領域を作成するように,初期サイズと最大サイズを同じ値(固定値)にしてください。 |
|
ページングファイルがあるディスクに十分な空き容量があるかを確認してください。 |
仮想メモリーに拡張が必要ならば拡張してください。このとき,仮想メモリーの指定値は,初期値と最大値を同じ値に指定してください。 |
||
組み込みDBのサービスが開始していない場合 |
組み込みDBのサービスが開始状態かどうかを確認してください。 |
組み込みDBのサービスが停止状態のときはサービスを開始してください。 |