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

【問題形式で学ぶOracle】第3回:ユーザー・プロセスの正体を暴く!データベースに命令を届ける第一歩

Oracle Database の内部アーキテクチャを語る上で欠かせないのが、プロセス(作業員たち)の役割分担である。
「サーバープロセス」「バックグラウンド・プロセス」、そして今回焦点を当てる「ユーザー・プロセス」など、似たような言葉が多くて混乱しやすいポイントだ。

今回は、Oracleのプロセス構造の基本となる「ユーザー・プロセス」について、4択の練習問題を通じてスッキリ整理してみよう。


本日の問題

【問】Oracle Database のアーキテクチャにおける「ユーザー・プロセス」の定義として、最も適切なものを次の選択肢から1つ選べ。

  • A. データベースのメモリ領域(SGA)を常時監視し、インスタンス異常時の自動リカバリを行うバックグラウンド・プロセスのこと。
  • B. ユーザーが実行するSQL文や各種ユーティリティ(SQL*Plusなど)の操作に伴って起動するプロセスのこと。
  • C. ユーザー・プロセスからの要求を直接受け取り、ディスク上のデータファイルを読み書きするサーバー側の専用プロセスのこと。
  • D. 複数のインスタンス間(RAC環境など)でデータの一貫性を保つために、キャッシュブロックを転送し合う専用の連携プロセスのこと。

正解と解説

【正解】
B. ユーザーが実行するSQL文や各種ユーティリティ(SQL*Plusなど)の操作に伴って起動するプロセスのこと。

詳しい解説

Oracle Database に接続して作業を行うとき、私たちの操作を支えるプロセスにはいくつかの階層がある。

  • ユーザー・プロセス(User Process):
    私たちがクライアント側(PCなど)で sqlplus などのツールを起動したり、SQL文を実行したりしたときに生成されるプロセス。いわば「データベースへの入口・発信源」である。
  • サーバー・プロセス(Server Process):
    ユーザー・プロセスからの要求を受け取り、データベース(インスタンス)のメモリやデータファイルにアクセスして実際に処理を実行するプロセス。
  • バックグラウンド・プロセス(Background Process):
    データベースの全体管理やメモリ・ファイルの同期を行うために、インスタンス起動時に自動で立ち上がるプロセス(DBWn, LGWR, SMON, PMONなど)。

試験や実務のトラブルシューティングでも、「ユーザーが直接操作する側(ユーザー・プロセス)」と「データベース側で裏方として処理を代行する側(サーバー・プロセス)」の区別が問われやすいので、この違いをしっかり押さえておこう。


まとめ

プロセスの種類誰が・何のために起動するか主な役割
ユーザー・プロセス ユーザー(クライアント側) SQLやSQL*Plusなどのユーティリティの実行
サーバー・プロセス Oracle Database(サーバー側) ユーザー・からの要求を受け取り、処理を代行する
バックグラウンド・プロセス Oracle Database(インスタンス起動時) メモリ管理、ロギング、障害監視などの全体管理

普段何気なく打っている sqlplus / as sysdba の裏側でも、こうしたプロセス同士の連携が動いている。仕組みをイメージできるようになると、エラーが出たときも原因の切り分けがぐっとスムーズになるはずだ。

次回も基礎固めに最適な4択問題をお届け予定なのでお楽しみに!


PR