株式会社コーソル

KNOWLEDGE

コーソルの技術情報

コーソルでは経験豊かなエンジニアが、Oracle Databaseに関するお役立ち情報を発信しています。
データベースのチューニングや設定にお役立ていただけます。

KNOWLEDGE検索人気のキーワード

Oracle DB ベストプラクティス

サーバーパラメータファイル(spfile)の復旧方法

初期化パラメータを格納するファイルの形式として、現在はサーバーパラメータファイル(spfile)を使用することが一般的です。
サーバーパラメータファイルにはいくつかの利点があります。しかし、テキスト形式の初期化パラメータファイルでは簡単にできたことが、すこし工夫が必要で面倒になってしまう状況がいくつかあります。そのうちの1つであるバックアップが存在しない状況において、サーバーパラメータファイルが破損した時の復旧方法について記載します。

01.以前の設定内容でテキスト形式の初期化パラメータファイルを作成する

初期化パラメータの設定内容を把握し、その設定でテキスト形式の初期化パラメータファイルを作成します。
インスタンス起動時にアラートログへ出力される ‘System parameters with non-default values’という箇所に、サーバーパラメータファイルに明示的に設定された設定項目が出力されますので、これを参考にします。

Starting up ORACLE RDBMS Version: 11.1.0.7.0.
Using parameter settings in server-side spfile C:¥ORACLE¥PRODUCT¥11.1.0¥EE2¥DATABASE¥SPFILEORCL.ORA
System parameters with non-default values:
processes                = 150
nls_language             = "JAPANESE"
nls_territory            = "JAPAN"
memory_target            = 300M
control_files            = "C:¥ORACLE¥ORADATA¥ORCL¥CONTROL01.CTL"
control_files            = "C:¥ORACLE¥ORADATA¥ORCL¥CONTROL02.CTL"
control_files            = "D:¥ORADATA¥CONTROL03.CTL"
db_block_size            = 8192
compatible               = "11.1.0.0.0"
db_recovery_file_dest    = "G:¥fra"
db_recovery_file_dest_size= 10G
undo_tablespace          = "UNDOTBS1"
remote_login_passwordfile= "EXCLUSIVE"
db_domain                = ""
dispatchers              = "(PROTOCOL=TCP) (SERVICE=ORCLXDB)"
audit_file_dest          = "C:¥ORACLE¥ADMIN¥ORCL¥ADUMP"
db_name                  = "ORCL"
open_cursors             = 300
aq_tm_processes          = 0
diagnostic_dest          = "C:¥ORACLE"
Mon Apr 27 16:49:26 2009
PMON started with pid=2, OS id=2196

