8 統一モードの管理
統一モードの管理とは、キーストア、マスター暗号化キーおよび透過的データベース暗号化(TDE)の一般的な機能を管理することを意味します。
8.1 統一モードでのキーストアおよびマスター暗号化キーの管理
統一モードで使用するためのキーストアとマスター暗号化キーを構成した後、TDEマスター暗号化キーのキー更新などのタスクを実行できます。
8.1.1 統一モードでのキーストア・パスワードの変更
TDEウォレットまたは外部キーストアのパスワードは、CDBルートでのみ変更できます。
8.1.1.1 統一モードでのパスワードで保護されたTDEウォレット・パスワードの変更
統一モードでパスワードで保護されたTDEウォレットのパスワードを変更するには、CDBルートでADMINISTER KEY MANAGEMENT
文を使用する必要があります。
WITH BACKUP
句を指定する必要があるため、常に現在のTDEウォレットのバックアップが作成されます。パスワードの変更操作中、暗号化や復号化などの透過的データ暗号化操作は正常に動作し続けます。このパスワードはいつでも変更できます。このパスワードは、安全性が損なわれた可能性があると思われる場合には変更する必要があります。
関連トピック
8.1.2 統一モードでのパスワードで保護されたTDEウォレットのバックアップ
ADMINISTER KEY MANAGEMENT
文のBACKUP KEYSTORE
句は、パスワードで保護されたTDEウォレットをバックアップします。
関連トピック
8.1.3 統一モードでキーストアを閉じる
システム表領域が暗号化されている場合を除き、統一モードでTDEウォレットと外部キーストアの両方を閉じることができます。
8.1.3.1 キーストアを閉じることについて
キーストアを開いた後は、データベース・インスタンスを終了するまで開いたままになります。
データベース・インスタンスを再起動すると、必要に応じて(TDEマスター暗号化キーにアクセスする必要がある場合)自動ログインTDEウォレットおよびローカル自動ログインTDEウォレットが自動的に開きます。ただし、パスワードベースのTDEウォレットと外部キーストアは、自動的には開きません。使用する前には手動で再度開く必要があります。
TDEウォレットまたは外部キーストアを閉じると、データベースでのすべての暗号化操作と復号化操作が無効になります。そのため、データベース・ユーザーやアプリケーションは、TDEウォレットやキーストアが再度開かれるまで、暗号化データに関係する操作を実行できなくなります。
TDEウォレット・キーストアを閉じた後に再度開くと、その内容がデータベースにリロードされます。したがって、内容が変更されると(移行中など)、データベースには最新のTDEウォレットまたはキーストアの内容が格納されます。
PDBに対してALTER PLUGGABLE DATABASE CLOSE
文またはSHUTDOWN
コマンドを実行すると、SYSKM
管理権限を持つユーザーがADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE
文を使用して手動で閉じるまで、PDBのOPEN
状態のキーストアは開いたままになります。
TDEウォレットまたはキーストアが閉じられているかどうかは、V$ENCRYPTION_WALLET
ビューのSTATUS
列を問い合せることによって確認できます。
TDEウォレットまたはキーストアにアクセスできない場合、次のデータ操作は失敗します:
-
暗号化列からのデータの選択(
SELECT
) -
暗号化列に対するデータの挿入(
INSERT
) -
暗号化列による表の作成(
CREATE
) -
暗号化された表領域の作成(
CREATE
)
8.1.3.2 統一モードでTDEウォレットを閉じる
統一モードでは、パスワードで保護されたTDEウォレット、自動ログインTDEウォレットおよびローカル自動ログインTDEウォレットを閉じることができます。
ADMINISTER KEY MANAGEMENT
またはSYSKM
権限が付与された一般ユーザーとして、CDBルートに接続します。ADMINISTER KEY MANAGEMENT
文を使用して、TDEウォレットを閉じます。- パスワードで保護されたTDEウォレットでは、CDBルート内にいる場合、次の構文を使用します:
ADMINISTER KEY MANAGEMENT SET | FORCE KEYSTORE CLOSE [IDENTIFIED BY [EXTERNAL STORE | TDE_wallet_password]] [CONTAINER = ALL | CURRENT];
SET
句を使用して、TDEウォレットを強制せずに閉じます。開いている依存TDEウォレットがある場合(たとえば、分離モードのPDBのTDEウォレットで、CDBルートのTDEウォレットを閉じようとしている場合)、ORA-46692「ウォレットをクローズできません」
エラーが表示されます。この場合、SET
のかわりにFORCE
句を使用して、閉じる操作中に依存TDEウォレットを一時的に閉じます。V$ENCRYPTION_WALLET
ビューのSTATUS
列で、TDEウォレットが開いているかどうかが示されます。統一モードのPDBにいる場合、
CONTAINER
句を省略するか、CURRENT
に設定します。 - 自動ログインTDEウォレットまたはローカル自動ログインTDEウォレットでは、CDBルートにいる場合、次の構文を使用します:
ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE [CONTAINER = ALL | CURRENT];
- パスワードで保護されたTDEウォレットでは、CDBルート内にいる場合、次の構文を使用します:
8.1.4 統一モードでの後で使用するためのTDEマスター暗号化キーの作成
後でアクティブ化するTDEマスター暗号化キーを作成することができます。
8.1.4.1 後で使用するためのTDEマスター暗号化キーの作成について
ADMINISTER KEY MANAGEMENT
文のCREATE KEY
句によって、後でアクティブ化できるTDEマスター暗号化キーを作成できます。
その後、そのキーを同じデータベースでアクティブ化したり、別のデータベースにエクスポートしてそこでアクティブ化できます。
このTDEマスター暗号化キーの作成方法は、マルチテナント環境でTDEマスター暗号化キーを再作成する必要がある場合に便利です。CREATE KEY
句では、単一のSQL文を使用して、マルチテナント環境内のすべてのPDBに新しいTDEマスター暗号化キーを作成できます。新しいTDEマスター暗号化キーの作成時間は、現在使用中のTDEマスター暗号化キーをアクティブ化するよりも遅くなります。そのため、最新の作成済TDEマスター暗号化キーをできるだけ早くアクティブ化するようにすべてのPDBに注意を喚起するために、この作成時間を使用できます。
8.1.5 例: すべてのPDBでのマスター暗号化キーの作成
ADMINISTER KEY MANAGEMENT CREATE KEY USING TAG
文を使用して、すべてのPDBにTDEマスター暗号化キーを作成できます。
例8-1に、マルチテナント環境のすべてのPDBにマスター暗号化キーを作成する方法を示します。ここでは、CDBルートの自動ログイン・キーストアが開いている場合に、FORCE KEYSTORE
句を使用します。パスワードが外部に格納されるため、IDENTIFIED BY
句にEXTERNAL STORE
設定が使用されます。この文を実行すると、マスター暗号化キーが各PDBに作成されます。それらのキーの識別子は次のように確認できます。
-
PDBにログインして、
V$ENCRYPTION_KEYS
ビューのTAG
列を問い合せます。 -
CDBルートにログインして、
GV$ENCRYPTION_KEYS
ビューのINST_ID
およびTAG
列を問い合せます。
また、最も最近作成されたキー(この文で作成したキー)を確認するには、それらのビューのCREATION_TIME
列を確認します。キーの作成後、各PDBでキーを個々にアクティブ化できます。
例8-1 すべてのPDBのマスター暗号化キーの作成
ADMINISTER KEY MANAGEMENT CREATE KEY USING TAG 'scope:all pdbs;description:Create Key for ALL PDBS' FORCE KEYSTORE IDENTIFIED BY EXTERNAL STORE WITH BACKUP CONTAINER = ALL; keystore altered.
8.1.6 統一モードでのTDEマスター暗号化キーのアクティブ化
TDEマスター暗号化キーはアクティブ化すると、使用できます。
8.1.6.1 TDEマスター暗号化キーのアクティブ化について
ADMINISTER KEY MANAGEMENT
のUSE KEY
句を使用することで、以前に作成済またはインポート済のTDEマスター暗号化キーをアクティブ化できます。
マスター暗号化キーをアクティブ化すると、データベース内のすべてのデータ暗号化キーを暗号化するために使用されます。キーを使用して、すべての列のキーとすべての表領域暗号化キーを保護できます。ロジカル・スタンバイ・データベースをデプロイしている場合、TDEマスター暗号化キーを再作成後にエクスポートしてから、スタンバイ・データベースにインポートする必要があります。プライマリ・データベースとスタンバイ・データベースの両方でTDEマスター暗号化キーを使用するように選択できます。これを行うには、TDEマスター暗号化キーを、ロジカル・スタンバイ・データベースへのインポート後にアクティブ化する必要があります。
8.1.6.2 統一モードでのTDEマスター暗号化キーのアクティブ化
統一モードでTDEマスター暗号化キーをアクティブ化するには、キーストアを開き、USE KEY
句を含むADMINISTER KEY MANAGEMENT
を使用する必要があります。
8.1.6.3 例: TDEマスター暗号化キーのアクティブ化
ADMINISTER KEY MANAGEMENT SQL文を使用して、TDEマスター暗号化キーをアクティブ化できます。
例8-2に、以前にインポート済のTDEマスター暗号化キーをアクティブ化してそのタグを更新する方法を示します。このキーは、現在のデータベースのタイムスタンプとタイムゾーンでアクティブ化されます。
例8-2 TDEマスター暗号化キーのアクティブ化
ADMINISTER KEY MANAGEMENT USE KEY
'ARaHD762tUkkvyLgPzAi6hMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
USING TAG 'quarter:second;description:Activate Key on standby'
IDENTIFIED BY password WITH BACKUP;
keystore altered.
次の同じ操作のバージョンでは、自動ログイン・キーストアが使用されているか、キーストアが閉じている場合に、FORCE KEYSTORE
句が追加されます。キーストアのパスワードが外部に格納されるため、IDENTIFIED BY
句にEXTERNAL STORE
設定が使用されます。
ADMINISTER KEY MANAGEMENT USE KEY 'ARaHD762tUkkvyLgPzAi6hMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' USING TAG 'quarter:second;description:Activate Key on standby' FORCE KEYSTORE IDENTIFIED BY EXTERNAL STORE WITH BACKUP; keystore altered.
8.1.7 ユーザー定義のTDEマスター暗号化キーの作成
TDEマスター暗号化キーIDを生成して、データベースの外部でユーザー定義のTDEマスター暗号化キーを作成できます。
8.1.7.1 ユーザー定義のTDEマスター暗号化キーについて
データベースの外部にあるTDEマスター暗号化キーには、TDEマスター暗号化キーの使用を追跡するための固有のユーザー生成IDがあります。
ADMINISTER KEY MANAGEMENT
を使用して、ユーザー定義のTDEマスター暗号化キーIDを作成および設定できます。TDEマスター暗号化キーを生成した後で、このキーをデータベースに格納できます。オプションで、様々なADMINISTER KEY MANAGEMENT
文でTDEマスター暗号化キーIDを指定できます。
このタイプの構成を使用すると、サイトの要件に準拠するTDEマスター暗号化キーを生成できるため、Oracle Fusion SaaS Cloud環境で役立ちます。生成されるこのキーは、最新の暗号化アルゴリズムをサポートしており、TDEウォレットのために使用できます。
TDEマスター暗号化キーIDを生成した後で、通常の方法でデータを暗号化できます。
TDEマスター暗号化キーとそれに対応するIDは、監査ログによって取得されません。
8.1.8 統一モードでのTDEマスター暗号化キーのキー更新
SET KEY
句を含むADMINISTER KEY MANAGEMENT
文を使用して、TDEマスター暗号化キーをキー更新できます。
関連トピック
8.1.9 統一モードで使用中のTDEマスター暗号化キーの確認
使用中のTDEマスター暗号化キーは、データベースで一番最近アクティブ化されたキーです。
8.1.10 統一モードでのカスタム属性タグの作成
統一モードでカスタム属性タグを作成するには、ADMINISTER KEY MANAGEMENT
文のSET TAG
句を使用する必要があります。
関連トピック
8.1.11 統一モードでの新しいキーストアへのTDEマスター暗号化キーの移動
既存のTDEマスター暗号化キーを、パスワードで保護された既存のキーストアから新しいキーストアに移動できます。
8.1.11.1 新しいキーストアへのTDEマスター暗号化キーの移動について
使用されていない(正常にアーカイブ済の)TDEマスター暗号化キーを新しいキーストアに移動できます。
ADMINISTER KEY MANAGEMENT MOVE KEYS
を実行する場合は十分に注意してください。この文ではアクティブなマスター暗号化キーは移動されませんが、それでも、一連のデータベース機能に必要となるキーに影響がある可能性があります。キーを削除した場合は、これらの機能を使用するための、そのキーによって暗号化されたデータへのアクセスは不可能になります(データの削除と同等)。キーストアの削除によって影響を受ける機能の詳細は、このトピックの最後にある「関連項目」を参照してください。
そのため、キーストアを移動する前に、それを正常にアーカイブすることが重要です。一定期間が経過し、キーストアが確実に不要になった場合にのみ、キーストアを削除するようにしてください。
TDEマスター暗号化キーを新しいキーストアに移動するには、ADMINISTER KEY MANAGEMENT MOVE KEYS
文を使用します。この文では、アクティブなTDEマスター暗号化キー(つまり、ADMINISTER KEY MANAGEMENT MOVE KEYS
が発行された時点で使用中だったキー)は移動されません。
新しいTDEキーストアを構成するときに、誤ってADMINISTER KEY MANAGEMENT MOVE KEYS
文をADMINISTER KEY MANAGEMENT MERGE KEYSTORE
のかわりに使用した場合(たとえば、TDEキーストア構成を、TDEウォレットがオペレーティング・システムのファイル・システムにある構成から、TDEウォレットがOracle Automatic Storage Management (Oracle ASM)にある構成に変更する場合)、次の現象が、誤ったキー管理コマンドの使用によって発生したTDEの誤った構成を識別するのに役立つ場合があります:
- 前の
ADMINISTER KEY MANAGEMENT MOVE KEYS
操作のターゲットであったTDEキーストアを開いたときに、ORA-28374: 「入力したマスター・キーがウォレットに見つかりません」
というエラーが表示されます。これは、アクティブなTDEマスター暗号化キーがそのキーストアに移動されていないためです。 - 新しいキーストアを開いた後、
V$ENCRYPTION_WALLET
ビューのSTATUS
列にOPEN_NO_MASTER_KEY
という値が表示されています。誤ってADMINISTER KEY MANAGEMENT MOVE KEYS
文によって移入された新しいTDEキーストアにはアクティブなTDEマスター暗号化キーが含まれていないため、想定ではOPEN_NO_MASTER_KEY
ステータスになります。
8.2 統一モードでの透過的データ暗号化の管理
統一モードで透過的データ暗号化を使用して一般的な管理タスクを実行できます。
8.2.1 統一モードでのあるCDBから別のCDBへのPDBの移動
暗号化されたPDBを同じコンテナ・データベース内またはコンテナ・データベース間でクローニングまたは再配置できます。
SYSTEM
、SYSAUX
、UNDO
またはTEMP
表領域が暗号化されている非CDBまたはPDBを移動し、キーの手動エクスポートまたはインポートを使用する場合は、まずPDBを作成する前に、ターゲット・データベースのCDB$ROOT
にある非CDBまたはPDBのキーをインポートする必要があります。キーをPDBに関連付けるには、PDB内でキーのインポートが再度必要です。
関連トピック
8.2.2 統一モードでの暗号化データを含むPDBのCDBに対するアンプラグとプラグイン
統一モードでは、暗号化データを含むPDBをCDBにプラグインできます。反対に、このPDBをCDBからアンプラグすることもできます。
8.2.2.1 統一モードでの暗号化データを含むPDBのアンプラグ
統一モードでは、暗号化データを含むPDBをアンプラグして、XMLファイルまたはアーカイブ・ファイルにエクスポートできます。
DBA_PDBS
データ・ディクショナリ・ビューのSTATUS
列を問い合せることで、PDBがアンプラグされたかどうかを確認できます。
8.2.2.2 統一モードでの暗号化データを含むPDBのCDBへのプラグイン
暗号化データを含むPDBをCDBにプラグインするには、まずPDBにプラグインしてから、そのPDBのマスター暗号化キーを作成します。
0
に設定されます。キー・バージョンは、V$ENCRYPTED_TABLESPACES
動的ビューのKEY_VERSION
を問い合せて確認できます。同様に、制御ファイルが失われ再作成された場合、以前のキーの履歴は0
にリセットされます。DBA_PDBS
データ・ディクショナリ・ビューのSTATUS
列を問い合せることで、PDBがすでにプラグインされているかどうかを確認できます。
8.2.2.3 統一モードでの外部キーストアにマスター暗号化キーが格納されたPDBのアンプラグ
外部キーストアを使用するように構成されたCDBからPDBをアンプラグした後、それを同様に外部キーストアを使用するように構成された別のCDBにプラグインできます。
関連トピック
8.2.3 統一モードでの暗号化データを含むクローニングされたPDBの管理
統一モードでは、暗号化データを含むPDBをCDBでクローニングできます。
8.2.3.1 統一モードでの暗号化データを含むクローニングされたPDBの管理について
PDBをクローニングする際、ソースPDBのマスター暗号化キーをクローニングされたPDBが使用できるようにしておく必要があります。
これにより、クローニングされたPDBが暗号化データに対して操作を行うことができます。クローニングされたPDBがリモートのCDBにある場合であっても、Oracle Databaseがキーを転送するため、クローニングを実行するためにキーをエクスポートまたはインポートする必要はありません。ただし、クローンを作成するCDBのキーストア・パスワードは指定する必要があります。
PDBに暗号化されたデータがある場合は、CDB間でPDBのリモート・クローニング操作を実行し、CDB間でPDBを再配置できます。
8.2.3.2 統一モードでの暗号化データを含むPDBのCDBへのクローニング
KEYSTORE IDENTIFIED BY
句を含むCREATE PLUGGABLE DATABASE
文によって、暗号化データを含むPDBをクローニングできます。
関連トピック
8.2.3.3 統一モードでの暗号化されたPDBのリモートからのクローニング
KEYSTORE IDENTIFIED BY
句を含むCREATE PLUGGABLE DATABASE
文によって、暗号化データを含むPDBをリモートからクローニングできます。
8.2.4 統一モードでのキーストアの開閉操作の機能
統一モードでキーストアの開閉操作がどのように機能するかを知っておく必要があります。
統一モードの各PDBに関して、透過的データ暗号化の操作が続行できるように、パスワードで保護されたTDEウォレットまたは外部キーストアをPDBで明示的に開く必要があります。(自動ログインTDEウォレットとローカル自動ログインTDEウォレットは自動的に開きます。)PDBのキーストアを閉じることによって、PDBのすべての透過的データ暗号化操作がブロックされます。
PDBにおけるキーストアの開閉操作は、CDBルートにおけるキーストアの開閉ステータスに依存します。
次の点に注意してください。
-
統一モードの各PDBについて個別のキーストアのパスワードを作成できます。
-
パスワードで保護されたTDEウォレットまたは外部キーストアを個々のPDBで手動で開く前に、CDBルートでウォレットまたはキーストアを開く必要があります。
-
自動ログインTDEウォレットが使用されているか、キーストアが閉じている場合は、ウォレットを開くときに、
ADMINISTER KEY MANAGEMENT
文にFORCE KEYSTORE
句を含めます。 -
キーストアがパスワードで保護されたTDEウォレット(パスワードのために外部ストアを使用するウォレット)の場合は、
IDENTIFIED BY
句のパスワードをEXTERNAL STORE
に置き換えます。 -
個々のPDBでTDEマスター暗号化キーを設定するには、事前にCDBルートでキーを設定する必要があります。PDBにキーを設定するときに
USING TAG
句を含めることをお薦めします。たとえば:SELECT ' ADMINISTER KEY MANAGEMENT SET KEY USING TAG '''||SYS_CONTEXT('USERENV', 'CON_NAME')||' '||TO_CHAR (SYSDATE, 'YYYY-MM-DD HH24:MI:SS')||''' FORCE KEYSTORE IDENTIFIED BY EXTERNAL STORE WITH BACKUP CONTAINER = CURRENT;' AS "SET KEY COMMAND" FROM DUAL;
USING TAG
句を含めると、特定のPDBに属するキーと、それらがいつ作成されたかを迅速かつ容易に識別できます。 -
自動ログインTDEウォレットとローカル自動ログインTDEウォレットは自動的に開きます。これらを最初にCDBルートからまたはPDBから、手動で開く必要はありません。
-
CDBルートでキーストアを閉じると、これに依存するPDBのキーストアも閉じます。rootにおいてキーストアを閉じる操作は、
CONTAINER
句がALL
に設定されていてキーストアを閉じる操作を実行することと同等です。 -
CDBルートで
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN
文を実行し、CONTAINER
句をALL
に設定した場合、キーストアは、統一モードで構成されている各オープンPDBでのみ開くことになります。分離モードで構成されているPDBのキーストアはオープンされません。
8.2.5 統一モードでのすべてのPDBのキーストア・ステータスの確認
V$ENCRYPTION_WALLET
ビューを使用する便利なファンクションを作成して、CDBにおけるすべてのPDBのキーストアのステータスを確認できます。
V$ENCRYPTION_WALLET
ビューでは、PDBのキーストアのステータス(開いているか、閉じているか、ソフトウェアまたは外部キーストアを使用しているかなど)が表示されます。
-
V$ENCRYPTION_WALLET
ビューを使用してキーストアのステータスを検出するファンクションを作成するには、CREATE PROCEDURE
PL/SQL文を使用します。
例8-3では、このファンクションを作成する方法を示しています。
例8-3 CDBにおけるすべてのPDBに関するキーストアのステータスを確認するファンクション
CREATE OR REPLACE PROCEDURE all_pdb_v$encryption_wallet IS err_occ BOOLEAN; curr_pdb VARCHAR2(30); pdb_name VARCHAR2(30); wrl_type VARCHAR2(20); status VARCHAR2(30); wallet_type VARCHAR2(20); wallet_order VARCHAR2(12); fully_backed_up VARCHAR2(15); wrl_parameter VARCHAR2(4000); cursor sel_pdbs IS SELECT NAME FROM V$CONTAINERS WHERE NAME <> 'PDB$SEED' order by con_id desc; BEGIN -- Store the original PDB name SELECT sys_context('userenv', 'con_name') INTO curr_pdb FROM DUAL; IF curr_pdb <> 'CDB$ROOT' THEN dbms_output.put_line('Operation valid in ROOT only'); END IF; err_occ := FALSE; dbms_output.put_line('---'); dbms_output.put_line('PDB_NAME WRL_TYPE STATUS '); dbms_output.put_line('------------------------------ -------- ------------------------------'); dbms_output.put_line('WALLET_TYPE WALLET_ORDER FULLY_BACKED_UP'); dbms_output.put_line('-------------------- ------------ ---------------'); dbms_output.put_line('WRL_PARAMETER'); dbms_output.put_line('--------------------------------------------------------------------------'); FOR pdbinfo IN sel_pdbs LOOP pdb_name := DBMS_ASSERT.ENQUOTE_NAME(pdbinfo.name, FALSE); EXECUTE IMMEDIATE 'ALTER SESSION SET CONTAINER = ' || pdb_name; BEGIN pdb_name := rpad(substr(pdb_name,1,30), 30, ' '); EXECUTE IMMEDIATE 'SELECT wrl_type from V$ENCRYPTION_WALLET' into wrl_type; wrl_type := rpad(substr(wrl_type,1,8), 8, ' '); EXECUTE IMMEDIATE 'SELECT status from V$ENCRYPTION_WALLET' into status; status := rpad(substr(status,1,30), 30, ' '); EXECUTE IMMEDIATE 'SELECT wallet_type from V$ENCRYPTION_WALLET' into wallet_type; wallet_type := rpad(substr(wallet_type,1,20), 20, ' '); EXECUTE IMMEDIATE 'SELECT wallet_order from V$ENCRYPTION_WALLET' into wallet_order; wallet_order := rpad(substr(wallet_order,1,9), 12, ' '); EXECUTE IMMEDIATE 'SELECT fully_backed_up from V$ENCRYPTION_WALLET' into fully_backed_up; fully_backed_up := rpad(substr(fully_backed_up,1,9), 15, ' '); EXECUTE IMMEDIATE 'SELECT wrl_parameter from V$ENCRYPTION_WALLET' into wrl_parameter; wrl_parameter := rpad(substr(wrl_parameter,1,79), 79, ' '); dbms_output.put_line(pdb_name || ' ' || wrl_type || ' ' || status); dbms_output.put_line(wallet_type || ' ' || wallet_order || ' ' || fully_backed_up); dbms_output.put_line(wrl_parameter); EXCEPTION WHEN OTHERS THEN err_occ := TRUE; END; END LOOP; IF err_occ = TRUE THEN dbms_output.put_line('One or more PDB resulted in an error'); END IF; END; . / set serveroutput on exec all_pdb_v$encryption_wallet;