ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
ユーザープロセスとは
Oracle におけるユーザープロセスとは、Oracle データベースに接続するクライアント側のプロセスを指します。SQL*Plus、Oracle SQL Developer、JDBC アプリケーション、Web アプリケーションサーバなど、データベースに対して SQL を投げる側のプロセスがすべて該当します。
ユーザープロセスは Oracle インスタンス(メモリ + バックグラウンドプロセス群)の外側に存在します。データベースが動いているサーバマシンと同じホストに存在することもあれば、ネットワーク経由で別のホストから接続することもあります。
サーバープロセスとの関係
ユーザープロセスは SQL を「依頼する側」、サーバープロセスは SQL を「実行する側」です。クライアントが接続を確立すると、Oracle 側にそのセッション用のサーバープロセスが用意され、両者がペアでやり取りを行います。
| 項目 | ユーザープロセス | サーバープロセス |
|---|---|---|
| 役割 | SQL を依頼するクライアント | SQL を実行する Oracle 側プロセス |
| 存在する場所 | クライアント側ホスト(同一ホストでも可) | DB サーバホスト |
| 起動タイミング | アプリ / ツールの起動時 | クライアント接続時 |
| 例 | SQL*Plus / JDBC / OCI アプリ | oracle<SID> プロセス |
接続フローの全体像
- クライアント側でユーザープロセス(例: SQL*Plus)が起動する
- リスナー(
LISTENER)に接続要求が送られる - リスナーがサーバープロセスを起動 or 既存プロセスに割り当て
- ユーザープロセスとサーバープロセスが直接通信を開始
- セッションが終了したらサーバープロセスは終了 or プールに戻る
専用サーバー構成と共有サーバー構成
ユーザープロセスとサーバープロセスの結びつきは Oracle の接続モードで変わります。
| 構成 | 関係 | 特徴 |
|---|---|---|
| 専用サーバー(Dedicated) | 1 ユーザープロセス ↔ 1 サーバープロセス | 標準構成。応答が速いがプロセス数が増える |
| 共有サーバー(Shared) | 多数のユーザープロセス ↔ ディスパッチャ ↔ 少数のサーバープロセス | 同時接続数が多いシステム向き。リソース節約 |
多くの OLTP システムは専用サーバー構成、Web アプリのように大量の短時間接続を捌くシステムは共有サーバー構成またはコネクションプーリングで設計されます。
確認方法
セッション一覧
-- 現在接続中のセッション
SELECT sid, serial#, username, machine, program, status
FROM v$session
WHERE type = 'USER';
machine がクライアント側ホスト名、program がユーザープロセスの実行ファイル名(例: sqlplus.exe、JDBC Thin Client)になります。
OS プロセスとの突き合わせ
SELECT s.sid, s.serial#, s.username, s.program,
p.spid AS server_process_id
FROM v$session s
JOIN v$process p ON s.paddr = p.addr
WHERE s.type = 'USER';
SPID は OS 上のサーバープロセス ID(Linux なら ps -ef | grep ora_ で見えるプロセス)です。問題のあるセッションを OS レベルで kill する際にも使います。
ユーザープロセス終了時の挙動
クライアント側のユーザープロセスが落ちると、対応するサーバープロセスも通常は終了します。終了時に未コミットのトランザクションがあれば自動的にロールバックされます。これにより、クライアントクラッシュでもデータの整合性は保たれます。
セッションを強制終了
-- セッションを切断(次回 SQL 実行時に切れる)
ALTER SYSTEM KILL SESSION 'sid,serial#';
-- 即時切断
ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;
-- DBA がプロセスを直接切断(11gR2 以降)
ALTER SYSTEM DISCONNECT SESSION 'sid,serial#' IMMEDIATE;
よくある混同
| 混同しやすい用語 | 正しい意味 |
|---|---|
| ユーザープロセス と バックグラウンドプロセス | ユーザープロセスはクライアント側、バックグラウンドは DBWR / LGWR など Oracle インスタンスの内部プロセス |
| ユーザープロセス と サーバープロセス | ユーザープロセス = クライアント、サーバープロセス = Oracle 側の SQL 実行プロセス |
| ユーザープロセス と セッション | セッションは Oracle 側に作られる論理的な接続単位。1 つのユーザープロセスから複数セッションを張ることもある |
FAQ
Q: SQL*Plus を 2 つ起動したら、ユーザープロセスは 2 つ?
A: はい。プロセス単位なので、起動した sqlplus の数だけユーザープロセスが存在します。
Q: コネクションプールを使うと、ユーザープロセスは何個?
A: Web アプリの場合、AP サーバが 1 つのユーザープロセス内で複数の接続を保持します。サーバープロセス(Oracle 側)の数はプールサイズと同等になります。
Q: V$SESSION と V$PROCESS、どちらを見ればいい?
A: 接続情報・クライアント情報は V$SESSION、OS プロセスや使用メモリの情報は V$PROCESS。両方を paddr = addr で結合して見るのが定番です。
関連
- プロセス — 親カテゴリ
- サーバープロセス — SQL を実行する Oracle 側プロセス
- バックグラウンドプロセス — DBWR / LGWR / SMON / PMON など
- リスナー — クライアント接続要求を受け付ける
- セッション — V$SESSION による接続単位の管理
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- ユーザープロセス
- サーバープロセス
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- 【django】ログイン 認証機能 2026-09-08 03:22:09
- MySQL ERROR 1063 Incorrect column specifier for column|原因と直し方 2026-09-08 03:11:09
- 【PHPエラー】Object of class stdClass could not be converted to string 2026-09-07 07:46:04
- Julia Genie ローカル開発サーバ起動完全ガイド 2026-09-07 07:46:04
- Wi-Fi とは|規格と世代(Wi-Fi 4〜7)・周波数帯・CSMA/CA・WPA3 NEW 2026-09-07 07:45:13
- set コマンドでシェルオプションと位置パラメータを操作 | bash 2026-09-07 07:45:13
- JPEG(.jpg/.jpeg)画像形式の完全ガイド — 仕様・マジックナンバー・他形式との比較・EXIF 2026-09-07 07:45:13
- UE5 Get Overlapping Actorsで特定クラスだけ処理|Class Filter・Cast To 2026-09-07 07:45:13
- Linuxで特定拡張子のファイルを再帰削除|find -deleteの安全手順 2026-09-07 07:45:13
- Django CBVでテンプレートに値を渡す|get_context_data・extra_context 2026-09-07 07:45:13
- Linuxで複数ファイルの文字列を一括置換|find・sed・xargsの安全手順 2026-09-07 07:45:13
- Laravelルートグループ|prefix・middleware・nameで一括管理 2026-09-07 07:45:13
- Linux whichコマンドの使い方|絶対パス取得とtype・command -vの違い 2026-09-07 07:45:13
- Linux catコマンドの使い方|行番号表示・複数ファイル連結 2026-09-07 07:45:13
- unable to execute 'gcc': No such file or directory 2026-09-07 07:45:13
コメントを削除してもよろしいでしょうか?