SPFILEを作る
Oracle Databaseの初期化パラメーターはPFILEと呼ばれるテキスト・ファイルとSPFILEと呼ばれるバイナリ・ファイルに記述されます。古いバージョンのOracle DatabaseではPFILEが使われていましたが、現在はALTER SYSTEM文を使って動的に更新できるSPFILEを使う方法が一般的です。
PFILEの作成とSPFILEの作成
現在使われているSPFILEを確認するには初期化パラメーターspfileを確認します
SQL> SHOW PARAMETER spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string +DATA1/ORCL/PARAMETERFILE/spfi
le.265.962448525
上記の例ではASM DISKGROUP +DATA1に作成されたSPFILEが使われていることがわかります。SPFILEからテキスト形式のPFILEを作成するにはCREATE PFILE文を実行します。
SQL> CREATE PFILE='/home/oracle/initORCL.ora' FROM SPFILE;
ファイルが作成されました。
上記の例ではSPFILEのパスを指定していません。パスを省略すると現在使用されているSPFILEが使われます。
SPFILEを再作成することはあまりありませんが、何等かの事情で再作成する場合は、PFILEを元にして作成します。SPFILEの作成にはCREATE SPFILE文を実行します。下記の例ではASM DISKGROUP +DATA2にSPFILEを作成しています。
SQL> CREATE SPFILE='+DATA2' FROM PFILE='/home/oracle/initORCL.ora' ;
ファイルが作成されました。
Oracle Grid Infrastructureとの関係
CREATE SPFILE文を実行するデータベースがOracle Grid Infrastructureの配下に置かれている場合、CREATE SPFILE文を実行するとクラスタウェアの設定が自動的に変更されます。マニュアルには以下のように記載されていますが、わかりにくい表記です。
データベースがOracle Clusterwareでリソースとして定義されており、コマンドの発行元のインスタンスが実行中で、| spfile_nameとFROM PFILE句を指定し、AS COPY句を省略した場合、この文はデータベース・リソース内のSPFILEを自動的に更新します。この場合、サーバー・パラメータ・ファイルを名前で参照せずにデータベースを起動できます。コマンドの発行元のインスタンスが実行中でない場合は、データベース・リソース内のSPFILEを、srvctl modify database -d dbname -spfile spfile_pathを使用して手動で更新する必要があります。
CREATE SPFILE文実行前の設定は以下の通りです。ASM DISKGROUP +DATA1のSPFILEが使われることがわかります。
$ srvctl config database -db orcl
Database unique name: ORCL
Database name: ORCL
Oracle home: /u01/app/oracle/product/12.2.0/dbhome_1
Oracle user: oracle
Spfile: +DATA1/ORCL/PARAMETERFILE/spfile.265.962448525
Password file:
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Disk Groups: DATA1
Services:
OSDBA group:
OSOPER group:
Database instance: ORCL
AS COPY句を指定せずにCREATE SPFILE文を実行すると、Oracle Grid Infrastructureのリソース設定が変化します。SPFILEの設定が ASM DISKGROUP +DATA2に移動していることがわかります。
$ srvctl config database -db orcl
Database unique name: ORCL
Database name: ORCL
Oracle home: /u01/app/oracle/product/12.2.0/dbhome_1
Oracle user: oracle
Spfile: +DATA2/ORCL/PARAMETERFILE/spfile.281.968595679
Password file:
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Disk Groups: DATA1,DATA2
Services:
OSDBA group:
OSOPER group:
Database instance: ORCL
Oracle Grid Infrastructureの設定は自動的に変更されますが、データベース・インスタンスの初期化パラメーターspfileは動的に変更できないためCREATE SPFILE文実行前の状態です。このためALTER SYSTEM文で変更されるSPFILEはCREATE SPFILE文実行前のファイルになります。
SQL> SHOW PARAMETER spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string +DATA1/ORCL/PARAMETERFILE/spfi
le.265.962448525