初期化パラメータ概観
DBには起動時に読み込まれる多数のパラメータがあります。それぞれ「変更前にバックアップ・テスト」「本番反映前に静的/動的どちらかを確認」「再起動要否を必ず確認」が鉄則です。
パラメータ名は製品により異なる。「メモリ」「I/O」「ログ」「セッション数」の観点で押さえると応用が利く。
メモリ関連の考え方
サーバ物理メモリ ≈ OS + DB 共有メモリ + セッション × 接続数
- OS
- 共有メモリ(SGA/Buffer Pool)
- セッション(PGA × N)
- 予備
共有メモリは大きいほど良い……ではない
OSのキャッシュやセッションを圧迫すると逆に遅くなる。物理メモリの50〜70%が目安。
接続数 × 1セッション当りメモリ
アプリのプールが100接続、1セッションあたり10MBなら、それだけで1GB。
ソートメモリ(work_mem等)を意識
巨大ソートを避けたければPGA/work_memを増やす。ただし全セッション分の総和に注意。
ヒュージページ / メモリロック
本番環境ではOSのヒュージページを有効化し、DBの共有メモリをロック。
ファイル配置とI/O設計
理想的な物理分離(例)
- Disk 1: OS / DBバイナリ
- Disk 2: データファイル(USERS, INDEX)
- Disk 3: オンラインREDO + 制御ファイル(多重化)
- Disk 4: アーカイブログ
- Disk 5: 一時表領域(TEMP)+ UNDO
- Disk 6: バックアップ出力先
配置の原則
- REDOはシーケンシャル書き込み中心 ⇒ 専用の高速ディスクに
- データファイルはランダムI/O中心
- REDOとバックアップ出力は必ず分離(同時故障の防止)
- 制御ファイルは3つ以上に多重化
- アーカイブの空き枯渇は即サービス停止に直結
- クラウドの場合はIOPSで設計
文字コード・タイムゾーン・監査
文字コード
DB作成後に変更困難。
- UTF-8(AL32UTF8 / UTF8MB4)を強く推奨
- 絵文字や4バイト文字を含む業務では必須
- アプリ側クライアントのキャラセットと一致させる
タイムゾーン
DB時刻とアプリ時刻のズレ事故が多発。
- サーバ・DBのTZを明示的に固定(例: UTC)
WITH TIME ZONE型を活用- ログのタイムスタンプとも揃える
NLS / 通貨書式
ロケール依存の表示・数値解釈。
- 小数点の「.」「,」の差異
- 日付フォーマットの暗黙変換に注意
- サーバ側書式とアプリ側書式を明示する
監査(Audit)
誰が何をしたかの記録。
- 最低でもDDL・権限変更・接続失敗は監査
- 監査ログは別領域・別ディスクへ
- 改ざん防止のため書き込み専用ストレージ等を検討