個人的メモです。
原因1と2を書いていますが、他にもora-01033を起こす原因はあるかもしれません。
間違いがあればご指摘いただけると嬉しいです。
原因1. DBがマウントされていない
DB起動時のマウントに失敗している。
対応
sqlplusにてsysdba権限ユーザで接続しマウントして開始する。
以下でログイン(ユーザ名は環境に応じて)
sqlplus sys as sysdba
以下でマウントと開始
ALTER DATABASE MOUNT;
ALTER DATABASE OPEN;
参考
https://cosol.jp/knowledge/knowledge_post/ot0007_ora01033/
マウントされていないだけならこれで解決します。
ファイルが破損している場合[ALTER DATABASE MOUNT]で、すでにマウントされていますと言われ、[ALTER DATABASE OPEN]で以下のようなエラーが発生します。
破損しているファイルによってORAコードは異なる?
ORA-00742:
ログの読取りでスレッドx、順序xxxx、ブロックxxxxに書込みの欠落が検出されました
ORA-00312: オンライン・ログx スレッドx: 'C:\xxxx\REDO01.LOG'
原因2. REDOログの破損
起動時、REDOログの不整合が見つかったため、DBを開始できない。
対応
以下URLを参考にRMANを使ってリカバリーする。
https://atmarkit.itmedia.co.jp/ait/articles/1111/11/news138.html
https://atmarkit.itmedia.co.jp/ait/articles/1109/22/news118.html
REDOログはグループ別に管理されており、それぞれグループに1つ以上のメンバーが属しています。
1つのグループにログを書き込んでいき、ファイルサイズが上限に達すると、書込み先を別グループにします。
ローテーションで回していき、最後のグループのあとは初めのグループに戻り古いログに上書きする仕組みです。
同じグループに属するメンバーには同じログを書き込みます。これによって、あるメンバーが破損しても同じグループで無事なメンバーがいれば、完全リカバリができます。それができない場合(全メンバー破損、グループにメンバーが1つしかないなど)、不完全リカバリします。