初期化パラメーター・ファイル
Oracle Database には400以上の初期化パラメーター(隠しパラメーターを除く)が定義されています。これらは初期化パラメーター・ファイルに記述され、インスタンス起動時に利用されます。ALTER SYSTEM 文で動的に変更されたパラメーターは SPFILE に永続化されることもあります。
初期化パラメーター・ファイルの保存場所には以下の3種類が考えられます。
テキスト形式(PFILE)
PFILE は {ORACLE_HOME}/dbs/init{ORACLE_SID}.ora ファイルとして作成されます。
テキストエディタで修正するか、CREATE PFILE 文で SPFILE ファイルから生成します。
INCLUDE 句を使って SPFILE の場所を示すこともできます。
$ cat initO19A.ora
*.control_files=('+DATA','+MGMT')
*.db_name='O19A'
*.db_unique_name='O19S'
*.sga_target=10G
バイナリ形式(サーバー・パラメータ・ファイル=SPFILE)
SPFILE はバイナリファイルの形式で {ORACLE_HOME}/dbs/spfile{ORACLE_SID}.ora ファイルとして作成します。CREATE SPFILE 文で PFILE から作成します。
Oracle Grid Infrastructure の属性(SPFILE)
データベースが Oracle Grid Infrastructure 配下にある場合、SPFILE の場所は Oracle Grid Infrastructure のデータベース属性として定義されます。CREATE SPFILE 文で ASM 領域等の任意の場所にファイルを作成できます。下記は SPFILE を ASM ディスクグループ +DATA に保存したことを示しています。Oracle Database 起動時は ASM に保存された初期化パラメーター・ファイルを使用します。
$ srvctl config database -db o19s
Database unique name: o19s
Database name: o19a
Oracle home: /u01/app/oracle/product/19.0.0/dbhome_1
Oracle user: oracle
Spfile: +DATA/O19S/PARAMETERFILE/spfile.477.1132410857 ← ここ
Password file:
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools:
Disk Groups: DATA,MGMT
Mount point paths:
Services: o19s
Type: RAC
Start concurrency:
Stop concurrency:
OSDBA group: dba
OSOPER group: oper
Database instances: o19s1,o19s2
Configured nodes: rel87-1,rel87-2
CSS critical: no
CPU count: 0
Memory target: 0
Maximum memory: 0
Default network number for database services:
Database is administrator managed
使用される順序
{ORACLE_HOME}/dbs ディレクトリに PFILE と SPFILE を配置し、かつ Oracle Grid Infrastructure の属性として ASM ディスクグループにも置いた状態でインスタンスを起動します。
$ cd $ORACLE_HOME/dbs
$ ls -l inito19s1.ora spfileo19s1.ora
-rw-r--r-- 1 oracle oinstall 756 Mar 26 10:59 inito19s1.ora
-rw-r----- 1 oracle asmadmin 2560 Mar 26 10:59 spfileo19s1.ora
$ srvctl config database -db o19s | grep Spfile
Spfile: +DATA/O19S/PARAMETERFILE/spfile.477.1132410857
$ srvctl start database -db o19s
$ sqlplus / as sysdba
SQL> SHOW PARAMETER SPFILE;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string +DATA/O19S/PARAMETERFILE/spfil
e.477.1132410857
Oracle Grid Infrastructure に保存されたファイルが使われていることがわかります。上記のように 1: Grid Infrastructure管理の SPFILE, 2: SPFILE, 3: PFILE の順で優先順位が高いことがわかります。
あとがき
検証としては上記の通りになったのですが、Grid Infrastructure と PFILE のみの環境で PFILE が使われてしまった事例がありました。あまりないと思いますが PFILE を使った環境では確認が必要かもしれません。
Author: Noriyoshi Shinoda / Date: March 26, 2023