環境: Red Hat 7.2を実行し、Pacemaker1.1.13-10.el7_2.2およびCorosync2.3.4-7.el7_2.1を使用して、Oracle 12c EnterpriseEditionリリース12.1.0.2のクラスターフェイルオーバーを実装します。 .0データベース。
Background:クラスターの外部でデータベースを起動すると、すべてが正しく機能し、他のホストからの外部クエリを実行できます。データベースには、自動オープンに設定され、この問題が発生する前にシームレスに機能する暗号化ウォレットがあります。
問題: Oracleインスタンスを高可用性リソースグループに追加すると、インスタンスはエラーなしで起動します(表示されます)。ただし、他のホストから外部接続が試行されると、データベースは応答します
ERROR at line 1:
ORA-28365: wallet is not open
ホストサーバー上のデータベースに接続してクエリを実行すると、コンソールでエラーが報告されず、リモートホストからのクエリが突然再び成功し始めます。その後、リソースが別のノードにフェイルオーバーするまでクラスターは正常に機能し、その後、同じ症状/一時的な解決策で問題が再発します。拒否されたクエリにより、以下を含むデータベースSIDのトレースファイルが生成されます。
kcbtse_get_tbskey: decrypting encrypted key for pdb 0 tablespace 6 without opening the wallet
kcbtse_get_tbskey: wallet is not opened (ts 0/6)
kcbtse_encdec_tbsblk: DIAG DUMP tsn 0/6 rdba 25165987, afn 6, mode 4
誰かが以前にこの種の問題を見たことがありますか? HAの外部に存在するHA環境には何が欠けていますか?
誰かが特定された解決策に興味がある場合:
問題のsqlnet.oraには次のものが含まれていました。
ENCRYPTION_WALLET_LOCATION =
(SOURCE =
(METHOD = FILE)
(METHOD_DATA =
(DIRECTORY = ${Oracle_BASE}/admin/${Oracle_SID}/wallet)
)
)
これは、サーバー上のOracleユーザープロファイルで正常に機能しました。ただし、HAリソース内で実行すると、環境変数がオーバーライドされ、Oracle_BASEが定義されませんでした。したがって、Oracleが起動すると、システムは「/ admin/$ {Oracle_SID}/wallet」ディレクトリを見つけようとしましたが、見つからなかった場合、デフォルトで「ウォレットが閉じた」状態になりました。データベースがこの状態にあるときのウォレットに関するクエリは、nullレコードを返しました。
問題のトラブルシューティングを試みたとき、Oracleとしてホストサーバーにログインし、シェルからユーザープロファイルを取得したため、sqlplusを起動してクエリを実行すると、ENCRYPTION_WALLET_LOCATIONを解決し、テーブルにレコードを入力できました。したがって、すべてのローカルクエリが機能し、突然、すべてのリモートクエリが再び「機能し始め」、舞台裏で何が起こったかをログにほとんど示しませんでした。