Oracle Databaseの初期化パラメータの変更手順について紹介したいと思います。
この記事の目的
- 初期化パラメータの変更方法
- 初期化パラメータの変更前のバックアップ
- 初期化パラメータをデフォルト値に戻す方法
初期化パラメータの変更方法
初期化パラメータの変更は「alter system set」文で行います。
初期化パラメータを変える方法は3つのやり方があります。
- spfileの設定を変える
- メモリー上の設定を変える
- spfileとメモリー上の設定を変える
↓がspfileの設定を変えるSQL文です。この方法だと初期化パラメータの反映には再起動が必要になります。
alter system set <初期化パラメータ> = <値> scope = spfile;
↓がメモリーの設定を変えるSQL文です。この方法では即座に設定が反映されます。
しかし再起動されると設定が元に戻ってしまいます。
alter system set <初期化パラメータ> = <値> scope = memory;
↓がspfileとメモリー上の両方の設定を変えるSQL文です。即座に設定が反映され、再起動しても設定は戻りません。
alter system set <初期化パラメータ> = <値> scope = both;
ただし、「scope = memory or both」は動的に変更できるパラメータしたSQLは実行できません。
もし動的に変更できないパラメータの指定した場合「ORA-02095: 指定した初期化パラメータを変更できません。」となりエラーとなります。
その場合は、「scope = spfile」で設定した後にDBを再起動させる必要があります。
手順を統一させたいので、私のオススメはすべての手順を「scope = spfile」で設定してDBを再起動させる手順です。
↓が「scope = spfile」を使用した実行ログになります。
13:57:40 SYS@orcl > alter system set processes = 500 scope = spfile ;
システムが変更されました。
経過: 00:00:00.02
14:00:25 SYS@orcl > shutdown immediate
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
14:01:07 SYS@orcl > startup
ORACLEインスタンスが起動しました。
Total System Global Area 1258291200 bytes
Fixed Size 8620224 bytes
Variable Size 520095552 bytes
Database Buffers 721420288 bytes
Redo Buffers 8155136 bytes
データベースがマウントされました。
データベースがオープンされました。
14:02:30 SYS@orcl > show parameter processes
NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
processes integer 500
初期化パラメータの変更確認
初期化パラメータの変更は「show parameter」か「gv$spparameter」で確認します。
今回はRAC環境でも使用できるように「gv$ビュー」を使用しています。
もちろん非RAC環境でも利用できるSQLです。 「show parameter」を使用したコマンドは↓です。
show parameter <初期化パラメータ>
↓が実行ログです。
> show parameter processes
NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
processes integer 500
次に「show parameter」を使用したコマンドは↓です。
select
SID
, NAME
, VALUE
from gv$spparameter
where NAME = <初期化パラメータパラメータ>;
↓が実行ログです。
14:11:32 SYS@orcl > select
14:11:37 2 SID
14:11:37 3 , NAME
14:11:38 4 , VALUE
14:11:38 5 from gv$spparameter
14:11:38 6 where NAME = 'processes';
SID NAME VALUE
---------- -------------------- ----------
* processes 500
初期化パラメータのバックアップ:pfileを作成
初期化パラメータのバックアップには「spfileからpfileを作成」をオススメしています。
この方法ですとテキストファイルになっているのでパラメータに何が設定されているか分かります。
↓がバックアップの作成方法(pfileの作成方法)です。
create pfile='pfileをフルパスで指定' from spfile;
↓実行ログになります。
14:12:14 SYS@orcl > create pfile='/home/oracle/spfileBackup_20180520.ora' from spfile;
ファイルが作成されました。
経過: 00:00:00.02
14:22:45 SYS@orcl > !cat /home/oracle/spfileBackup_20180520.ora
初期化パラメータをデフォルト値に戻す
初期化パラメータのデフォルト値に戻すのは「alter system reset」で行います。
↓がデフォルト値に戻す手順となります。設定時の手順と同じで「scope = spfile」で戻すことをオススメします。
alter system reset <初期化パラメータ> scope = spfile ;
↓が実行ログになります。
14:26:18 SYS@orcl > alter system reset processes scope = spfile ;
システムが変更されました。
経過: 00:00:00.02
14:26:19 SYS@orcl > shutdown immediate
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
14:26:52 SYS@orcl > startup
ORACLEインスタンスが起動しました。
Total System Global Area 1258291200 bytes
Fixed Size 8620224 bytes
Variable Size 402655040 bytes
Database Buffers 838860800 bytes
Redo Buffers 8155136 bytes
データベースがマウントされました。
データベースがオープンされました。
14:27:11 SYS@orcl > show parameter processes
NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
processes integer 200
まとめ
本記事のまとめ
– alter system set <初期パラメータ> = <パラメータ値> **scope = spfile**で設定変更
– 「**show parameter**」か「**gv$spparameter**」でパラメータ値を確認
– 「**spfileからpfileを作成**」してバックアップ
– 「**alter system reset**」で初期パラメータをデフォルト値に戻せる