忍者ブログ
データベースエンジニアのための実践ブログ。Oracle・PostgreSQL・MySQLなどの環境構築、実行計画の読み方やチューニングといった現場で役立つノウハウ、DB基礎知識までを発信しています。

【問題形式で学ぶOracle】第6回:セッションの番人「PMON」!異常終了したプロセスを速やかに片付けるお掃除役

前回は、データベースの一貫性やクラッシュ・リカバリを担う重要プロセス「SMON」について学んだ。

今回は、それと対をなすもう一つのモニター系プロセス、「PMON(プロセス・モニター・プロセス)」を取り上げる。Oracle 26ai でも変わらず、ユーザーセッションの監視や異常終了時の後始末を一手に引き受けているこのプロセスの役割を、4択の練習問題を通じてスッキリ整理してみよう。


本日の問題

【問】Oracle Database のアーキテクチャにおけるバックグラウンド・プロセス「PMON(Process Monitor)」の主な役割として、最も適切なものを次の選択肢から1つ選べ。

  • A. データベースインスタンスの起動時に、ディスク上の制御ファイルやデータファイルの整合性をチェックし、クラッシュ・リカバリを実行する。
  • B. サーバー上の他のバックグラウンド・プロセス(SMONやLGWRなど)の稼働状況を常時監視し、異常終了時にインスタンス全体を強制停止する。
  • C. 各ユーザーのプロセスを監視し、万が一プロセスが異常終了(クラッシュ)した際に、使用していたリソースの解放やロールバックなどのクリーンアップを行う。
  • D. データベースへの新規接続要求を受け付け、リスナーを介さずに直接最適なサーバー・プロセスへと動的に割り当てる。

正解と解説

【正解】
C. 各ユーザーのプロセスを監視し、万が一プロセスが異常終了(クラッシュ)した際に、使用していたリソースの解放やロールバックなどのクリーンアップを行う。

詳しい解説

PMON(Process Monitor)は、名前の通り「プロセスを監視する」役割を持つバックグラウンド・プロセスだ。

  • ユーザー・プロセスの監視と後始末:
    クライアント側のアプリケーションが突然強制終了したり、ネットワーク障害でプツリと切断されたりすると、サーバー側に残されたサーバー・プロセスやロック、メモリ領域が宙ぶらりんになってしまう。PMONはこれを検知し、未確定のトランザクションをロールバックして、ロックやメモリなどのリソースを綺麗に回収・解放してくれる。
  • リスナーへの動的登録:
    もう一つの重要な役割として、データベース・サービスの情報をネットワークのリスナーに自動で登録(ダイナミック・レジストレーション)する仕事も担っている。

前回学んだ「SMON」がデータベース全体(インスタンス全体)のリカバリや一貫性を監視するのに対し、「PMON」は個々のユーザー・プロセスやセッションの異常時対応を行う、いわば現場の敏腕お掃除役である。この2つの役割の違いは試験でも非常に出やすいポイントなので、セットで押さえておこう。


まとめ

プロセス名主な監視対象おもな仕事・役割
SMON データベース / インスタンス全体 クラッシュ・リカバリ、一貫性の監視、一時セグメントのクリーンアップ
PMON 各ユーザー・プロセス / セッション 異常終了時のプロセス後始末(リソース解放、ロールバック)、リスナーへの動的登録

ユーザーが安心してSQLを投げられるのは、万が一アプリがフリーズしてもPMONが裏でしっかりと後片付けをしてくれるからこそである。

次回もOracleの仕組みがスッキリわかる4択問題をお届けするので、お楽しみに!


PR