初期化パラメータファイルは通常バイナリ形式(spfile)で記載
Oracleの基本動作に影響を与える各種設定値が記載されているのが初期化パラメータファイルです。初期化パラメータは通常バイナリ形式(spfile)に記載されています。pfile(テキストファイル)で作成する事もできるのですがspfileがデフォルトです。一見テキストファイルの方が便利そうですが、pfileの場合ALTESR SYSTEM SET文で変更でした内容が反映されません。つまり再起動すると手動でpfileを更新しない限り、ALTER SYSTEM SETで設定した内容は元に戻ってしまいます。(たしか8iぐらいのバージョンまではpfileしかなかったはず、、、)
初期化パラメータファイルの所在
spfileが採用されている場合以下SQLで求まるVALUE値にパラメータファイル名がフルパスで出力されます。
確認SQL
select name,type,value from v$parameter2 where name='spfile' ;
確認例
SQL> set lin 200
SQL> COLUMN name FORMAT A6
SQL> COLUMN value FORMAT A66
SQL> select name,type,value from
2 v$parameter2 where name='spfile'
3 ;
NAME TYPE VALUE
------ ---------- ------------------------------------------------------------------
spfile 2 /usr/oracle/app/product/12.1.0/dbhome_1/dbs/spfileorau8.ora
SQL>
パラメータ値の確認方法は2つ
初期化パラメータファイルに記載されている各パラメータ値は以下2つの確認方法がありますが、何れも利用するユーザは動的パフォーマンス・ビューの参照権限を持っている必要があります。
1.SQL*PlusやSQLclのSHOW PARAMETERS コマンドで確認
show parameterとそのまま打つと全ての初期化パラメータを一覧表示しますが、以下のようにキーワードを付けて検索する事も可能です(大文字/小文字問わず検索してくれます)
SQL> set lin 100
SQL> set pages 50
SQL> show parameter UNDO
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
temp_undo_enabled boolean FALSE
undo_management string AUTO
undo_retention integer 60
undo_tablespace string UNDOTBS1
SQL>
2.動的パフォーマンスVIEWを参照して確認
現在のインスタンスにおける設定値を確認するにはV$SYSTEM_PARAMETERを、現セッションにおける設定値を確認するにはV$PARAMETERを参照するようにします。基本的にはセッションが作成されるタイミングで V$SYSTEM_PARAMETER の値が V$PARAMETER へ引き継がれるので同じ値を確認できますが、ALTER SESSION SET XXXで変更した場合等は異なる値を確認できます。初期化パラメータによっては1つの項目に複数の値が設定されており、この場合はカンマ区切りで格納されている。このイマイチな仕様を解消するために V$SYSTEM_PARAMETER2、 V$PARAMETER2 がそれぞれ用意されています。こちらは設定値の分だけ行で保持しています。一般的に多重化して管理する事が推奨されている制御ファイルはcontrol_files初期化パラメータに定義されていますが、V$PARAMETERで確認すると対象のファイルが複数カンマ区切りに設定されている事に対し、V$PARAMETER2で確認すると1行づつ確認できます。(でも実際はほとんどの項目が1つしか入っていないので私もついV$PARAMETERのほうを使いがちです、、)
現セッションの初期化パラメータをv$parameter2で確認する
select t.NUM,t.NAME,t.VALUE,t.ISDEFAULT,t.DESCRIPTION from v$parameter2 t order by t.NAME,t.VALUE ;
一般的にネットで初期化パラメータの説明がされる場合「大文字」「小文字」そのぞれで解説がされているので実際はUPPER()ファンクションなどと使って検索するとよいです。(実際DB内では小文字で格納されています)
select name,type,value from v$parameter2 where upper(name) like upper('%TARGET%') ;
SQL*Plus表示用
set lin 200 set PAGESIZE 100 COLUMN name FORMAT A40 COLUMN type FORMAT 99990 COLUMN value FORMAT A30
初期化パラメータサンプル
No. | 初期化パラメータ(サンプル ) | 補足 |
---|---|---|
1 | sga_target | SGAターゲット。自動メモリ管理を無効にする場合未設定もしくは0を設定する。 |
2 | optimizer_dynamic_sampling | 動的統計のサンプリングレベル。デフォルトは2 |
3 | db_cache_size | デフォルトバッファプール |
4 | db_keep_cache_size | Keepバッファプールのサイズ(標準ブロックサイズ) |
5 | db_recycle_cache_size | リサイクルバッファプールのサイズ(標準ブロックサイズ) |
6 | db_block_size | DBのブロックサイズ |
7 | nls_* | NLS系の各種設定(ここの値はアプリの動作に直結する事が多くよく確認します) |
8 | control_management_pack_access | Oracleの有償機能「Diagnostics Pack、Tuning Pack」が使用可能かどうかを確認します。(AWRなどが含まれる) 利用できる場合、『 DIAGNOSTIC+TUNING 』と出てきます |