PR

 正解は,1と6です。

 今回は,Silver DBAの試験範囲より,インスタンスの起動とリカバリに関する問題です。この問題を解答するためには,Oracle Serverを起動する際の内部処理を理解する必要があります。

 Oracle Serverを起動した際,Oracleは2つの状態を経由して,最終的にユーザーがアクセス可能な状態になります。そのステップは下記のとおりです。

(1)インスタンスの起動
 Oracle Serverを起動したときの最初のステップはインスタンスの起動です。Oracleはまず,初期化パラメータを読み込み,そこに指定されているパラメータ値に基づいて,メモリー上にSGA(System Global Area)を確保します。またバックグラウンドプロセスを起動し,インスタンスの準備が完了します。併せて,アラートログファイルなどの診断ファイルもオープンし,書き込みの準備を行います。この段階が完了した状態を「NOMOUNT状態」と言います。

(2)データベースのマウント
 次に,初期化パラメータのcontrol_filesパラメータに基づいて,制御ファイルを読み込みます。この段階で,インスタンスはオープンすべきデータベースの認識を行います(マウント)。この段階が完了した状態を「MOUNT状態」と言います。

(3)データベースのオープン
 最後に,制御ファイルに記述されている,データファイル,REDOログファイルの場所に基づいて,データファイル,REDOログファイルをオープンします。また,インスタンス障害が認識されると,バックグラウンドプロセスのSMONがクラッシュリカバリを行います。この段階が完了すると,ユーザーはOracleに接続し,通常の操作が可能になります。この段階が完了した状態を「OPEN状態」と言います。

 以上を踏まえ,各段階でOracleの起動が失敗する原因をまとめると以下のようになります。

表●各段階でOracleの起動が失敗する原因
エラーの発生した個所代表的な原因V$INSTANCEのSTATUS列の表示
SHUTDOWN → NOMOUNT・初期化パラメーターを読み込めない
・初期化パラメーターの値が正しくない
OracleはSHUTDOWN状態のままになるため,V$INSTANCEは検索できない
NOMOUNT → MOUNT・制御ファイルが読み込めない
・多重化している制御ファイルの同期が取れていない
STARTED (NOMOUNT状態で止まる)
MOUNT → OPEN・オンラインのデータファイルが読み込めない
・REDOログ・グループが全損している
・オンラインのデータファイルおよび制御ファイルの同期が取れていない
MOUNTED (MOUNT状態で止まる)

 さて,今回の問題の状況で,DBAはV$INSTANCEのSTATUS列により,どの段階で起動処理が失敗したかを確認しました。結果はMOUNTEDですので,MOUNT状態からOPEN状態に移行しようとして失敗したことが分かります。従って,今回の状況が発生した原因としては,選択肢1のデータファイルの破損や選択肢6のREDOログ・グループの全損が考えられます。

 そのほかの選択肢を検討すると以下のようになります。

選択肢2:多重化しているREDOログ・グループの一部が破損した場合,Oracleは通常通りOPENできます。従って誤りです。
選択肢3:SGAの確保に失敗した場合,OracleはNOMOUNTに移行できずに止まります。このとき,V$INSTANCEは検索できません。従って誤りです。
選択肢4:多重化している制御ファイルの同期が取れていない場合は,MOUNTに移行できずに止まります。従って誤りです。
選択肢5:SP(Server Parameter)ファイルのパラメータ値が不正な場合,NOMOUNTに移行できずに止まります。従って誤りです。
選択肢7:アーカイブ・ログ・ファイルの有無は,DBの起動に影響を与えません。アーカイブ・ログ・ファイルが足りない場合,メディア・リカバリで失敗することになります。