oracle初期化パラメータの内容を確認・更新する

オラクルデータベースの初期化パラメータの内容を確認してみよう。

 

select a.NAME,a.VALUE from v$parameter a 

where a.NAME='sga_max_size';

 

初期化パラメータの内容を変更してみよう。変更する初期化パラメータはshared_pool_sizeにします。

まず、現在のパラメータを確認します。

 

select a.NAME,a.VALUE from v$parameter a 

where a.NAME='shared_pool_size';

 

次のSQL文でshared_pool_sizeの値を変更します。

 

alter system set shared_pool_size = 4194304 scope = memory;

 

値が変更されました。

 

次にログバッファの値を変更してみよう。まず現在の設定内容を確認する。

 

select a.NAME,a.VALUE from v$parameter a where a.NAME='log_buffer';

 

先ほどshared_pool_sizeをalter system文で変更したので同様に変更してみると、

 

alter system set log_buffer = 6775360 scope = memory;

変更できませんでした。これはlog_bufferの値は動的に変更できないように制限されているからです。

変更するには、初期化パラメータ―ファイルを変更しインスタンスを再起動する必要があります。

 

どの初期化パラメーターが現行値を変更できて、どの初期化パラメータ―が変更できないのかは以下のSQLで確認できます。

 

select a.NAME,a.VALUE,a.ISINSTANCE_MODIFIABLE 

from v$parameter a where a.NAME in ('log_buffer','shared_pool_size');

 

ISINSTANCE_MODIFIABLEの値がFALSEの初期化パラメーターは動的に変更ができません。

初期化パラメータファイルの値を変更しインスタンスを再起動する必要があります。

 

 

次に初期化パラメータ―の値を変更したためインスタンスの起動に失敗した時の対処方法を実際に確認してみます。

sga_max_sizeの値を変更してインスタンスの再起動に失敗するケースでみていきます。

 

現在のsga_max_sizeの値を確認します。

 

select a.NAME,a.VALUE,a.ISINSTANCE_MODIFIABLE 

from v$parameter a where a.NAME in ('sga_max_size');

 

VALUE値はグラニュルという最小単位で変更します。sga_max_sizeが1GB以下の時はグラニュルは4MBになります。

1GBより大きい場合、16MBになります。32ビットWindowsの場合は8MBになります。

現在、sga_max_sizeは440MBに設定されているため、グラニュルは4MBです。

 

1[MB] = 1024×1024 = 1048576[Byte]

4[MB] = 4194304[Byte]

 

sga_max_sizeを444MBに変更してみよう。

初期化パラメータ―ファイルの変更は成功しました。

データベースをシャットダウンして再起動してみます。

初期化パラメータ―の変更が影響してインスタンスの再起動に失敗してしまいます。

 

初期化パラメータ―ファイルの値を元の値に戻します。

データベースはシャットダウンしているためalter system文を使用することはできません。

また、SPFILEはバイナリファイルのためテキストエディタ等で編集してもとの値に戻すこともできません。

 

まずSPFILEからPFILEを作成します。

PFILEはテキストファイルのためテキストエディタで内容の編集が可能です。

間違えて変更してしまったSPFILEは不要のため別の名称に変更しておきます。

spfile + SID名 + .ora というファイル名をリネームすればよい。

 

C:\app\Admin\product\11.2.0\dbhome_1\database>rename SPFILEORA1.ORA SPFILEORA1.ORA.OLD

 

 

init + SID名 + .ora というファイルを編集して、今回変更した初期化パラメータファイルPFILEをSPFILEに戻す。

オラクルを再起動します。正常に起動しました。