oracle 内部でのシグナルの扱いについて、以下の項目別に記述します。
シグナルは、Pro*C またはその他のプリコンパイラ・アプリケーションに影響します。
Oracle プロセスへの接続時に、SIGCLD (またはSIGCHLD )およびSIGPIPE に 1 つのシグナル・ハンドラをインストールできます。 osnsui()ルーチンを呼び出して設定すると、 複数のシグナル・ハンドラをSIGINT 用にインストールできます。
SIGINT の場合、 osnsui()およびosncui() を使用してシグナル受取りルーチンを登録および削除します。 その他のシグナルにも、シグナル・ハンドラをインストールできます。 Oracle プロセスに接続していない場合は、 複数のシグナル・ハンドラをインストールできます。
シグナル名 | 説 明 |
---|---|
SIGCLD |
Oracle プロセスが異常終了すると、
パイプ・ドライバはSIGCLD(SIGCHLD ともいいます)を使用します。
UNIX カーネルはユーザ・プロセスにSIGCLD シグナルを送ります。
サーバ・プロセスが異常終了しているかどうかを調べるには、
シグナル・ハンドラでwait()を使用します。
SIGCLD は、Oracle プロセスではなく、ユーザ・プロセスが受け取ります。 |
SIGCONT | パイプ 2 タスク・ドライバが、 アウトオブバンド・ブレークをユーザ・プロセスから Oracle プロセスへ送信する場合に、SIGCONT を使用します。 |
SIGINT |
2 タスク・ドライバが、ユーザの割込み要求を検出する場合に、
SIGINT を使用します。SIGCLD は、Oracle プロセスではなく、
ユーザ・プロセスが受け取ります。
ユーザが割込みキー([Ctrl]+[c])を押すと、このシグナルが送られます。 |
SIGIO | Net8 プロトコル・メソッドが、ネットワーク・イベントの着信を示すために、 SIGIO を使用します。 |
SIGPIPE | パイプ・ドライバが、通信チャネルでファイルの終わりを検出するために、 SIGPIPE を使用します。 パイプへの書込み時に、読取りプロセスが存在していなければ、 SIGPIPE シグナルが書込みプロセスに送信されます。 SIGPIPE は、Oracle プロセスおよびユーザ・プロセスが受け取ります。 SIGCLD はSIGPIPE と似ていますが、ユーザ・プロセスに適用され、 Oracle プロセスには適用されません。 |
SIGTERM |
パイプ・ドライバが、ユーザ側から Oracle
プロセスに割込みシグナルを送る場合に SIGTERM を使用します。
SIGTERM は、ユーザ・プロセスではなく、Oracle プロセスが受け取ります。 |
SIGURG |
Net8 TCP/IP ドライバが、
アウトオブバンド・ブレークをユーザ・プロセスから Oracle
プロセスへ送信する場合に、SIGURG を使用します。
oracle 8 と oracle 7 との Net8 接続でこのシグナルが使われています。 |
シグナル名 | 説 明 |
---|---|
SIGALRM |
タイマ管理機構を必要とするプロセスで使われています (setitimer(ITIMER_REAL,))。 具体的には、ディスク入出力を伴うプロセスです。 ora_dbwN,ora_lgwr,ora_pNNN,ora_sNNN,ora_ckpt,ora_snpN で使われていることを確認しました。 ora_snpN は 61 秒、その他は 3 秒ごとに送られています。 |