この出力は「初期化パラメータ名 = 設定値」という初期化パラメータファイルでの記載フォーマットになっているため、Oracle Database 11.1 以降ではそのまま初期化パラメータファイルに流用できます。
具体的には、上記出力を例にすると、「processes = 150」の箇所から「diagnostic_dest = “C:¥ORACLE”」までの箇所をcopyして行頭の空白をとりのぞいたテキストを、初期化パラメータファイルとして保存すればOKです。
ただし、Oracle Database 10.2以前では、設定値が数値でない初期化パラメータについては、設定値がダブルクオートで囲まれていないことに注意が必要です。初期化パラメータファイルに設定を記載する場合、設定値に特殊文字(’#’:シャープ記号, ‘(‘:左カッコ, ‘)’:右カッコ, ‘”‘:二重引用符, ”’:一重引用符, ‘=’:等号, ‘,’:カンマ, ‘-‘:マイナス記号, ‘\’:バックスラッシュ)が含まれている場合は、ダブルクオートで囲む必要があります。

System parameters with non-default values:
processes                = 150
nls_language             = JAPANESE
nls_territory            = JAPAN
sga_target               = 268435456
control_files            = C:¥ORACLE¥ORADATA¥O10204¥CONTROL01.CTL, C:¥ORACLE¥ORADATA¥O10204¥CONTROL02.CTL, C:¥ORACLE¥ORADATA¥O10204¥CONTROL03.CTL
db_block_size            = 8192
compatible               = 10.2.0.3.0
db_file_multiblock_read_count= 16
db_recovery_file_dest    = C:¥oracle¥flash_recovery_area
db_recovery_file_dest_size= 6442450944
undo_management          = AUTO
undo_tablespace          = UNDOTBS1
remote_login_passwordfile= EXCLUSIVE
db_domain                =
dispatchers              = (PROTOCOL=TCP) (SERVICE=O10204XDB)
job_queue_processes      = 10
audit_file_dest          = C:¥ORACLE¥ADMIN¥O10204¥ADUMP
background_dump_dest     = C:¥ORACLE¥ADMIN¥O10204¥BDUMP
user_dump_dest           = C:¥ORACLE¥ADMIN¥O10204¥UDUMP
core_dump_dest           = C:¥ORACLE¥ADMIN¥O10204¥CDUMP
db_name                  = O10204
open_cursors             = 300
MMAN started with pid=4, OS id=2916

もちろん、初期化パラメータの設定内容が記載された設計書などのドキュメントがあれば、これも参考にできます。

02.暫定的に作成した初期化パラメータファイルでインスタンスを起動する

上記の手順で作成した初期化パラメータファイルのファイル名を init[ORACLE_SID].ora として、デフォルトの位置(ディレクトリ)に配置します。

  • UNIX/Linux $ORACLE_HOME/db
  • Windows %ORACLE_HOME%¥database

 

デフォルトの位置に、spfile[ORACLE_SID].ora、spfile.ora という名前のファイルがある場合、これが優先して読み込まれてしまい、上記の手順で作成した初期化パラメータファイルが読み込まれません。この場合、spfile[ORACLE_SID].ora、spfile.ora のファイル名を他のファイル名にリネームしておきます。
初期化パラメータファイルを適切に配置したら、startupコマンドでインスタンスを起動します。

03.初期化パラメータファイルからサーバーパラメータファイルを作成します

CREATE SPFILE FROM PFILE コマンドを実行して、初期化パラメータファイルからサーバーパラメータファイルを作成します。

SQL> CREATE SPFILE FROM PFILE;

サーバーパラメータファイルはデフォルトの位置にspfile[ORACLE_SID].ora として作成されます。
インスタンスを再起動すると、インスタンスはサーバーパラメータファイルを読み込みます。
読み込みの優先度が低いため、暫定的に作成した初期化パラメータファイルは以後読み込まれません。しかし、混乱を避けるため、削除するか別のファイル名にリネームすることが良いでしょう。

この記事の監修者

監修者の写真

舛井 智行 (ますい ともゆき)

営業本部 企画&マーケティング部 次長

《資格》

Oracle Master Gold、Oracle RAC Expert、Linux Expert、LPIC Level1、Dbvisit Standby Certified Associate、基本情報技術者

《略歴》

2004年コーソル入社。2019年まで一貫してOracle Databaseの設計・構築・運用のサービス提供に従事。リモートDBAやリモート監視のサービス化、働き方改革プロジェクトで人事制度改革を手掛ける。2019年からライセンス販売強化のため企画&マーケティング部に異動。DbvisitやToad、DPAの取扱開始、販売促進活動を推し進め、ライセンス販売事業の売上拡大に注力中。

《主な著書》

オラクルマスター教科書 Gold DBA Oracle Database AdministrationⅡ
オラクルマスター教科書 Silver DBA Oracle Database Administration I
オラクルマスター教科書 Silver SQL Oracle Database SQL
Oracleの基本 ~データベース入門から設計/運用の初歩まで
プロとしてのOracle入門
Oracle Database 10g Oracle Enterprise Manager 逆引きクイックリファレンス

《担当者様からの一言》

コーソルはOracle Databaseの技術力において日本有数の知見を有すると自負しています。Oracle Masterの最高峰資格である『Oracle Master Platinum』の取得者数も日本No.1です。Oracle Databaseのことはもちろん、それ以外のDBについてもリモートDBAサービスを始めとした様々なサービス、製品を駆使してお客様のお困りごとを解消いたします。お困りごとがあればコーソルまでご相談ください。

監修者の写真

峯岸 隆一 (みねぎし りゅういち)

インフラソリューション部 市ヶ谷クラウドサービスチーム シニアエキスパート

《資格》

Oracle Master Gold、ORACLE MASTER Platinum、Oracle RAC Expert、
Oracle Database Cloud Service Oracle Infrastructure as a Service Cloud 2017 Implementation Essentials、
Oracle Cloud Infrastructure 2018 Architect Associate、
Oracle Cloud Infrastructure 2019 Architect Professional、
AWS Certified Solutions Architect – Associate、OSS-DB Silver、
MySQL 5.6 Database Administrator、基本情報技術者、テクニカルエンジニア(データベース)

《略歴》

2006年コーソル入社。2021年までOracle Databaseを中心にMySQLやGoldenGateなど、多岐にわたる製品のサポート業務に従事。2021年から企画&マーケティング部に異動し、Nutanix NDBサービス化、Qlik Replicateサービス化、AWS、OCIなど様々な製品のサービス化、クラウド環境上の製品検証、ブログ執筆を手掛ける。2023年からOCI技術に磨きをかけるべくOCI基盤の設計・構築業務を遂行中 。

《主な著書》

オラクルマスター教科書 Gold DBA Oracle Database AdministrationⅡ
オラクルマスター教科書 Silver DBA Oracle Database Administration I
オラクルマスター教科書 Silver SQL Oracle Database SQL  Oracleの基本 ~データベース入門から設計/運用の初歩まで

《担当者様からの一言》

コーソルはOracle Database製品および周辺製品において特化した技術力を有している会社です。また、育成にも力を入れており、新卒などOracle Databaseの知識がないエンジニアでも数年でOracle Master Platinumを取得するほどのエンジニアに育て上げることに成功しています。クラウド分野(AWS、Oracle Cloud)にも積極的に進出しておりますので、Oracle Databaseに関するサービスをご要望であればプラットフォーム問わず対応できるコーソルにご連絡下さい。