OracleDB

[OracleDB] 初期化パラメータ変更と事前バックアップ、リセット方法

2018年5月21日

こんにちは!土門大貴(daikidomon)です。

Oracle Databaseの初期化パラメータの変更手順について紹介したいと思います。

この記事の目的

  • 初期化パラメータの変更方法
  • 初期化パラメータの変更前のバックアップ
  • 初期化パラメータをデフォルト値に戻す方法

初期化パラメータの変更方法

初期化パラメータの変更は「alter system set」文で行います。

初期化パラメータを変える方法は3つのやり方があります。

  1. spfileの設定を変える
  2. メモリー上の設定を変える
  3. 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」で初期パラメータをデフォルト値に戻せる

関連記事

-OracleDB

Copyright© スタートアップIT企業社長のブログ , 2020 All Rights Reserved.