厳しい残暑の続くある日、DBインスタンスを起動しようとしたところエラーが出力され、起動に失敗したとの連絡がありました。
リリース準備中の新本番環境で、構成は以下の通りです。
エラー内容は以下の通り。
$ srvctl start database -d orcl
PRCR-1079 : Failed to start resource ora.orcl.db
CRS-5017: The resource action "ora.orcl.db start" encountered the following error:
ORA-03113: end-of-file on communication channel Process ID: 13566184 Session ID: 6 Serial number: 51517 . For details refer to "(:CLSN00107:)" in "/u01/app/grid/diag/crs/myhost/crs/trace/ohasd_oraagent_oracle.trc".
CRS-2674: Start of 'ora.orcl.db' on 'myhost' failed
GIのリソース状況は以下の通り。
$ crsctl stat res -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
(略)
ora.orcl.db
1 ONLINE OFFLINE STABLE
--------------------------------------------------------------------------------
ORA-03113の原因は様々ですが、srvctlからだと細かい状況がわからないので、まずsqlplusから起動可能か確認してもらいました。
sqlplusからの起動結果は以下の通り。mountまではされているようです。
SQL> startup
ORACLE instance started.
Total System Global Area 3003121664 bytes
Fixed Size 3002488 bytes
Variable Size 771755912 bytes
Database Buffers 2214592512 bytes
Redo Buffers 13770752 bytes
Database mounted.
ORA-03113: end-of-file on communication channel Process ID: 11665506 Session ID: 6 Serial number: 26183
下記ドキュメントを参照し、1から3の手順で起動可能かどうか、確認してもらいました。
Database Creation using DBCA on AIX fails with ORA-3113 (ドキュメントID 2130768.1)
The instance startup may fail with ORA-07445: [clsssterm()+183] [SIGSEGV] (ドキュメントID 1937915.1)
Master Note: Troubleshooting ORA-03113 (ドキュメントID 1506805.1)
1.Paging spaceが使用可能か確認
※下記の例では使用不可。
使用可能でない場合、swapon コマンドで有効にする。
# lsps -a
Page Space Physical Volume Volume Group Size %Used Active Auto Type Chksum
hd6 hdisk3 rootvg 133120MB 0 no yes lv 0
2.diagnostic_destの出力先のディレクトリに充分な空きがあるか。無ければ古いトレース等を削除して、空きを増やす。
3. 以下のディレクトリの権限を確認する。
755でなければ、755に変更する。
$ ls -ld $ORACLE_HOME/srvm/mesg/
更に、以下の手順でも確認してくれるよう、依頼しました。
startupコマンドでまとめてした場合、mount直後にエラーで落ちてしまったのか、mountに問題は無いが、openでエラーになったのか、はっきりしないからです。
$ sqlplus / as sysdba
SQL> startup nomount
※数十秒、待つ
SQL>alter database mount;
※数十秒、待つ
SQL>alter database open;
1から4の手順全てを試した結果、swap設定、diagディレクトリの空き容量、mesgディレクトリの権限いずれも問題は無く、mount状態では安定しており、openでエラーが発生する事が明らかになりました。
そこで送付を依頼しておいたアラートログを確認したところ。。。
Unable to create archive log file '+ARCH'
Tue Sep 10 10:34:39 2019
Errors in file /work/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_19136700.trc:
ORA-19504: failed to create file "+ARCH"
ORA-17502: ksfdcre:4 Failed to create file +ARCH
ORA-15041: diskgroup "ARCH" space exhausted
ARCH: Error 19504 Creating archive log file to '+ARCH'
アーカイブ領域が一杯で起動できないだけでした。
最初からアラートログを送ってもらえば良かった・・・・・・
で、以下の通り、削除してもらい、無事起動しました。
$ rman target /
RMAN> startup mount
RMAN> delete noprompt archivelog all;
(略)
deleted archived log
Deleted 113 objects
RMAN> alter database open;
Statement processed
RMAN> exit
DB稼働中にアーカイブ領域が一杯になれば、crsctl stat res の結果でStuck Archiverとなるので一目瞭然ですが、今回は起動時のエラーだったので気づくのが遅れてしまいました。
アラートログは最初から確認しておくべきでした。