設定されている初期化パラメータがデフォルト値か判断する

  • V$PARAMETER の ISDEFAULT 列から判断可能。

docs.oracle.com

  • ISDEFAULT 列の値が TRUE なら デフォルト値(または init.ora , spfile に指定されていない)
  • FALSE なら 任意に指定した値

試しに db_writer_processes を変更してみる。

SQL> -- 変更前のパラメータ値確認
show parameter db_writer_processes;SQL> 

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_writer_processes                  integer     1

SQL> -- 変更前、デフォルト値か否かを確認
set lines 120 pages 1000
col name           format a35
col value          format a25
col isdefault      format a9
col default_value  format a25 

select 
  name,
  value,
  isdefault,
  default_value
from v$parameter
where name = 'db_writer_processes';SQL> SQL> SQL> SQL> SQL> SQL> SQL>   2    3    4    5    6    7  

NAME                                VALUE                     ISDEFAULT DEFAULT_VALUE
----------------------------------- ------------------------- --------- -------------------------
db_writer_processes                 1TRUE0

# ISDEFAULT 列が TRUE なので現在デフォルト値、またはspfileに指定されていない値となっている。

SQL> -- パラメータ値変更
alter system set db_writer_processes = 3 scope = spfile;SQL> 

システムが変更されました。

SQL> -- DB 再起動
shutdown immediateSQL> 
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。

SQL> startup
ORACLEインスタンスが起動しました。

Total System Global Area 1392508928 bytes
Fixed Size                  8620608 bytes
Variable Size             469763520 bytes
Database Buffers          905969664 bytes
Redo Buffers                8155136 bytes
データベースがマウントされました。
データベースがオープンされました。

SQL> -- 変更後のパラメータ値確認
show parameter db_writer_processes;SQL> 

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_writer_processes                  integer     3

SQL> -- 変更後、デフォルト値か否かを確認
set lines 120 pages 1000
col name           format a35
col value          format a25
col isdefault      format a9
col default_value  format a25 

select 
  name,
  value,
  isdefault,
  default_value
from v$parameter
where name = 'db_writer_processes';SQL> SQL> SQL> SQL> SQL> SQL> SQL>   2    3    4    5    6    7  

NAME                                VALUE                     ISDEFAULT DEFAULT_VALUE
----------------------------------- ------------------------- --------- -------------------------
db_writer_processes                 3FALSE0

# ISDEFAULT 列が FALSE なので指定した値がセットされている。