web-dev-qa-db-ja.com

RedHat高可用性リソースでのOracleWalletエラー

環境: 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環境には何が欠けていますか?

1
Derek_6424246

誰かが特定された解決策に興味がある場合:

問題の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を解決し、テーブルにレコードを入力できました。したがって、すべてのローカルクエリが機能し、突然、すべてのリモートクエリが再び「機能し始め」、舞台裏で何が起こったかをログにほとんど示しませんでした。

1
Derek_6424246