ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子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 |
接続フローの全体像
- クライアント側でユーザープロセス(例: 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 Spring Frameworkのアノテーション一覧
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- PHP $_SERVERとは|DOCUMENT_ROOT・PHP_SELFなど主な要素 2026-08-07 17:15:57
- PHPでのファイルアップロード方法|multipart/form-dataと$_FILES 2026-08-07 17:15:57
- Scratchのアカウントの作り方|メールアドレスとユーザー名の登録手順 2026-08-07 17:15:57
- Bluetoothとは|仕組み・BLEとClassicの違い・用途 2026-08-07 17:15:57
- Spring Bootのテスト入門|@SpringBootTestとJUnitでの単体・結合テスト 2026-08-07 17:15:57
- djangoにおけるMVCアプリケーション実装例 2026-08-07 17:15:57
- Scratch 作品の公開方法 2026-08-07 17:15:56
- 【PHPフレームワーク】Laravelの使い方 2026-08-07 17:15:56
- Google OAuth 2.0 認証の実装方法 2026-08-07 17:15:56
- インストール(eclipseプラグイン) 2026-08-07 17:15:56
- インストール方法(Windows版) 2026-08-07 17:15:56
- Java とは?言語仕様・JVM・主要フレームワーク一覧 2026-08-07 17:15:56
- APIキー取得方法 2026-08-07 17:15:56
- データベースとは?RDB / NoSQL / SQL の基礎 2026-08-07 17:15:56
- Spring Frameworkの使い方 2026-08-07 17:15:56
コメントを削除してもよろしいでしょうか?