【完全ガイド】Oracle パラメータ確認(V$PARAMETER)|V$系ビュー・ALTER SYSTEM・重要パラメータまで徹底解説

【完全ガイド】Oracle パラメータ確認(V$PARAMETER)|V$系ビュー・ALTER SYSTEM・重要パラメータまで徹底解説

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 パラメータを確実に管理できるようになります。


目次

結論:まず 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$SPPARAMETERSPFILE の内容永続設定確認
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現在インスタンスのみ一時的テスト
SPFILESPFILE のみ、次回起動から再起動要のパラメータ
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 で起動なら BOTHPFILE で起動なら 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 経由:

  1. Custom Parameter Group 作成
  2. パラメータ変更
  3. RDS インスタンスに適用
  4. 再起動(必要な場合)

Q9. パラメータの依存関係

一部パラメータは相互依存:

  • SGA_TARGET <= SGA_MAX_SIZE
  • SESSIONS = 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 公式


まとめ

Oracle パラメータ確認と変更 の要点を再整理します。

5大ビュー

ビュー対象用途
V$PARAMETER現在セッション通常確認
V$SYSTEM_PARAMETERインスタンス標準値
V$SPPARAMETERSPFILE永続値
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

  1. SGA_TARGET / SGA_MAX_SIZE(メモリ)
  2. PGA_AGGREGATE_TARGET(メモリ)
  3. PROCESSES / SESSIONS(接続)
  4. OPEN_CURSORS(カーソル)
  5. NLS_DATE_FORMAT(日付)
  6. OPTIMIZER_MODE(オプティマイザ)
  7. CURSOR_SHARING(カーソル戦略)
  8. DDL_LOCK_TIMEOUT(DDL タイムアウト)
  9. UNDO_RETENTION(UNDO 保持)
  10. 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 RDSParameter 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)もあわせてご確認ください。