ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
Oracle における「プロセス」とは
Oracle Database では、データベースインスタンスを構成する要素のひとつとしてプロセスがあります。プロセスとは OS 上で動作する実行単位で、Oracle はインスタンス稼働中に多数のプロセスを協調動作させて SQL の実行や永続化を行っています。
プロセスは目的によってユーザプロセス・サーバプロセス・バックグラウンドプロセスに分類されます。
3 種類のプロセス
| 種類 | 動作場所 | 役割 |
|---|---|---|
| ユーザプロセス | クライアント側 | SQL の送信、結果の受け取り |
| サーバプロセス | DB サーバ側 | SQL を実際に実行(パース・実行・フェッチ) |
| バックグラウンドプロセス | DB サーバ側 | インスタンスの維持(書き出し・ログ・回復など) |
ユーザプロセス
ユーザプロセスはクライアントアプリケーション(SQL*Plus / SQL Developer / Java / Python など)が Oracle と通信するために生成するプロセスです。SQL を送る側であり、SQL の実行そのものは行いません。
クライアントとサーバが別マシンの場合はクライアント側マシンで動作し、Oracle Net 経由でサーバプロセスと通信します。
サーバプロセス
サーバプロセスはクライアントの代理として SQL を実行するプロセスで、DB サーバ側で動作します。
専用サーバ構成(dedicated)
1 つのユーザプロセスに対して 1 つのサーバプロセスが割り当てられる構成です。シンプルで応答性が高く、多くの環境で既定になっています。同時接続数が増えるとサーバプロセスも増えるため、メモリ消費に注意が必要です。
共有サーバ構成(shared / MTS)
少数のサーバプロセスを複数のユーザプロセスで共有する構成です。DISPATCHER がリクエストを受けて空きサーバプロセスに振り分けます。多接続環境でメモリを節約できる代わりに、トランザクションごとの応答時間にばらつきが出ます。
主なバックグラウンドプロセス
バックグラウンドプロセスはインスタンスの基盤を支える常駐プロセス群です。種類はバージョンで増減しますが、代表的なものは次の通りです。
| プロセス | 正式名 | 役割 |
|---|---|---|
SMON | System Monitor | インスタンス回復、一時セグメント整理 |
PMON | Process Monitor | 異常終了したユーザプロセスの後始末 |
DBWn | Database Writer | データバッファのダーティブロックをデータファイルへ書き出し |
LGWR | Log Writer | REDO ログバッファを REDO ログファイルへ書き出し |
CKPT | Checkpoint | チェックポイント発生時にヘッダ情報を更新 |
ARCn | Archiver | REDO ログをアーカイブログとしてコピー |
MMON | Manageability Monitor | AWR・統計情報の収集 |
RECO | Recoverer | 分散トランザクションの障害回復 |
プロセスの確認方法
OS から見ると Oracle のプロセスは ora_xxx_SID という名前で見えます。
# Linux でバックグラウンドプロセスを一覧
ps -ef | grep ora_ | grep ORCL
# 例:
# oracle ora_pmon_ORCL
# oracle ora_smon_ORCL
# oracle ora_dbw0_ORCL
# oracle ora_lgwr_ORCL
# oracle ora_ckpt_ORCL
Oracle 内部からは v$process / v$session ビューで確認できます。
-- 起動中のプロセス一覧
SELECT pname, spid, program
FROM v$process
WHERE pname IS NOT NULL
ORDER BY pname;
-- セッションとサーバプロセスの紐付け
SELECT s.sid, s.username, s.program, p.spid
FROM v$session s
JOIN v$process p ON s.paddr = p.addr
WHERE s.username IS NOT NULL;
同時接続数とプロセス数の関係
同時接続数の上限は初期化パラメータ processes で決まります。専用サーバ構成では接続ごとに 1 プロセス消費するため、見積もりは余裕を持って設定します。
-- 現在の上限と使用中プロセス数
SHOW PARAMETER processes;
SELECT COUNT(*) FROM v$process;
プロセスとメモリ(SGA / PGA)の関係
Oracle のメモリ領域は共有領域とプロセス専用領域に分かれており、それぞれを使うプロセスが異なります。
| メモリ領域 | 使うプロセス | 用途 |
|---|---|---|
| SGA(System Global Area) | 全プロセスで共有 | データバッファ・共有プール・REDO ログバッファ |
| PGA(Program Global Area) | サーバプロセスごと | ソート領域・カーソル状態・セッション変数 |
SGA はインスタンス共通、PGA はサーバプロセスごとに独立です。同時接続数を増やすと PGA の合計が膨らむため、メモリ計画では pga_aggregate_target と接続数の積を考慮する必要があります。
プロセスの異常終了とリカバリ
サーバプロセスが何らかの理由でクラッシュした場合、PMON が後始末を行います。
- 未コミットのトランザクションを自動ロールバック
- 使っていたロックを解放
- セッションが保持していた一時資源をクリーンアップ
インスタンスごとクラッシュした場合は SMON が起動時にインスタンス回復を実行し、REDO ログから未反映の変更を再適用します。
SQL 実行時のプロセス間連携
1 件の SELECT が返るまでに、複数のプロセス・メモリ領域が連携して動きます。簡単な流れは次のとおりです。
- ユーザプロセスが SQL をサーバプロセスに送信
- サーバプロセスが共有プール(SGA 内)でパース済みカーソルを検索(ライブラリキャッシュヒット)
- ヒットしなければ構文解析・実行計画作成して共有プールに格納
- データバッファ(SGA 内)に該当ブロックがあれば論理 I/O、なければデータファイルから読み込み
- 結果セットを PGA に保持しながらユーザプロセスへフェッチで返送
- 更新があれば REDO ログバッファ経由で
LGWRが REDO ログファイルへ永続化 - 後で
DBWnが変更済みブロックをデータファイルへ書き戻し
「サーバプロセスが SQL を実行し、バックグラウンドプロセスが永続化を支える」という役割分担を押さえると、Oracle のアーキテクチャ図が一気に読みやすくなります。
関連
- データベースの構成 — 親カテゴリ
- Oracle — Oracle トップ
- インスタンス — メモリ + プロセスの組
- PGA — サーバプロセス専用メモリ
- バックグラウンドプロセス — 詳細記事
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?