【完全ガイド】Oracle パラメータ確認(V$PARAMETER)|V$系ビュー・ALTER SYSTEM・重要パラメータまで徹底解説
- 作成日 2026.07.20
- Oracle Database
Oracle DB を運用・チューニングする上で避けて通れないのがパラメータ管理:
SQL> SHOW PARAMETER pga_aggregate_target
NAME TYPE VALUE
---------------------- ---------- ----------
pga_aggregate_target big integer 2G
SQL> SELECT name, value FROM v$parameter WHERE name = 'sga_target';
しかし、パラメータ管理には落とし穴が多く:
- V$PARAMETER と V$SYSTEM_PARAMETER の違いが分からない
- SPFILE と PFILE、どっちを使ってるか不明
- SCOPE = MEMORY / SPFILE / BOTH の使い分けが謎
- ALTER SYSTEM で変更したのに反映されない
- 再起動しないと効かないパラメータを触ってしまう
- V$SPPARAMETER って何?
- セッションレベル vs システムレベル
- ISSPECIFIED、ISMODIFIED、ISDEFAULT の意味
Oracle のパラメータは300以上存在し、それぞれに静的/動的、セッション/システム、PFILE/SPFILE の属性があります。適切に管理できないと、設定変更が予期しない挙動を引き起こし、最悪の場合 DB が起動しなくなります。
さらに、モダンな環境では:
- Oracle Cloud Autonomous DB では自動チューニング
- AWS RDS Oracle では Parameter Group で管理
- Docker Oracle では起動時オプション
- CDB/PDB では階層的な設定
など、環境ごとに管理方法が違うため、基本を確実に押さえることが重要です。
本記事では、Oracle パラメータ確認と変更 の完全な方法を、リファレンスとして実用的に整理します。V$PARAMETER 系ビュー5種類、SHOW PARAMETER コマンド、ALTER SYSTEM/SESSION、SCOPE の使い分け、SPFILE/PFILE、DEFERRED、重要パラメータ20選(PGA/SGA/PROCESSES/NLS/CURSOR/OPTIMIZER等)、実践シナリオ、トラブル対処、FAQまで完全網羅。この1本で Oracle パラメータを確実に管理できるようになります。
- 1. 結論:まず SHOW PARAMETER で確認
- 2. まず理解する:パラメータの仕組み
- 3. パラメータビュー完全リファレンス
- 4. SHOW PARAMETER コマンド
- 5. ALTER SYSTEM でのパラメータ変更
- 6. ALTER SESSION での変更
- 7. 重要パラメータ 20選
- 8. 実践シナリオ
- 8.1. シナリオ1:現在の設定を把握したい
- 8.2. シナリオ2:変更されたパラメータ確認
- 8.3. シナリオ3:SGA チューニング
- 8.4. シナリオ4:セッション不足エラー対応
- 8.5. シナリオ5:カーソル不足エラー
- 8.6. シナリオ6:Rails 環境での NLS 設定
- 8.7. シナリオ7:CI/CD デプロイでの DDL_LOCK_TIMEOUT
- 8.8. シナリオ8:SPFILE から PFILE 生成
- 8.9. シナリオ9:Docker Oracle での起動時パラメータ
- 8.10. シナリオ10:AWS RDS Parameter Group
- 8.11. シナリオ11:PDB 別のパラメータ設定(CDB/PDB)
- 8.12. シナリオ12:定期的なパラメータ監査
- 9. トラブルシューティング
- 10. よくある質問(FAQ)
- 10.1. Q1. PFILE と SPFILE、どっちを使うべき?
- 10.2. Q2. SCOPE のデフォルトは?
- 10.3. Q3. 変更内容の履歴を残せる?
- 10.4. Q4. パラメータ数はいくつ?
- 10.5. Q5. Underscore パラメータ(_ 始まり)
- 10.6. Q6. 変更前後の比較
- 10.7. Q7. Autonomous DB でのパラメータ管理
- 10.8. Q8. AWS RDS Oracle での変更
- 10.9. Q9. パラメータの依存関係
- 10.10. Q10. DEFERRED の使い所
- 10.11. Q11. CDB/PDB での違い
- 10.12. Q12. パラメータ値の単位
- 11. 参考リンク
- 12. まとめ
結論:まず SHOW PARAMETER で確認
時間がない方向けに、最速の操作を先に示します。
基本コマンド 3種
-- ① 特定パラメータ確認
SHOW PARAMETER pga_aggregate_target;
-- ② 部分一致
SHOW PARAMETER nls; -- nls_ で始まる全て
-- ③ SQL で確認
SELECT name, value, isdefault, ismodified
FROM v$parameter
WHERE name = 'pga_aggregate_target';
変更 3種
-- ① セッションだけ
ALTER SESSION SET nls_date_format = 'YYYY-MM-DD';
-- ② 全体(現在+起動時)
ALTER SYSTEM SET pga_aggregate_target = 4G SCOPE = BOTH;
-- ③ 起動時のみ(次回反映)
ALTER SYSTEM SET processes = 500 SCOPE = SPFILE;
5つの主要ビュー
| ビュー | 内容 | 用途 |
|---|---|---|
| V$PARAMETER | 現在セッションの値 | 通常確認 |
| V$SYSTEM_PARAMETER | インスタンス全体の値 | 標準値確認 |
| V$SPPARAMETER | SPFILE の内容 | 永続設定確認 |
| V$PARAMETER2 | 複数値パラメータの詳細 | リスト表示 |
| V$SYSTEM_PARAMETER2 | システムレベルの詳細 | リスト表示 |
詳細は以下で解説します。
まず理解する:パラメータの仕組み
PFILE と SPFILE
Oracle のパラメータ格納方式:
PFILE(Parameter File、init.ora)
- テキストファイル(編集可能)
- 手動で修正
- 変更は再起動時のみ反映
- レガシー方式
# init.ora の例
db_name = 'ORCL'
processes = 300
sga_target = 4G
SPFILE(Server Parameter File)
- バイナリファイル(直接編集不可)
- ALTER SYSTEM で永続変更可能
- 推奨方式(Oracle 9i 以降)
現在どちらを使ってるか確認
SHOW PARAMETER spfile;
-- または
SELECT VALUE FROM v$parameter WHERE name = 'spfile';
空なら PFILE 使用中、パスが表示なら SPFILE 使用中。
静的パラメータ vs 動的パラメータ
- 動的: ALTER SYSTEM で即反映
- 静的: SPFILE 変更 + 再起動が必要
-- 動的か静的か
SELECT name, issys_modifiable
FROM v$parameter
WHERE name = 'processes';
-- FALSE: 静的、IMMEDIATE: 即時、DEFERRED: 遅延
issys_modifiable:
- FALSE: ALTER SYSTEM で変更不可(再起動要)
- IMMEDIATE: ALTER SYSTEM で即時
- DEFERRED: ALTER SYSTEM で新セッションから
パラメータビュー完全リファレンス
V$PARAMETER(最重要・最頻用)
現在のセッションで有効な値:
SELECT num, -- パラメータ番号
name, -- 名前
type, -- データ型
value, -- 現在値
display_value, -- 表示用の値(GB等)
isdefault, -- デフォルトか
isses_modifiable, -- ALTER SESSION 可能か
issys_modifiable, -- ALTER SYSTEM 可能か
ismodified, -- 変更済みか
description
FROM v$parameter
WHERE name = 'sga_target';
V$SYSTEM_PARAMETER
インスタンス全体の値(新セッションが継承):
SELECT name, value, isdefault, ismodified
FROM v$system_parameter
WHERE name = 'sga_target';
V$PARAMETER との違い:
- V$PARAMETER: 現在セッションの値(ALTER SESSION 反映)
- V$SYSTEM_PARAMETER: インスタンスレベル(全セッション標準)
V$SPPARAMETER
SPFILE の内容(永続設定):
SELECT name, value, isspecified, sid
FROM v$spparameter
WHERE name = 'sga_target';
isspecified:
- TRUE: SPFILE に明示的に設定されている
- FALSE: デフォルト値使用
V$PARAMETER2 と V$SYSTEM_PARAMETER2
リスト形式のパラメータ(例: control_files)を1行ずつ表示:
SELECT name, value, ordinal
FROM v$parameter2
WHERE name = 'control_files';
複数の control_file が別行で表示される。
V$OBSOLETE_PARAMETER
廃止されたパラメータの一覧(過去互換用):
SELECT name FROM v$obsolete_parameter WHERE isspecified = 'TRUE';
4つのビューの比較表
-- 一括比較
SELECT p.name,
p.value AS session_value,
sp.value AS system_value,
sf.value AS spfile_value,
sf.isspecified
FROM v$parameter p
JOIN v$system_parameter sp ON p.name = sp.name
LEFT JOIN v$spparameter sf ON p.name = sf.name
WHERE p.name = 'sga_target';
SHOW PARAMETER コマンド
基本
-- 単一
SHOW PARAMETER sga_target
-- 部分一致
SHOW PARAMETER nls
SHOW PARAMETER db_cache
SHOW PARAMETER optimizer
高度な使い方
-- 表示形式変更
SET LINESIZE 200
SET PAGESIZE 100
COL name FORMAT A40
COL value FORMAT A60
-- 実行
SHOW PARAMETER nls
SHOW SPPARAMETERS
SPFILE の内容:
SHOW SPPARAMETERS pga_aggregate_target
権限
- SHOW PARAMETER: SELECT_CATALOG_ROLE または SYSDBA
- SHOW SPPARAMETERS: SYSDBA 必要
ALTER SYSTEM でのパラメータ変更
基本構文
ALTER SYSTEM SET <param> = <value> [SCOPE = MEMORY|SPFILE|BOTH] [DEFERRED];
SCOPE の使い分け
| SCOPE | 効果 | 用途 |
|---|---|---|
| MEMORY | 現在インスタンスのみ | 一時的テスト |
| SPFILE | SPFILE のみ、次回起動から | 再起動要のパラメータ |
| BOTH(デフォルト) | 両方 | 推奨 |
例
-- ① BOTH(推奨、デフォルト)
ALTER SYSTEM SET pga_aggregate_target = 4G;
-- 即時反映 + 再起動後も維持
-- ② MEMORY のみ(テスト)
ALTER SYSTEM SET cursor_sharing = 'FORCE' SCOPE = MEMORY;
-- 現在のみ、再起動でリセット
-- ③ SPFILE のみ(再起動要)
ALTER SYSTEM SET processes = 500 SCOPE = SPFILE;
-- 次回起動から反映
DEFERRED(遅延)
現在セッションには影響せず、新セッションから反映:
ALTER SYSTEM SET sort_area_size = 65536 DEFERRED;
対応パラメータのみ:
- AUDIT_FILE_DEST
- BACKUP_TAPE_IO_SLAVES
- OBJECT_CACHE_MAX_SIZE_PERCENT
- OLAP_PAGE_POOL_SIZE
- SORT_AREA_RETAINED_SIZE
- SORT_AREA_SIZE
COMMENT の追加
変更理由を記録:
ALTER SYSTEM SET cursor_sharing = 'FORCE'
COMMENT = 'Fix for high parse rate on 2026-06-15'
SCOPE = BOTH;
-- 確認
SELECT name, value, update_comment
FROM v$parameter
WHERE name = 'cursor_sharing';
注意: 次回変更で消去。履歴管理には使えない。
ALTER SYSTEM RESET(デフォルトに戻す)
ALTER SYSTEM RESET pga_aggregate_target SCOPE = SPFILE;
SCOPE = SPFILE のみ有効。次回起動でデフォルト値。
RAC 環境(SID オプション)
-- 特定インスタンスのみ
ALTER SYSTEM SET open_cursors = 500 SID = 'ORCL1' SCOPE = SPFILE;
-- 全インスタンス
ALTER SYSTEM SET open_cursors = 500 SID = '*' SCOPE = SPFILE;
ALTER SESSION での変更
用途
自セッションのみ変更:
ALTER SESSION SET nls_date_format = 'YYYY-MM-DD';
ALTER SESSION SET nls_language = 'AMERICAN';
ALTER SESSION SET ddl_lock_timeout = 60;
メリット
- 他セッションに影響なし
- テスト・実験向き
- 一時的なパフォーマンス調整
よく使うセッション設定
-- タイムフォーマット
ALTER SESSION SET nls_date_format = 'YYYY-MM-DD HH24:MI:SS';
ALTER SESSION SET nls_timestamp_format = 'YYYY-MM-DD HH24:MI:SS.FF';
-- DDL タイムアウト
ALTER SESSION SET ddl_lock_timeout = 60;
-- カーソル共有
ALTER SESSION SET cursor_sharing = 'FORCE';
-- 統計取得
ALTER SESSION SET statistics_level = 'ALL';
-- パラレル
ALTER SESSION FORCE PARALLEL QUERY PARALLEL 4;
-- コンテナ切り替え(12c+)
ALTER SESSION SET CONTAINER = PDB1;
日付フォーマット関連は、ORA-01843: not a valid month のエラー解説記事にも詳しい対処法があります。
重要パラメータ 20選
メモリ関連
SGA_TARGET / SGA_MAX_SIZE
-- SGA 全体サイズ
SHOW PARAMETER sga
-- 変更(推奨: 物理メモリの 40-50%)
ALTER SYSTEM SET sga_target = 8G SCOPE = BOTH;
ALTER SYSTEM SET sga_max_size = 8G SCOPE = SPFILE;
PGA_AGGREGATE_TARGET
-- PGA 集約サイズ
SHOW PARAMETER pga_aggregate_target
-- 変更(推奨: 物理メモリの 20-30%)
ALTER SYSTEM SET pga_aggregate_target = 4G;
TEMP tablespace 使用量に大きく影響。ORA-01652 エラーの記事、Oracle Tablespace 管理の記事も参照してください。
MEMORY_TARGET / MEMORY_MAX_TARGET
-- 全メモリ自動管理(11g+)
ALTER SYSTEM SET memory_target = 12G SCOPE = SPFILE;
ALTER SYSTEM SET memory_max_target = 12G SCOPE = SPFILE;
11g で導入。SGA + PGA を自動配分。ただし 12c 以降は個別指定が推奨。
接続関連
PROCESSES
-- 最大プロセス数
SHOW PARAMETER processes
-- 変更(静的、再起動要)
ALTER SYSTEM SET processes = 500 SCOPE = SPFILE;
SESSIONS
-- 最大セッション数
SHOW PARAMETER sessions
-- 通常は PROCESSES * 1.5 が自動計算
OPEN_CURSORS
-- カーソル上限(頻繁に不足する)
ALTER SYSTEM SET open_cursors = 500 SCOPE = BOTH;
ORA-01000: maximum open cursors exceeded が出たら増やす。
NLS 関連
NLS_DATE_FORMAT
-- 日付フォーマット
ALTER SESSION SET nls_date_format = 'YYYY-MM-DD HH24:MI:SS';
-- または恒久
ALTER SYSTEM SET nls_date_format = 'YYYY-MM-DD HH24:MI:SS' SCOPE = SPFILE;
NLS_LANGUAGE / NLS_TERRITORY
ALTER SESSION SET nls_language = 'AMERICAN';
ALTER SESSION SET nls_territory = 'AMERICA';
オプティマイザ関連
OPTIMIZER_MODE
-- 現在
SHOW PARAMETER optimizer_mode
-- 変更
ALTER SYSTEM SET optimizer_mode = 'ALL_ROWS' SCOPE = BOTH;
-- ALL_ROWS: バッチ用(全行取得)
-- FIRST_ROWS_N: OLTP用(先頭N行)
CURSOR_SHARING
-- カーソル共有戦略
SHOW PARAMETER cursor_sharing
-- 変更
ALTER SESSION SET cursor_sharing = 'FORCE';
-- EXACT: 完全一致(デフォルト)
-- FORCE: リテラル値を変数化
高頻度な parse 削減に有効。
DB_FILE_MULTIBLOCK_READ_COUNT
-- フルスキャン時の読み込みブロック数
SHOW PARAMETER db_file_multiblock_read_count
DDL/セッション関連
DDL_LOCK_TIMEOUT
-- DDL のロック待ち時間(秒)
ALTER SESSION SET ddl_lock_timeout = 60;
-- システム
ALTER SYSTEM SET ddl_lock_timeout = 60 SCOPE = BOTH;
ORA-00054: resource busy エラー対策の記事に詳しい使い方を書いています。
UNDO 関連
UNDO_RETENTION
-- UNDO 保持期間(秒)
SHOW PARAMETER undo_retention
-- 変更(Flashback Query に影響)
ALTER SYSTEM SET undo_retention = 3600 SCOPE = BOTH;
ORA-01555: snapshot too old エラー対策に関連。
UNDO_MANAGEMENT
-- AUTO(自動、推奨)
SHOW PARAMETER undo_management
ジョブ/並列関連
JOB_QUEUE_PROCESSES
-- DBMS_SCHEDULER 用プロセス数
ALTER SYSTEM SET job_queue_processes = 100 SCOPE = BOTH;
PARALLEL_MAX_SERVERS
-- 並列サーバー最大数
ALTER SYSTEM SET parallel_max_servers = 40 SCOPE = BOTH;
ブロック関連
DB_BLOCK_SIZE
-- ブロックサイズ(作成時決定、変更不可)
SHOW PARAMETER db_block_size
DB 作成時のみ設定。変更は再作成必要。
DB_KEEP_CACHE_SIZE / DB_RECYCLE_CACHE_SIZE
-- キャッシュ用途別サイズ
ALTER SYSTEM SET db_keep_cache_size = 200M SCOPE = BOTH;
監査/セキュリティ
AUDIT_TRAIL
-- 監査有効/無効
SHOW PARAMETER audit_trail
-- 変更(静的)
ALTER SYSTEM SET audit_trail = 'DB' SCOPE = SPFILE;
診断/トレース
STATISTICS_LEVEL
-- 統計収集レベル
SHOW PARAMETER statistics_level
-- BASIC / TYPICAL(推奨) / ALL
SESSION_CACHED_CURSORS
-- セッションキャッシュ
ALTER SYSTEM SET session_cached_cursors = 100 SCOPE = SPFILE;
実践シナリオ
シナリオ1:現在の設定を把握したい
-- カテゴリ別に確認
SHOW PARAMETER memory -- メモリ関連
SHOW PARAMETER sga -- SGA関連
SHOW PARAMETER pga -- PGA関連
SHOW PARAMETER nls -- 国際化
SHOW PARAMETER undo -- UNDO
SHOW PARAMETER optimizer -- オプティマイザ
-- 全パラメータ CSV出力
SET COLSEP ','
SET LINESIZE 200
SPOOL /tmp/params.csv
SELECT name, value FROM v$parameter ORDER BY name;
SPOOL OFF
シナリオ2:変更されたパラメータ確認
-- デフォルトから変更されたもの
SELECT name, value, ismodified
FROM v$parameter
WHERE ismodified <> 'FALSE'
ORDER BY name;
-- SPFILE で明示的に設定されたもの
SELECT name, value
FROM v$spparameter
WHERE isspecified = 'TRUE'
ORDER BY name;
シナリオ3:SGA チューニング
-- 現状把握
SELECT component, ROUND(current_size/1024/1024, 2) mb
FROM v$sga_dynamic_components;
-- SGA_TARGET 増加
ALTER SYSTEM SET sga_target = 12G SCOPE = BOTH;
ALTER SYSTEM SET sga_max_size = 12G SCOPE = SPFILE;
-- SGA_MAX_SIZE 変更後は再起動要
シナリオ4:セッション不足エラー対応
ORA-00018: maximum number of sessions exceeded
対処:
-- 現在の使用状況
SELECT COUNT(*) FROM v$session;
-- 上限確認
SHOW PARAMETER sessions
SHOW PARAMETER processes
-- 増加(静的、再起動要)
ALTER SYSTEM SET processes = 500 SCOPE = SPFILE;
-- SESSIONS は自動計算(PROCESSES * 1.5)
-- 再起動
SHUTDOWN IMMEDIATE;
STARTUP;
シナリオ5:カーソル不足エラー
ORA-01000: maximum open cursors exceeded
対処:
-- セッション別カーソル使用量
SELECT s.sid, s.username, s.machine, COUNT(*) cursor_count
FROM v$open_cursor c
JOIN v$session s ON c.sid = s.sid
GROUP BY s.sid, s.username, s.machine
ORDER BY cursor_count DESC;
-- 上限増加
ALTER SYSTEM SET open_cursors = 1000 SCOPE = BOTH;
シナリオ6:Rails 環境での NLS 設定
# config/initializers/oracle.rb
Rails.application.config.after_initialize do
ActiveRecord::Base.connection.execute(
"ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS'"
)
end
Rails 8 系の詳細は Rails 8 アップグレードガイドの記事、rails db:migrate 使い方の記事、Solid Queue 使い方の記事も参照してください。
シナリオ7:CI/CD デプロイでの DDL_LOCK_TIMEOUT
#!/bin/bash
# deploy.sh
sqlplus -s $USER/$PW@$DB <<EOF
ALTER SESSION SET DDL_LOCK_TIMEOUT = 60;
@migration.sql
EOF
Kamal デプロイの詳細は Kamal 2 デプロイの記事を参照してください。
シナリオ8:SPFILE から PFILE 生成
-- 診断用に PFILE 生成
CREATE PFILE = '/tmp/init_orcl.ora' FROM SPFILE;
-- 逆
CREATE SPFILE = '/u01/app/oracle/product/19c/dbs/spfileORCL.ora'
FROM PFILE = '/tmp/init_orcl.ora';
シナリオ9:Docker Oracle での起動時パラメータ
# docker-compose.yml
services:
oracle:
image: gvenzl/oracle-xe:21
environment:
ORACLE_SGA: 2048
ORACLE_PGA: 1024
NLS_LANG: JAPANESE_JAPAN.AL32UTF8
Docker 関連は docker daemon 接続エラーの記事、Docker no space left on device の記事も参照してください。
シナリオ10:AWS RDS Parameter Group
RDS では Parameter Group で管理:
AWS Console → RDS → Parameter Groups
→ 新規作成 or 既存編集
→ パラメータを検索・変更
→ RDS インスタンスに適用
シナリオ11:PDB 別のパラメータ設定(CDB/PDB)
-- CDB$ROOT で全 PDB
ALTER SYSTEM SET open_cursors = 500 CONTAINER = ALL;
-- 特定 PDB
ALTER SESSION SET CONTAINER = PDB1;
ALTER SYSTEM SET open_cursors = 1000;
シナリオ12:定期的なパラメータ監査
-- 変更履歴を確認(COMMENT フィールド)
SELECT name, value, update_comment
FROM v$parameter
WHERE update_comment IS NOT NULL
ORDER BY name;
-- SPFILE 変更されたもの
SELECT name, value
FROM v$spparameter
WHERE isspecified = 'TRUE'
ORDER BY name;
トラブルシューティング
「parameter cannot be modified」
ORA-02097: parameter cannot be modified because specified value is invalid
原因: 静的パラメータを SCOPE = MEMORY で変更しようとした
対処:
-- SCOPE = SPFILE で再起動
ALTER SYSTEM SET processes = 500 SCOPE = SPFILE;
SHUTDOWN IMMEDIATE;
STARTUP;
「specified value is invalid」
ORA-02097: parameter cannot be modified because specified value is invalid
無効な値。ドキュメントで許容範囲確認:
SELECT name, value, description
FROM v$parameter
WHERE name = '対象パラメータ';
変更が反映されない
-- ALTER SESSION は他セッションに影響なし
-- ALTER SYSTEM SCOPE = MEMORY は再起動で消える
-- ALTER SYSTEM SCOPE = SPFILE は再起動しないと反映
-- 確実に反映するには SCOPE = BOTH
ALTER SYSTEM SET param = value SCOPE = BOTH;
SPFILE 破損
-- PFILE から SPFILE 再作成
CREATE SPFILE FROM PFILE = '/backup/init.ora';
-- または、SPFILE から一度 PFILE 生成 → 編集 → SPFILE 再作成
CREATE PFILE = '/tmp/init.ora' FROM SPFILE;
-- 編集
CREATE SPFILE FROM PFILE = '/tmp/init.ora';
起動不能
極端な値(例: SGA_TARGET = 100G を物理メモリ 4G マシンで)で起動不能:
対処:
# バックアップから復旧
sqlplus / as sysdba
STARTUP PFILE='/backup/init.ora';
# または SPFILE を編集用に一度 PFILE 出力
CREATE PFILE FROM SPFILE;
# 編集して元に戻す
RAC で片方だけ変更
-- SID 明示
ALTER SYSTEM SET open_cursors = 500 SID = 'ORCL2' SCOPE = SPFILE;
よくある質問(FAQ)
Q1. PFILE と SPFILE、どっちを使うべき?
SPFILE 推奨。理由:
- ALTER SYSTEM で永続変更可能
- 誤操作しにくい(バイナリ)
- Oracle 9i 以降の標準
Q2. SCOPE のデフォルトは?
SPFILE で起動なら BOTH、PFILE で起動なら MEMORY(SPFILE 使えないため)。
Q3. 変更内容の履歴を残せる?
単一の update_comment のみ(次の変更で消える)。alert log で追跡可能:
tail -f /u01/app/oracle/diag/rdbms/orcl/orcl/trace/alert_ORCL.log
Q4. パラメータ数はいくつ?
Oracle 19c では約 400 以上。バージョンで増加傾向。
Q5. Underscore パラメータ(_ 始まり)
隠しパラメータ。Oracle Support の指示なしで変更禁止。
-- Underscore パラメータの確認(要 SYSDBA)
SELECT name, value
FROM sys.x$ksppi p, sys.x$ksppcv v
WHERE p.indx = v.indx
AND name LIKE '\_%' ESCAPE '\'
ORDER BY name;
Q6. 変更前後の比較
-- 変更前
CREATE PFILE = '/tmp/init_before.ora' FROM SPFILE;
-- 変更
ALTER SYSTEM SET ...;
-- 変更後
CREATE PFILE = '/tmp/init_after.ora' FROM SPFILE;
-- diff
-- Linux: diff /tmp/init_before.ora /tmp/init_after.ora
Linux のファイル差分確認方法は、diff/colordiff/vimdiff 使い方の記事、Linux find オプション一覧の記事、grep オプション一覧の記事等も参照してください。
Q7. Autonomous DB でのパラメータ管理
Oracle が自動管理。ユーザーは特定パラメータのみ変更可能:
ALTER SESSION SET ...;
大半は自動チューニング。
Q8. AWS RDS Oracle での変更
Parameter Group 経由:
- Custom Parameter Group 作成
- パラメータ変更
- RDS インスタンスに適用
- 再起動(必要な場合)
Q9. パラメータの依存関係
一部パラメータは相互依存:
SGA_TARGET<=SGA_MAX_SIZESESSIONS=PROCESSES * 1.5(自動)MEMORY_TARGET<=MEMORY_MAX_TARGET
Q10. DEFERRED の使い所
新セッションから反映したい場合:
ALTER SYSTEM SET sort_area_size = 65536 DEFERRED;
-- 既存セッションはそのまま、新セッションから反映
Q11. CDB/PDB での違い
- CDB$ROOT レベル: 全 PDB に影響
- PDB レベル: その PDB のみ
- 一部パラメータは CDB でのみ変更可
-- 各 PDB での確認
ALTER SESSION SET CONTAINER = PDB1;
SHOW PARAMETER ...
Q12. パラメータ値の単位
- バイト系: G/M/K サフィックス使える
ALTER SYSTEM SET sga_target = 4G; -- 4GBALTER SYSTEM SET sga_target = 4096M; -- 同じ - 秒系: 数値のまま
- リスト系: カンマ区切り
参考リンク
Oracle 公式
- V$PARAMETER Reference
- V$SYSTEM_PARAMETER Reference
- V$SPPARAMETER Reference
- Initialization Parameters
- Managing Initialization Parameters
まとめ
Oracle パラメータ確認と変更 の要点を再整理します。
5大ビュー
| ビュー | 対象 | 用途 |
|---|---|---|
| V$PARAMETER | 現在セッション | 通常確認 |
| V$SYSTEM_PARAMETER | インスタンス | 標準値 |
| V$SPPARAMETER | SPFILE | 永続値 |
| V$PARAMETER2 | セッション(リスト展開) | 詳細 |
| V$OBSOLETE_PARAMETER | 廃止 | 互換確認 |
確認コマンド
-- 対話形式
SHOW PARAMETER <name>
SHOW SPPARAMETERS <name>
-- SQL
SELECT name, value, isdefault, ismodified, issys_modifiable
FROM v$parameter WHERE name = 'sga_target';
変更コマンド
-- セッションレベル
ALTER SESSION SET nls_date_format = 'YYYY-MM-DD';
-- インスタンスレベル
ALTER SYSTEM SET pga_aggregate_target = 4G SCOPE = BOTH;
ALTER SYSTEM SET processes = 500 SCOPE = SPFILE;
-- リセット
ALTER SYSTEM RESET pga_aggregate_target SCOPE = SPFILE;
-- コメント付き
ALTER SYSTEM SET cursor_sharing = 'FORCE'
COMMENT = 'Fix on 2026-06-15' SCOPE = BOTH;
SCOPE 使い分け
| SCOPE | 効果 |
|---|---|
| MEMORY | 現インスタンスのみ |
| SPFILE | 次回起動から |
| BOTH(デフォルト) | 両方 |
重要パラメータ Top 10
- SGA_TARGET / SGA_MAX_SIZE(メモリ)
- PGA_AGGREGATE_TARGET(メモリ)
- PROCESSES / SESSIONS(接続)
- OPEN_CURSORS(カーソル)
- NLS_DATE_FORMAT(日付)
- OPTIMIZER_MODE(オプティマイザ)
- CURSOR_SHARING(カーソル戦略)
- DDL_LOCK_TIMEOUT(DDL タイムアウト)
- UNDO_RETENTION(UNDO 保持)
- DB_BLOCK_SIZE(ブロックサイズ、変更不可)
動的 vs 静的
-- 動的か静的か
SELECT name, issys_modifiable
FROM v$parameter
WHERE name = '対象';
-- IMMEDIATE: 動的
-- DEFERRED: 遅延反映
-- FALSE: 静的(再起動要)
PFILE/SPFILE 操作
-- SPFILE から PFILE
CREATE PFILE = '/tmp/init.ora' FROM SPFILE;
-- PFILE から SPFILE
CREATE SPFILE FROM PFILE = '/tmp/init.ora';
-- 現在の使用確認
SHOW PARAMETER spfile
環境別対応
| 環境 | 変更方法 |
|---|---|
| オンプレ | SPFILE + ALTER SYSTEM |
| AWS RDS | Parameter Group |
| Autonomous DB | 一部のみ変更可、自動管理 |
| Docker Oracle | 起動時環境変数 or ALTER SYSTEM |
事故防止
- 変更前に PFILE バックアップ
- 静的 vs 動的を確認
- 極端な値は避ける
- SCOPE を意識
- 本番は事前テスト
- update_comment 活用
- alert log で変更履歴確認
これらの知識は、Oracle DB の日常運用・パフォーマンスチューニング・トラブル対応・環境構築・Rails / Kamal / Docker 開発など、あらゆる場面で活用できます。本記事をブックマークしておけば、パラメータ関連の作業を確実に実施できるようになります。
本記事は2026年6月時点の情報をもとに、Oracle Database 19c〜23ai での動作確認・公式ドキュメントに基づき作成しています。Oracle のバージョンにより挙動が異なる場合があるため、最新の情報は Oracle 公式ドキュメント(docs.oracle.com)もあわせてご確認ください。
-
前の記事
【完全ガイド】ORA-04091: table is mutating の原因と解決方法|Compound Trigger・Autonomous Transaction まで徹底解説 2026.07.19
-
次の記事
【完全ガイド】ORA-00001: unique constraint violated の原因と解決方法|MERGE・IGNORE_ROW_ON_DUPKEY_INDEX・IDENTITY まで徹底解説 2026.07.21
コメントを書く