ORA-28417: パスワードベースのキーストアがオープンではありません。の対処法

この記事ではORA-28417: パスワードベースのキーストアがオープンではありません。の対処法について解説します。

 ORA-28417: パスワードベースのキーストアがオープンではありません。

新規のPDBのキーストアにマスターキーを設定しようとした際にORA-28417のエラーが発生しました。

SQL> administer key management set key identified by password with backup container = all;
administer key management set key identified by password with backup container = all
*
行1でエラーが発生しました。:
ORA-28417: パスワードベースのキーストアがオープンではありません

キーストアの状況を確認すると自動ログインでオープンされていました。

SQL> select * from v$encryption_wallet;
WRL_TYPE WRL_PARAMETER					 STATUS 	    WALLET_TYPE WALLET_ORDER KEYSTORE_MODE FULLY_BACKED_UP  CON_ID
-------- ----------------------------------------------- ------------------ ----------- ------------ ------------- --------------- -------
FILE	 /opt/oracle/product/23ai/dbhomeFree/wallet/tde/ OPEN		    AUTOLOGIN	SINGLE	     NONE	   NO			 1
FILE							 OPEN		    AUTOLOGIN	SINGLE	     UNITED	   NO			 2
FILE							 OPEN		    AUTOLOGIN	SINGLE	     UNITED	   NO			 3
FILE							 OPEN_NO_MASTER_KEY AUTOLOGIN	SINGLE	     UNITED	   UNDEFINED		 4

これを解消するためには自動ログインキーストアを削除、パスワードベースでオープンし直す必要があります。


 対処法

自動ログインキーストアを削除します。

OSコマンドでcwallet.ssoを削除することでキーストアを削除できます。

削除後に問題が起きた際に復旧できるようにmvコマンドで退避しておきます。

$ mv cwallet.sso cwallet.sso.bk

SQL*Plusで接続し、キーストアをクローズします。

SQL> administer key management set keystore close container = all;
キーストアが変更されました。
SQL> select * from v$encryption_wallet;
WRL_TYPE WRL_PARAMETER					 STATUS 	    WALLET_TYPE WALLET_ORDER KEYSTORE_MODE FULLY_BACKED_UP  CON_ID
-------- ----------------------------------------------- ------------------ ----------- ------------ ------------- --------------- -------
FILE	 /opt/oracle/product/23ai/dbhomeFree/wallet/tde/ CLOSED 	    UNKNOWN	SINGLE	     NONE	   UNDEFINED		 1
FILE							 CLOSED 	    UNKNOWN	SINGLE	     UNITED	   UNDEFINED		 2
FILE							 CLOSED 	    UNKNOWN	SINGLE	     UNITED	   UNDEFINED		 3
FILE							 CLOSED 	    UNKNOWN	SINGLE	     UNITED	   UNDEFINED		 4

パスワードを使用してオープンします。

SQL> administer key management set keystore open identified by password container = all;
キーストアが変更されました。
SQL> select * from v$encryption_wallet;
WRL_TYPE WRL_PARAMETER					 STATUS 	    WALLET_TYPE WALLET_ORDER KEYSTORE_MODE FULLY_BACKED_UP  CON_ID
-------- ----------------------------------------------- ------------------ ----------- ------------ ------------- --------------- -------
FILE	 /opt/oracle/product/23ai/dbhomeFree/wallet/tde/ OPEN		    PASSWORD	SINGLE	     NONE	   NO			 1
FILE							 OPEN		    PASSWORD	SINGLE	     UNITED	   NO			 2
FILE							 OPEN		    PASSWORD	SINGLE	     UNITED	   NO			 3
FILE							 OPEN_NO_MASTER_KEY PASSWORD	SINGLE	     UNITED	   UNDEFINED		 4

マスターキーを設定します。

SQL> administer key management set key identified by password with backup container = all;
キーストアが変更されました。
SQL> select * from v$encryption_wallet;
WRL_TYPE WRL_PARAMETER					 STATUS 	    WALLET_TYPE WALLET_ORDER KEYSTORE_MODE FULLY_BACKED_UP  CON_ID
-------- ----------------------------------------------- ------------------ ----------- ------------ ------------- --------------- -------
FILE	 /opt/oracle/product/23ai/dbhomeFree/wallet/tde/ OPEN		    PASSWORD	SINGLE	     NONE	   NO			 1
FILE							 OPEN		    PASSWORD	SINGLE	     UNITED	   NO			 2
FILE							 OPEN		    PASSWORD	SINGLE	     UNITED	   NO			 3
FILE							 OPEN		    PASSWORD	SINGLE	     UNITED	   NO			 4

自動ログインキーストアに戻します。

SQL> administer key management create auto_login keystore from keystore identified by password;
キーストアが変更されました。

DB再起動後に自動ログインになっているか確認します。

SQL> select * from v$encryption_wallet;
WRL_TYPE WRL_PARAMETER					 STATUS 	    WALLET_TYPE WALLET_ORDER KEYSTORE_MODE FULLY_BACKED_UP  CON_ID
-------- ----------------------------------------------- ------------------ ----------- ------------ ------------- --------------- -------
FILE	 /opt/oracle/product/23ai/dbhomeFree/wallet/tde/ OPEN		    AUTOLOGIN	SINGLE	     NONE	   NO			 1
FILE							 OPEN		    AUTOLOGIN	SINGLE	     UNITED	   NO			 2
FILE							 OPEN		    AUTOLOGIN	SINGLE	     UNITED	   NO			 3
FILE							 OPEN		    AUTOLOGIN	SINGLE	     UNITED	   NO			 4

これにて新規のPDBに対してもマスターキーを設定できました。