はじめに
こんにちは。
レックのエンジニアA.Tと申します。
今回はOracle DatabaseのRAC構成にて発生したエラー解決談についてお話しします。
今回登場するエラー
- ORA-01078
- LRM-00109
環境情報
- OS:Oracle Linux 8.3
HDD:100GB*2 2ノードRAC
共有ディスク:30GB*3
メモリ:8GB
swap:8GB
ソフトウェア情報
- Oracle Database Grid Infrastructure 21.3.0.0.0 for Linux x86-64
- Oracle Database 21.3.0.0.0 for Linux x86-64
適用済パッチ情報
- ユーティリティ:OPatch 12.2.0.1.36 for DB 21.0.0.0.0 (Jan 2023)
- パッチ:GI RELEASE UPDATE 21.9.0.0.0 (Patch)
※ GIとDBの両方が含まれているコンボパッチです。
事象発生
RAC構成のDBを作成後 (DBCAで新規DB作成)
SQL*Plusで接続すると「Connected to an idle instance.」と表記され、インスタンスが起動していませんでした。
そこでインスタンスを起動させるために「startup」を実行すると、以下のエラーが出力されてしまい、
インスタンスを起動することが出来ませんでした。
この時、起動しなかったのは1号機のみで、2号機は正常に起動することが出来ていました。
$ sqlplus / as sysdba
SQL*Plus: Release 21.0.0.0.0 - Production on Thu May 18 19:02:38 2023 Version 21.9.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.Connected to an idle instance.
SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/u01/app/oracle/dbs/initrac011.ora'
出力されたORA-エラーについて
①ORA-01078: failure in processing system parameters
ORA-01078: システム・パラメータの処理に失敗しました。
こちらは初期化パラメータや初期化パラメータファイルに何かしらの異常がある際に出力されることが多いORA-エラーです。
※発生事由は多岐にわたります。
② LRM-00109: could not open parameter file 'string'
LRM-00109: パラメータ・ファイル'string'をオープンできません。
こちらも同様に、初期化パラメータや初期化パラメータファイルに何かしらの異常がある際に
出力されることが多いORA-エラーです。
init.oraファイルのパス名が表示されているように、物理的にファイルが破損、または存在しないこと等に
よっても発生します。
調査と対応
上記2つのORA-エラー内容から、まずは初期化パラメータ関連を調査し、
初期化パラメータファイルの再作成を行うなどの対策を行いましたが、解決出来ませんでした。
この2つのORA-エラーは実際には初期化パラメータ関連そのものに限らない、
様々な原因で出力されることが多いエラーです。
誤ったORACLE_SIDを設定してからインスタンス接続を試みる際にも発生するため、ここでも環境変数設定を確認しましたが問題ありませんでした。
そこでアラートログを確認すると大量のTNSエラーを確認し、さらなる調査の結果、
MOSの以下のドキュメントに至りました。
ASM connection fails with ORA-12547: TNS:lost contact (ドキュメントID 1942740.1)
原因
ドキュメントを参考にディレクトリのパーミッションを確認すると、
1号機の$GRID_HOME/bin/oracleのパーミッションが2号機と違う設定になっていることが判明しました。
2号機のパーミッション (正しい方)
$ ls -l $ORACLE_HOME/bin/oracle
-rwsr-s--x 1 grid oinstall 498845184 Apr 14 11:42 /u01/app/21.0.0/grid/bin/oracle
1号機のパーミッション (起動しない方)
$ ls -l $ORACLE_HOME/bin/oracle
-rwxr-x--x 1 grid oinstall 498845184 Apr 14 11:15 /u01/app/21.0.0/grid/bin/oracle
解決策
1号機のパーミッションを2号機と同様に設定し、無事にインスタンスを起動することが出来ました。
$ chmod 6751 /u01/app/21.0.0/grid/bin/oracle
→ パーミッションが変更されていることを確認します。
$ ls -l
-rwsr-s--x 1 grid oinstall 498845184 Apr 14 11:16 /u01/app/21.0.0/grid/bin/oracle
$ sqlplus / as sysdba
SQL*Plus: Release 21.0.0.0.0 - Production on Thu May 18 20:57:01 2023
Version 21.9.0.0.0Copyright (c) 1982, 2022, Oracle. All rights reserved.
Connected to:
Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.9.0.0.0SQL> select instance_name, status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
rac011 OPEN
まとめ
いかがでしたでしょうか?
Oracleが自動的に作成するディレクトリの設定になぜ差異が生まれてしまったのかは不明ですが、
同様のエラーが発生した際の参考になれば幸いです。
★エラーが発生したらまずはアラートログを確認するようにしましょう。