LoginSignup
2
2

More than 5 years have passed since last update.

CREATE SPFILE文の動作を試す (Oracle Database 12c Release 2)

Last updated at Posted at 2018-02-20

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

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2