ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
SMON とは
SMON (System Monitor) は Oracle Database の必須バックグラウンドプロセスの 1 つ。インスタンス起動と同時に立ち上がり、停止と同時に終了します。SMON が異常終了すると Oracle インスタンス全体がクラッシュします。
同じく必須プロセスの PMON (Process Monitor)、DBWn (Database Writer)、LGWR (Log Writer)、CKPT (Checkpoint)、ARCn (Archiver) などと共に、Oracle インスタンスの根幹を成します。
SMON の 4 つの主要な役割
① インスタンス起動時のクラッシュリカバリ
Oracle が停電やクラッシュで異常停止した後、次回起動時に SMON がREDO ログを再適用して整合性を回復します:
[シナリオ]
1. インスタンス稼働中に停電
2. 未コミットトランザクション複数あり
3. 電源復旧後 STARTUP
[SMON の動作]
1. REDO ログから前回チェックポイント以降の変更を再適用 (Roll Forward)
2. 起動完了後、UNDO セグメントから未コミット分を巻き戻し (Roll Back)
3. インスタンス整合性確保
これにより ACID の D (Durability) が保証される
② Free Extent の結合 (Coalesce of Free Extents)
古い Dictionary-Managed Tablespace (DMT) では、削除した領域の断片化を SMON が定期的に統合していました。現代の Locally-Managed Tablespace (LMT) ではビットマップ管理なのでこの役割は無くなっています。
③ 一時セグメント (Temporary Segment) のクリーンアップ
失敗したトランザクションが作った一時セグメント、CREATE INDEX 中に異常終了したセッションが残した中間データなどを定期的に掃除します:
-- 一時セグメントの状況確認
SELECT tablespace_name, segment_type, COUNT(*)
FROM dba_segments
WHERE segment_type LIKE 'TEMPORARY%'
GROUP BY tablespace_name, segment_type;
-- DBA_UNDO_EXTENTS で残骸確認
SELECT * FROM dba_undo_extents
WHERE status = 'EXPIRED' AND ROWNUM <= 10;
④ 分散トランザクション (In-Doubt) の解消
2 フェーズコミット中にネットワーク障害などで宙ぶらりんになった分散トランザクションを、SMON が定期的にチェックして自動解消します:
-- In-doubt 分散トランザクションの一覧
SELECT local_tran_id, global_tran_id, state, mixed
FROM dba_2pc_pending;
-- 手動解決 (DBA が判断)
COMMIT FORCE 'tran_id';
ROLLBACK FORCE 'tran_id';
SMON の状態確認
-- 全バックグラウンドプロセスの状態
SELECT name, description, paddr
FROM v$bgprocess
WHERE paddr != '00';
-- SMON 単体で確認
SELECT * FROM v$bgprocess WHERE name = 'SMON';
-- SMON のセッション情報
SELECT s.sid, s.serial#, s.program, p.spid, s.status, s.wait_class
FROM v$session s, v$process p
WHERE s.paddr = p.addr
AND s.program LIKE '%(SMON)%';
-- OS プロセスとして確認 (Linux)
-- $ ps -ef | grep ora_smon
-- oracle 1234 1 0 09:00 ? 00:00:01 ora_smon_ORCL
SMON と PMON の違い
| 項目 | SMON (System Monitor) | PMON (Process Monitor) |
|---|---|---|
| 監視対象 | インスタンス全体・データファイル | 各ユーザプロセス・サーバプロセス |
| 主な仕事 | クラッシュリカバリ / 領域管理 / 一時セグメント整理 | 異常終了プロセスのクリーンアップ / ロールバック / ロック解放 / リスナー登録 |
| 動作タイミング | 起動時 + 定期 (約 5 分間隔) | 常時 + プロセス監視 |
| 停止時の影響 | インスタンス停止 | インスタンス停止 |
| OS プロセス名 | ora_smon_SID | ora_pmon_SID |
SMON 起因の典型的なトラブル
| 症状 | 原因 | 対処 |
|---|---|---|
| ORA-00474: SMON プロセスが異常終了 | 内部エラー / メモリ不足 / バグ | アラートログ + トレース → SR 起票 |
| ORA-00475: TRWR プロセスが SMON より先に終了 | システムエラー | 同上、再起動 |
| クラッシュリカバリが終わらず STARTUP が遅い | REDO ログが大量 / I/O 遅延 | v$instance_recovery で進捗確認 |
| UNDO テーブルスペース満杯 | SMON のクリーンアップが追いつかない | UNDO_RETENTION / TS サイズ見直し |
| 一時表領域が膨らみ続ける | 分散トランザクションの残骸 | dba_2pc_pending 確認 |
SMON 関連の隠しパラメータ (※通常変更しない)
-- (Oracle Support の指示があった場合のみ)
ALTER SYSTEM SET "_smu_debug_mode" = 4;
ALTER SYSTEM SET "_smon_internal_errlimit" = 50;
-- SMON の起動頻度 (定数)
-- デフォルト 約 300 秒 (5 分)
-- アイドル時は 1500 秒 (25 分) まで延長
DBA としての日々の運用
- アラートログを毎日確認 — SMON エラーがあれば即対応
- v$instance_recovery でリカバリ時間予測を把握
- UNDO テーブルスペースの空きを監視 (Cloud Control 等)
- 分散トランザクションが残らないか
dba_2pc_pendingをチェック - 定期パッチを当てる — SMON 起因のバグは Critical Patch Update で修正される
SMON の場所 (アラートログ)
# 標準的な場所
$ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID/trace/alert_$ORACLE_SID.log
# SMON のトレースファイル
$ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID/trace/${ORACLE_SID}_smon_*.trc
# adrci で確認
$ adrci
adrci> show alert -tail 100
adrci> show incident
adrci> show problem
FAQ
Q: SMON を kill したらどうなる?
A: Oracle インスタンス全体が即終了します (ORA-00474)。やってはいけません。本番では絶対禁止。
Q: SMON が CPU を 100% 消費している
A: クラッシュリカバリ中か、巨大な UNDO 領域の整理中。一時的なら正常。長引くなら ASH/AWR で待機イベント解析、My Oracle Support に問い合わせ。
Q: RAC 環境では?
A: 各インスタンスに SMON が存在し、Instance Recovery では生存インスタンスの SMON が死んだインスタンスをリカバリします (Cluster Recovery)。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子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
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?