Oracleエラー対応(ORA-01078):「システム・パラメータの処理に失敗しました」の対処方法について

現役DBAが解説 ~Oracleエラー対応~

データベース起動時にORA-01078が発生する可能性があります。

本記事ではORA-01078発生時の原因および対応方法を解説します。

1. エラーメッセージ

SQL> startup		
ORA-01078: システム・パラメータの処理に失敗しました。	

ORA-01078は、パラメータファイルが損失している場合、インスタンス起動時にエラー発生します。

2. 原因・対応

本記事では ORA-01078が発生する代表的なケースをご紹介します。

① サーバ・パラメータファイル(SPFILE)が損失しているケース

データベース起動時にSPFILEと呼ばれるバイナリファイルに記載された初期化パラメータの読み込みを行います。
SPFILEが何かしらの要因により損失していた際に本エラーが発生します。

初期化パラメータを管理するファイルにはSPFILEとPFILEの2種類があります。
初期化パラメータファイル(PFILE)は、oracle9i以前からのテキストファイルとなり、古い初期化パラメータ管理となるため、SPFILEが使用されています。

② 対応方法

障害となるため、復旧対応が必要となります。

方法としては、SPFAILEのバックアップからコピーしファイルを配置、またはPFILEからデータベースを起動しSPFAILEを作成する復旧方法があります。
SPFAILEのバックアップからファイルを配置する方法は簡単ですが、配置する場所はv$parameter表から確認できますので、事前確認をお勧めします。

■SPFAILEの場所確認例

SQL> select value from v$parameter where name = 'spfile';

■PFILEからデータベース起動をおこなう対応例

PFILEからデータベースを起動し復旧する方法です。
まずはログインを行い、PFILEからデータベースを起動します。

SQL> conn /as sysdba
アイドル・インスタンスに接続しました。

SQL> startup pfile='C:apporacleproduct19cdatabaseINITTEST.ora'
ORACLEインスタンスが起動しました。

データベースの起動を確認した後、PFILEからSPFILEを作成します。

SQL> create spfile='C:apporacleproduct19cdatabaseSPFILETEST.ORA' from pfile='C:apporacleproduct19cdatabaseINITTEST.ora';
ファイルが作成されました。

作成後にデータベースを停止。
停止後に通常通りSPFILEからデータベース起動がされれば完了です。

SQL> shutdown immediate
ORACLEインスタンスがシャットダウンされました。	

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

3. 最後に

ORA-01078に関する解説は以上となります。

本エラーはSPFILEとPFILEをバックアップとして保管してあれば対応できる障害になりますので、バックアップ運用の重要性が分かる内容となります。

検証などでデータベース構築を行う際にも、復旧できるようにSPFILEとPFILEをバックアップすることをお勧めします。