{"id":305,"date":"2026-06-12T11:22:43","date_gmt":"2026-06-12T09:22:43","guid":{"rendered":"https:\/\/blog.agdba.de\/?p=305"},"modified":"2026-06-16T12:55:31","modified_gmt":"2026-06-16T10:55:31","slug":"data-guard-auf-pdb-ebene-mit-tde-erfahrungen-aus-der-praxis","status":"publish","type":"post","link":"https:\/\/blog.agdba.de\/?p=305","title":{"rendered":"Data Guard auf PDB-Ebene mit TDE &#8211; Erfahrungen aus der Praxis"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Mit Oracle 26ai wird Data Guard im Multitenant Umfeld deutlich interessanter. Data Guard auf PDB Ebene, nicht auf CDB Ebene. Schon ab 21c gibt es das Feature, aber mit 26ai ist es in eine Version mit LTS gekommen. Die Idee ist auf den ersten Blick sehr attraktiv: Nicht mehr die komplette CDB steht im Mittelpunkt der Data Guard Konfiguration, sondern einzelne PDBs. Gerade in Multitenant Umgebungen er\u00f6ffnet das neue M\u00f6glichkeiten.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Statt komplette CDBs zu sch\u00fctzen und umzuschalten, k\u00f6nnen einzelne PDBs zwischen zwei unabh\u00e4ngigen CDBs repliziert, geswitcht oder gefailovert werden. Beide CDBs bleiben dabei produktiv und k\u00f6nnen gleichzeitig eigene Prim\u00e4r- und Standby-PDBs hosten. Damit lassen sich Schutzkonzepte deutlich granularer aufbauen als mit klassischem CDB-Level Data Guard.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In der Theorie klingt das sehr sauber.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In der Praxis war mein erster Testlauf allerdings eine l\u00e4ngere Reise durch Wallets, TDE-Keys, Broker-Syntax, GUID-Konflikte und irref\u00fchrende Fehlermeldungen. Dieser Beitrag ist deshalb keine Wiederholung der Oracle-Dokumentation. Stattdessen beschreibe ich die Einrichtung so, wie sie in meinem Lab tats\u00e4chlich abgelaufen ist: inklusive Fehlern, falschen Annahmen und den L\u00f6sungen, die am Ende funktioniert haben.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\">Ausgangssituation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Meine LAB Umgebung besteht aus zwei Database Base Systems in der OCI mit Version 23.26.2 (26ai).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">CDB: DB26B_hgd_fra<br>PDB: DB_A_PRIM<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">CDB: DB26C_C<br>PDB: DB_A_STBY (standby von DB_A_PRIM)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Alle Datenbanken verwendeten TDE mit File Keystore.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die TDE-Konfiguration:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>NAME                                 TYPE        VALUE\n------------------------------------ ----------- ------------------------------\nwallet_root                          string      \/opt\/oracle\/dcs\/commonstore\/wa\n                                                 llets\/DB26B_hgd_fra\nSQL&gt; show parameter tde_configuration\n\nNAME                                 TYPE        VALUE\n------------------------------------ ----------- ------------------------------\ntde_configuration                    string      keystore_configuration=FILE\n\nDie Wallets waren ge\u00f6ffnet:\nSQL&gt; select con_id,\n       status,\n       wallet_type,\n       wallet_order,\n       keystore_mode\nfrom v$encryption_wallet;\n  2    3    4    5    6\n    CON_ID STATUS                         WALLET_TYPE          WALLET_OR KEYSTORE\n---------- ------------------------------ -------------------- --------- --------\n         1 OPEN                           AUTOLOGIN            SINGLE    NONE\n         2 OPEN                           AUTOLOGIN            SINGLE    UNITED\n         3 OPEN                           AUTOLOGIN            SINGLE    UNITED<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ziel war es, eine PDB aus einer Source-CDB als Physical Standby PDB in einer anderen CDB zu betreiben.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Warum dieser Beitrag?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Die eigentlichen Data-Guard-Broker-Kommandos sind nicht besonders kompliziert.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Was die Einrichtung schwierig gemacht hat, waren die Nebenthemen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>TDE Wallet vs. Broker Wallet<\/li>\n\n\n\n<li>DGPDB_INT<\/li>\n\n\n\n<li>PDB GUIDs<\/li>\n\n\n\n<li>Keystore-Passwort<\/li>\n\n\n\n<li>automatische Instantiation<\/li>\n\n\n\n<li>TDE-Key-Export und -Import<\/li>\n\n\n\n<li>Redo Apply mit verschl\u00fcsseltem Redo<\/li>\n\n\n\n<li>und ein bisschen Syntax<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Besonders wichtig: Viele Fehlermeldungen zeigen nur die Folge, nicht die Ursache.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ORA-16937: Instantiation of the DGPDB has failed<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Das klingt zun\u00e4chst nach einem Broker-Problem.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die eigentliche Ursache lag aber tiefer:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ORA-19583<br>ORA-19849<br>ORA-28374<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Und noch genauer: Es fehlten TDE-Keys.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Einrichtung<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Bevor mit der Einrichtung des DG PDB gestartet wird, m\u00fcssen ein paar Voraussetzungen gemacht werden:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alter database force logging;\nALTER DATABASE FLASHBACK ON;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Zudem wurden die tnsnames.ora f\u00fcr beide CDBs mit den Connectstrings der jeweils anderen DB erg\u00e4nzt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DB26C =\n  (DESCRIPTION =\n    (ADDRESS = (PROTOCOL = TCP)(HOST = db26c.sub05220704010.vcnag.oraclevcn.com)(PORT = 1521))\n    (CONNECT_DATA =\n      (SERVER = DEDICATED)\n      (SERVICE_NAME = DB26C_C.sub05220704010.vcnag.oraclevcn.com)\n    )\n  )\n\n\nDB26B =\n  (DESCRIPTION =\n    (ADDRESS = (PROTOCOL = TCP)(HOST = db26b.sub05220704010.vcnag.oraclevcn.com)(PORT = 1521))\n    (CONNECT_DATA =\n      (SERVER = DEDICATED)\n      (SERVICE_NAME = DB26B_hgd_fra.sub05220704010.vcnag.oraclevcn.com)\n    )\n  )<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ein paar Datenbankparameter wurden auch angepasst:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">DB26B:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alter system set dg_broker_start=TRUE scope=both;\nalter system set log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=DB26B_hgd_fra' scope=both;\nalter system set standby_file_management=AUTO scope=both;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">DB26C:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alter system set dg_broker_start=TRUE scope=both;\nalter system set log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=DB26C_C' scope=both;\nalter system set standby_file_management=AUTO scope=both;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dann kann mit der eigentlichen Einrichtung angefangen werden:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Wallet f\u00fcr Broker-Logins<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr DG-PDB ben\u00f6tigt der Broker Zugriff auf beide beteiligten CDBs. Daf\u00fcr wird ein Wallet mit Credentials verwendet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Daf\u00fcr wird ein wallet angelegt. Es wird nicht das bereits bestehende TDE Wallet verwendet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel f\u00fcr DB26B und DB26C ausgef\u00fchrt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir -p $ORACLE_HOME\/dbs\/wallets\nchmod -R 700 $ORACLE_HOME\/dbs\/wallets\n\nmkstore -wrl $ORACLE_HOME\/dbs\/wallets\/dgpdb -create\nOracle Secret Store Tool Release 23.26.2.0.0DBRU \u2013 Production\nVersion 23.26.2.0.0DBRU\nCopyright (c) 2004, 2026, Oracle and\/or its affiliates. All rights reserved.\n\nEnter password:\nWarning: For security reasons, passwords must have at least 16 characters.\nEnter password again:\n\nmkstore -wrl $ORACLE_HOME\/dbs\/wallets\/dgpdb -createCredential db26a sys '&lt;password&gt;'\nmkstore -wrl $ORACLE_HOME\/dbs\/wallets\/dgpdb -createCredential db26b sys '&lt;password&gt;'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Der erste Test sollte dann funktionieren:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sqlplus \/@db26b as sysdba<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tat er aber nicht.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Stattdessen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ORA-01017: invalid credential or not authorized; logon denied<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Login mit Passwort funktionierte dagegen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sqlplus 'sys\/&lt;password&gt;@db26b as sysdba'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Damit war klar: Netzwerk, Password File und SYS-Passwort waren grunds\u00e4tzlich korrekt. Das Problem musste im Wallet-Login liegen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Ursache war eine fehlende Zeile in der sqlnet.ora:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>WALLET_LOCATION =<br>&nbsp;(SOURCE =<br>&nbsp;&nbsp; (METHOD = FILE)<br>&nbsp;&nbsp; (METHOD_DATA =<br>&nbsp;&nbsp;&nbsp;&nbsp; (DIRECTORY = \/u01\/app\/oracle\/product\/23.0.0\/dbhome_1\/dbs\/wallets\/dgpdb)<br>&nbsp;&nbsp; )<br>&nbsp;)<br>SQLNET.WALLET_OVERRIDE = TRUE<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Der entscheidende Parameter ist:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SQLNET.WALLET_OVERRIDE = TRUE<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ohne diese Zeile wird das Wallet nicht so verwendet, wie es f\u00fcr sqlplus \/@alias erwartet wird.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nach der Korrektur funktionierte:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sqlplus \/@db26b as sysdba<br>sqlplus \/@db26c as sysdba<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2. Vorbereitungen der DG PDB Broker Konfiguration<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Zuerst wird im Broker dann auf beiden Seiten eine Broker Config angelegt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>dgmgrl \/@db26b\ncreate configuration 'DB26B' CONNECT IDENTIFIER IS db26b;\nConfiguration \"DB26B\" created with primary database \"\"\n\ndgmgrl \/@db26c\ncreate configuration 'DB26C' CONNECT IDENTIFIER IS db26c;\nConfiguration \"DB26C\" created with primary database \"\"\n\nENABLE CONFIGURATION ALL; \nEnabled.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Der n\u00e4chste Schritt im Broker:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DGMGRL&gt; EDIT CONFIGURATION PREPARE DGPDB;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dabei fragt DGMGRL nach dem Passwort f\u00fcr den internen Benutzer DGPDB_INT.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bei mir erschien zun\u00e4chst mehrfach:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ORA-00922: missing or invalid option<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Die Ursache war nicht offensichtlich.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Am Ende stellte sich heraus: Das gew\u00e4hlte Passwort war das Problem. Mit bestimmten Sonderzeichen kam der interne SQL-Befehl offenbar nicht zurecht.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mit einem Passwort ohne problematische Sonderzeichen funktionierte der Befehl.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Meine Empfehlung f\u00fcr den ersten Aufbau:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr DGPDB_INT zun\u00e4chst ein Passwort aus Buchstaben und Zahlen und nur Underscore (_) als Sonderzeichen verwenden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Eins Passwort, welches Beispielhaft funktioniert: OraPDBdg2026__<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DGMGRL&gt;&nbsp; EDIT CONFIGURATION PREPARE DGPDB;\nEnter password for DGPDB_INT account at DB26B_hgd_fra: OraPDBdg2026__\nEnter password for DGPDB_INT account at DB26C_C: OraPDBdg2026__\n\nPrepared Data Guard per Pluggable Database at DB26C_C.\n\nPrepared Data Guard per Pluggable Database at DB26B_hgd_fra.+<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">3. ADD PLUGGABLE DATABASE und die Keystore Klausel<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Der n\u00e4chste Schritt war laut Anleitung das Hinzuf\u00fcgen der Standby-PDB.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ADD PLUGGABLE DATABASE 'DB_A_STBY' AT DB26C_C\nSOURCE IS 'DB_A_PRIM' AT DB26B_hgd_fra\nPDBFileNameConvert IS\n\"'\/u02\/app\/oracle\/oradata\/DB26B_hgd_fra\/DB26B_HGD_FRA\/','\/u02\/app\/oracle\/oradata\/DB26C_C\/DB26C_C\/'\";<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Da TDE aktiv war, kam erwartungsgem\u00e4\u00df:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ORA-46697: Keystore password required.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Der erste intuitive Versuch war:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ADD PLUGGABLE DATABASE ...\nKEYSTORE IDENTIFIED BY \"&lt;password&gt;\";\n\nSyntax error before or at \"IDENTIFIED\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Die korrekte Syntax ist ungewohnt und in der Dokumentation leicht zu \u00fcbersehen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ADD PLUGGABLE DATABASE 'DB_A_STBY' AT DB26C_C\nSOURCE IS 'DB_A_PRIM' AT DB26B_hgd_fra\nPDBFileNameConvert IS\n\"'\/u02\/app\/oracle\/oradata\/DB26B_hgd_fra\/DB26B_HGD_FRA\/','\/u02\/app\/oracle\/oradata\/DB26C_C\/DB26C_C\/'\" 'KEYSTORE IDENTIFIED BY \"&lt;password&gt;\"';<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Die gesamte Keystore-Klausel muss als zus\u00e4tzlicher String angegeben werden:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>'<\/strong>KEYSTORE IDENTIFIED BY \"...\"<strong>'<\/strong><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Das ist eine der Stellen, an denen man sehr leicht stolpert.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Damit war das Thema allerdings noch nicht erledigt.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4. GUID Konflikt<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ein weiterer Fehler:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ORA-65122: Pluggable database GUID conflicts with the GUID of an existing container.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Zun\u00e4chst war das \u00fcberraschend, weil die CDBs auf unterschiedlichen Servern laufen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Pr\u00fcfung der v$pdbs zeigte auf beiden Seiten eine identische GUID der ersten PDB.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die wahrscheinlichste Erkl\u00e4rung: Die beiden Base Database Systems wurden zeitgleich mit der gleichen Version erstellt. Da nutzt die OCI vermutlich das selbe Gold Image, so dass die ersten Default PDBs die selbe GUID hatten.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr DG-PDB ist das ein Problem, denn auf der Ziel-CDB darf keine bestehende PDB dieselbe GUID wie die Source-PDB besitzen. Die L\u00f6sung war, die kollidierende PDB auf dem Ziel zu entfernen beziehungsweise eine saubere Zielumgebung zu verwenden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5. Automatische Instantiation schl\u00e4gt fehl<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ab Version 23.26.2 sollte die Instantiation automatisch erfolgen, wenn im Data Guard Broker eine PDB Standby angelegt wird. Trotzdem schlug der Vorgang zun\u00e4chst fehl:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"667\" height=\"460\" src=\"https:\/\/blog.agdba.de\/wp-content\/uploads\/2026\/06\/article_5_dgpdb-pitfalls_instantiation-fail.png\" alt=\"\" class=\"wp-image-315\" srcset=\"https:\/\/blog.agdba.de\/wp-content\/uploads\/2026\/06\/article_5_dgpdb-pitfalls_instantiation-fail.png 667w, https:\/\/blog.agdba.de\/wp-content\/uploads\/2026\/06\/article_5_dgpdb-pitfalls_instantiation-fail-300x207.png 300w, https:\/\/blog.agdba.de\/wp-content\/uploads\/2026\/06\/article_5_dgpdb-pitfalls_instantiation-fail-580x400.png 580w\" sizes=\"auto, (max-width: 667px) 100vw, 667px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Auf der Suche nach der Ursache in den Logfiles finde ich im Broker Log:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Instantiation of DGPDB DB_A_STBY has failed.\nRecovery for DGPDB DB_A_STBY cannot be started until successful instantiation.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Im Alert Log stand zun\u00e4chst:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Failure to restore or refresh data files for this pluggable database due to ORA-19583.\nFailed to copy datafiles for this pluggable database from the source database.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Das klingt zun\u00e4chst nach einem Problem mit Pfaden, Netzwerk oder File Copy.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Erst im Tracefile zeigte sich die eigentliche Ursache:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ORA-19583: conversation terminated due to error\nORA-19849: error while reading backup piece from service db26b\nORA-28374: typed master key not found in wallet<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Damit war klar: Die automatische Instantiation verwendet Restore from Service. Dabei m\u00fcssen verschl\u00fcsselte Source-Datafiles gelesen werden. Daf\u00fcr ben\u00f6tigt die Target-CDB die TDE-Keys der Source.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Daher muss der folgende Schritt vorher ausgef\u00fchrt werden:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">6. Erster TDE Key Export der Source PDB<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Der naheliegende Schritt war, die Keys aus der Source-PDB zu exportieren.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alter session set container=DB_A_PRIM;\n\nadminister key management export encryption keys\nwith secret \"ExportSecret123\"\nto '\/tmp\/db_a_prim_tdekeys.exp'\nforce keystore identified by \"welcome10-#OCI\";<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Anschlie\u00dfend wurde die Datei auf die Target-CDB kopiert und dort importiert.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Auf dem Ziel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alter session set container=CDB$ROOT;\n\nadminister key management import encryption keys\nwith secret \"ExportSecret123\"\nfrom '\/tmp\/db_a_prim_tdekeys.exp'\nforce keystore identified by \"welcome10-#OCI\"\nwith backup;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Danach konnte die automatische Instantiation weiterkommen. Im Alert Log war nun zu sehen, dass die Datafiles aus dem Backup Piece restored wurden.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Completed: create pluggable database DB_A_STBY as standby from DB_A_PRIM at db26b_hgd_fra file_name_convert=('\/DB26B_hgd_fra\/DB26B_HGD_FRA\/','\/DB26C_C\/DB26C_C\/') KEYSTORE IDENTIFIED BY *\n\u2026\n2026-06-11T08:04:26.304695+00:00\nDB_A_STBY(4):Restore from backup piece network\nDB_A_STBY(4):Full restore complete of  datafile 26 \/u02\/app\/oracle\/oradata\/DB26C_C\/DB26C_C\/53E52C8563E42EDAE0635300000A52A2\/datafile\/o1_mf_undotbs1_o2nv0bcm_.dbf.  Elapsed time: 0:00:00\nDB_A_STBY(4):   checkpoint is SCN 5882966 time 06\/11\/2026 08:04:26 on PDB incarnation 0\nDB_A_STBY(4):5867404\nDB_A_STBY(4):5876234\nDB_A_STBY(4):Restore from backup piece network\n2026-06-11T08:04:28.716233+00:00\nDB_A_STBY(4):Full restore complete of  datafile 25 \/u02\/app\/oracle\/oradata\/DB26C_C\/DB26C_C\/53E52C8563E42EDAE0635300000A52A2\/datafile\/o1_mf_sysaux_o2nv0bnd_.dbf.  Elapsed time: 0:00:02\nDB_A_STBY(4):   checkpoint is SCN 5882972 time 06\/11\/2026 08:04:26 on PDB incarnation 0\nDB_A_STBY(4):4582154\nDB_A_STBY(4):Restore from backup piece network\n2026-06-11T08:04:31.200088+00:00\nDB_A_STBY(4):Full restore complete of  datafile 24 \/u02\/app\/oracle\/oradata\/DB26C_C\/DB26C_C\/53E52C8563E42EDAE0635300000A52A2\/datafile\/o1_mf_system_o2nv0dsn_.dbf.  Elapsed time: 0:00:03<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Das war der erste Durchbruch.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aber das ist noch nicht das Ende.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">7. ORA-28374 nach erfolgreichem Restore<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Nachdem die Datafiles erfolgreich erzeugt wurden, gab es ein weiteres Problem. Der Apply startete nicht sauber:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DGMGRL&gt; EDIT PLUGGABLE DATABASE 'DB_A_STBY' AT DB26C_C SET STATE='APPLY-ON';<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Fehler im Alert Log:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>2026-06-11T08:05:32.802973+00:00\nDB_A_STBY(4):Apply slave process (PID=42323) started\nDB_A_STBY(4):*** 2026-06-11T08:05:32.867038+00:00\nDB_A_STBY(4):Media Recovery Log \/u03\/app\/oracle\/fast_recovery_area\/DB26C_C\/archivelog\/2026_06_11\/o1_mf_1_20_o2nv09w3_.arc\nDB_A_STBY(4):PR00 (PID:42319): Background Media Recovery terminated with error 28374 &#091;krd.c:29437]\n2026-06-11T08:05:32.887128+00:00\nDB_A_STBY(4):Errors in file \/u01\/app\/oracle\/diag\/rdbms\/db26c_c\/DB26C\/trace\/DB26C_pr00_42319.trc:\nORA-28374: typed master key not found in wallet\nDB_A_STBY(4):PR00 (PID:42319): PDBID:4 Managed Recovery not using Real Time Apply &#091;krsm.c:16125]\nDB_A_STBY(4):Recovery interrupted!\n&#091;krdgp.c:2898] krdgp_check_slaves: Slave PR01 for DGPDB 4 died. slave_cnt=0\n&#091;krdgp.c:2898] krdgp_check_slaves: Slave PR02 for DGPDB 4 died. slave_cnt=0\n&#091;krdgp.c:2929] krdgp_check_slaves: Slave PR00 for DGPDB 4 exited normally. slave_cnt=0<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Das war irritierend, denn die Key-IDs waren inzwischen in V$ENCRYPTION_KEYS sichtbar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der entscheidende Hinweis stand nicht in DGMGRL, sondern im Tracefile:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1020\" height=\"338\" src=\"https:\/\/blog.agdba.de\/wp-content\/uploads\/2026\/06\/article_5_dgpdb-pitfalls_redo_decrypt_failure.png\" alt=\"\" class=\"wp-image-314\" srcset=\"https:\/\/blog.agdba.de\/wp-content\/uploads\/2026\/06\/article_5_dgpdb-pitfalls_redo_decrypt_failure.png 1020w, https:\/\/blog.agdba.de\/wp-content\/uploads\/2026\/06\/article_5_dgpdb-pitfalls_redo_decrypt_failure-300x99.png 300w, https:\/\/blog.agdba.de\/wp-content\/uploads\/2026\/06\/article_5_dgpdb-pitfalls_redo_decrypt_failure-768x254.png 768w, https:\/\/blog.agdba.de\/wp-content\/uploads\/2026\/06\/article_5_dgpdb-pitfalls_redo_decrypt_failure-700x232.png 700w\" sizes=\"auto, (max-width: 1020px) 100vw, 1020px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Das war der entscheidende Unterschied.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vorher fehlte der Key beim Lesen der verschl\u00fcsselten Datafiles w\u00e4hrend Restore from Service.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Jetzt fehlte der Key beim Entschl\u00fcsseln der Redo-Informationen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der relevante Hinweis:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>failed to decrypt on-disk log key<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Damit war klar:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der PDB-Key allein reicht nicht. Der Restore konnte zwar erfolgen, aber die Redo Logs nicht entschl\u00fcsselt werden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">8. Die eigentliche L\u00f6sung: TDE Key Export aus CDB$ROOT<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Die finale L\u00f6sung war, die Keys aus dem CDB$ROOT der Source-CDB zu exportieren und im CDB$ROOT der Target-CDB zu importieren.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Auf der Source:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alter session set container=CDB$ROOT;\n\nadminister key management export encryption keys\nwith secret \"ExportSecret123\"\nto '\/tmp\/source_cdbroot_tdekeys.exp'\nforce keystore identified by \"welcome10-#OCI\";<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Datei auf das Zielsystem kopieren.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Auf dem Target:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alter session set container=CDB$ROOT;\n\nadminister key management import encryption keys\nwith secret \"ExportSecret123\"\nfrom '\/tmp\/source_cdbroot_tdekeys.exp'\nforce keystore identified by \"welcome10-#OCI\"\nwith backup;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dann wurde die Datenbank einmal rebootet. Anschlie\u00dfend konnte Apply erfolgreich gestartet werden:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DGMGRL&gt; EDIT PLUGGABLE DATABASE 'DB_A_STBY' AT DB26C_C SET STATE='APPLY-ON';\nSucceeded.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Damit war die Einrichtung der Standby PDB erfolgreich.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"534\" height=\"416\" src=\"https:\/\/blog.agdba.de\/wp-content\/uploads\/2026\/06\/article_5_dgpdb-pitfalls_validate-und-show-pdb-successfull.png\" alt=\"\" class=\"wp-image-313\" srcset=\"https:\/\/blog.agdba.de\/wp-content\/uploads\/2026\/06\/article_5_dgpdb-pitfalls_validate-und-show-pdb-successfull.png 534w, https:\/\/blog.agdba.de\/wp-content\/uploads\/2026\/06\/article_5_dgpdb-pitfalls_validate-und-show-pdb-successfull-300x234.png 300w, https:\/\/blog.agdba.de\/wp-content\/uploads\/2026\/06\/article_5_dgpdb-pitfalls_validate-und-show-pdb-successfull-513x400.png 513w\" sizes=\"auto, (max-width: 534px) 100vw, 534px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Warum der PDB Key alleine nicht reicht<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Meine urspr\u00fcngliche Annahme war:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ich sch\u00fctze eine PDB, also brauche ich nur die TDE-Keys dieser PDB.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das war falsch.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr den Restore der Datafiles kann der PDB-Key ausreichen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr Redo Apply werden aber offenbar zus\u00e4tzliche Key-Informationen aus dem Root-Kontext ben\u00f6tigt. Das erkl\u00e4rt auch, warum die Fehlermeldung so verwirrend war:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>V$ENCRYPTION_KEYS zeigte die erwarteten PDB-Key-IDs.\nmkstore zeigte die Keys im Wallet.\nTrotzdem schlug Redo Apply mit ORA-28374 fehl.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Der Tracefile-Hinweis auf den Redo-Key war entscheidend.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Kurzfassung:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">DG-PDB mit TDE ben\u00f6tigt nicht nur PDB-Key-Material.<br>F\u00fcr Redo Apply m\u00fcssen auch die relevanten CDB$ROOT-Keys auf dem Ziel vorhanden sein.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Fazit<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Oracle 26ai Data Guard auf PDB-Ebene ist ein sehr spannendes Feature.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Gerade f\u00fcr Multitenant-Umgebungen er\u00f6ffnet es neue M\u00f6glichkeiten, weil nicht mehr komplette CDBs gesch\u00fctzt werden m\u00fcssen. Einzelne PDBs k\u00f6nnen gezielt repliziert und abgesichert werden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In Kombination mit TDE ist die Einrichtung aber anspruchsvoller, als es auf den ersten Blick aussieht.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die wichtigsten Punkte aus meinem Test:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>SQLNET.WALLET_OVERRIDE nicht vergessen<\/li>\n\n\n\n<li>DGPDB_INT-Passwort einfach halten<\/li>\n\n\n\n<li>KEYSTORE-Klausel korrekt quoten<\/li>\n\n\n\n<li>GUID-Konflikte pr\u00fcfen<\/li>\n\n\n\n<li>TDE-Keys vor der Instantiation \u00fcbertragen<\/li>\n\n\n\n<li>Nicht nur PDB-Keys exportieren<\/li>\n\n\n\n<li>CDB$ROOT-Keys ebenfalls exportieren\/importieren<\/li>\n\n\n\n<li>Tracefiles lesen<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Der wichtigste technische Lerneffekt war:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr DG-PDB mit TDE reicht der Export der PDB-Keys allein nicht aus.<br>F\u00fcr Redo Apply werden auch die relevanten Keys aus CDB$ROOT ben\u00f6tigt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nachdem diese Punkte ber\u00fccksichtigt waren, funktionierte DG-PDB wie erwartet. F\u00fcr produktive Umgebungen w\u00fcrde ich den TDE-Key-Transfer als festen vorbereitenden Schritt in jede DG-PDB-Implementierung aufnehmen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mit Oracle 26ai wird Data Guard im Multitenant Umfeld deutlich interessanter. Data Guard auf PDB Ebene, nicht auf CDB Ebene. Schon ab 21c gibt es das Feature, aber mit 26ai ist es in eine Version mit LTS gekommen. Die Idee ist auf den ersten Blick sehr attraktiv: Nicht mehr die komplette CDB steht im Mittelpunkt &hellip; <a href=\"https:\/\/blog.agdba.de\/?p=305\" class=\"more-link\"><span class=\"screen-reader-text\">Data Guard auf PDB-Ebene mit TDE &#8211; Erfahrungen aus der Praxis<\/span> weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13,14],"tags":[24,22,46,38,44,36,45,35],"class_list":["post-305","post","type-post","status-publish","format-standard","hentry","category-database","category-security","tag-26ai","tag-data-guard","tag-dg-pdb","tag-dgmgrl","tag-disaster-recovery","tag-encryption","tag-multitenant","tag-tde"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Data Guard auf PDB-Ebene mit TDE - Erfahrungen aus der Praxis - agdba.de<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.agdba.de\/?p=305\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Data Guard auf PDB-Ebene mit TDE - Erfahrungen aus der Praxis - agdba.de\" \/>\n<meta property=\"og:description\" content=\"Mit Oracle 26ai wird Data Guard im Multitenant Umfeld deutlich interessanter. Data Guard auf PDB Ebene, nicht auf CDB Ebene. Schon ab 21c gibt es das Feature, aber mit 26ai ist es in eine Version mit LTS gekommen. Die Idee ist auf den ersten Blick sehr attraktiv: Nicht mehr die komplette CDB steht im Mittelpunkt &hellip; Data Guard auf PDB-Ebene mit TDE &#8211; Erfahrungen aus der Praxis weiterlesen &rarr;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.agdba.de\/?p=305\" \/>\n<meta property=\"og:site_name\" content=\"agdba.de\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-12T09:22:43+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-16T10:55:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.agdba.de\/wp-content\/uploads\/2026\/06\/article_5_dgpdb-pitfalls_instantiation-fail.png\" \/>\n\t<meta property=\"og:image:width\" content=\"667\" \/>\n\t<meta property=\"og:image:height\" content=\"460\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Alexander Giesbrecht\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Alexander Giesbrecht\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"8\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blog.agdba.de\\\/?p=305#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.agdba.de\\\/?p=305\"},\"author\":{\"name\":\"Alexander Giesbrecht\",\"@id\":\"https:\\\/\\\/blog.agdba.de\\\/#\\\/schema\\\/person\\\/c9b8806180cd864945b5950d3dec5798\"},\"headline\":\"Data Guard auf PDB-Ebene mit TDE &#8211; Erfahrungen aus der Praxis\",\"datePublished\":\"2026-06-12T09:22:43+00:00\",\"dateModified\":\"2026-06-16T10:55:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blog.agdba.de\\\/?p=305\"},\"wordCount\":1384,\"image\":{\"@id\":\"https:\\\/\\\/blog.agdba.de\\\/?p=305#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blog.agdba.de\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/article_5_dgpdb-pitfalls_instantiation-fail.png\",\"keywords\":[\"26ai\",\"Data Guard\",\"DG PDB\",\"dgmgrl\",\"Disaster Recovery\",\"Encryption\",\"Multitenant\",\"TDE\"],\"articleSection\":[\"Database\",\"Security\"],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blog.agdba.de\\\/?p=305\",\"url\":\"https:\\\/\\\/blog.agdba.de\\\/?p=305\",\"name\":\"Data Guard auf PDB-Ebene mit TDE - Erfahrungen aus der Praxis - agdba.de\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.agdba.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blog.agdba.de\\\/?p=305#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.agdba.de\\\/?p=305#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blog.agdba.de\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/article_5_dgpdb-pitfalls_instantiation-fail.png\",\"datePublished\":\"2026-06-12T09:22:43+00:00\",\"dateModified\":\"2026-06-16T10:55:31+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blog.agdba.de\\\/#\\\/schema\\\/person\\\/c9b8806180cd864945b5950d3dec5798\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blog.agdba.de\\\/?p=305#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blog.agdba.de\\\/?p=305\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/blog.agdba.de\\\/?p=305#primaryimage\",\"url\":\"https:\\\/\\\/blog.agdba.de\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/article_5_dgpdb-pitfalls_instantiation-fail.png\",\"contentUrl\":\"https:\\\/\\\/blog.agdba.de\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/article_5_dgpdb-pitfalls_instantiation-fail.png\",\"width\":667,\"height\":460},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blog.agdba.de\\\/?p=305#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Start\",\"item\":\"https:\\\/\\\/blog.agdba.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Data Guard auf PDB-Ebene mit TDE &#8211; Erfahrungen aus der Praxis\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blog.agdba.de\\\/#website\",\"url\":\"https:\\\/\\\/blog.agdba.de\\\/\",\"name\":\"agdba.de\",\"description\":\"Oracle Database, OCI and more\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blog.agdba.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blog.agdba.de\\\/#\\\/schema\\\/person\\\/c9b8806180cd864945b5950d3dec5798\",\"name\":\"Alexander Giesbrecht\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b0f7a24a2ab62199afeb3704ba03108c4a0b796d431d9342635095c0d1861e3b?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b0f7a24a2ab62199afeb3704ba03108c4a0b796d431d9342635095c0d1861e3b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b0f7a24a2ab62199afeb3704ba03108c4a0b796d431d9342635095c0d1861e3b?s=96&d=mm&r=g\",\"caption\":\"Alexander Giesbrecht\"},\"url\":\"https:\\\/\\\/blog.agdba.de\\\/?author=2\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Data Guard auf PDB-Ebene mit TDE - Erfahrungen aus der Praxis - agdba.de","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.agdba.de\/?p=305","og_locale":"de_DE","og_type":"article","og_title":"Data Guard auf PDB-Ebene mit TDE - Erfahrungen aus der Praxis - agdba.de","og_description":"Mit Oracle 26ai wird Data Guard im Multitenant Umfeld deutlich interessanter. Data Guard auf PDB Ebene, nicht auf CDB Ebene. Schon ab 21c gibt es das Feature, aber mit 26ai ist es in eine Version mit LTS gekommen. Die Idee ist auf den ersten Blick sehr attraktiv: Nicht mehr die komplette CDB steht im Mittelpunkt &hellip; Data Guard auf PDB-Ebene mit TDE &#8211; Erfahrungen aus der Praxis weiterlesen &rarr;","og_url":"https:\/\/blog.agdba.de\/?p=305","og_site_name":"agdba.de","article_published_time":"2026-06-12T09:22:43+00:00","article_modified_time":"2026-06-16T10:55:31+00:00","og_image":[{"width":667,"height":460,"url":"https:\/\/blog.agdba.de\/wp-content\/uploads\/2026\/06\/article_5_dgpdb-pitfalls_instantiation-fail.png","type":"image\/png"}],"author":"Alexander Giesbrecht","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Alexander Giesbrecht","Gesch\u00e4tzte Lesezeit":"8\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.agdba.de\/?p=305#article","isPartOf":{"@id":"https:\/\/blog.agdba.de\/?p=305"},"author":{"name":"Alexander Giesbrecht","@id":"https:\/\/blog.agdba.de\/#\/schema\/person\/c9b8806180cd864945b5950d3dec5798"},"headline":"Data Guard auf PDB-Ebene mit TDE &#8211; Erfahrungen aus der Praxis","datePublished":"2026-06-12T09:22:43+00:00","dateModified":"2026-06-16T10:55:31+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.agdba.de\/?p=305"},"wordCount":1384,"image":{"@id":"https:\/\/blog.agdba.de\/?p=305#primaryimage"},"thumbnailUrl":"https:\/\/blog.agdba.de\/wp-content\/uploads\/2026\/06\/article_5_dgpdb-pitfalls_instantiation-fail.png","keywords":["26ai","Data Guard","DG PDB","dgmgrl","Disaster Recovery","Encryption","Multitenant","TDE"],"articleSection":["Database","Security"],"inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/blog.agdba.de\/?p=305","url":"https:\/\/blog.agdba.de\/?p=305","name":"Data Guard auf PDB-Ebene mit TDE - Erfahrungen aus der Praxis - agdba.de","isPartOf":{"@id":"https:\/\/blog.agdba.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.agdba.de\/?p=305#primaryimage"},"image":{"@id":"https:\/\/blog.agdba.de\/?p=305#primaryimage"},"thumbnailUrl":"https:\/\/blog.agdba.de\/wp-content\/uploads\/2026\/06\/article_5_dgpdb-pitfalls_instantiation-fail.png","datePublished":"2026-06-12T09:22:43+00:00","dateModified":"2026-06-16T10:55:31+00:00","author":{"@id":"https:\/\/blog.agdba.de\/#\/schema\/person\/c9b8806180cd864945b5950d3dec5798"},"breadcrumb":{"@id":"https:\/\/blog.agdba.de\/?p=305#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.agdba.de\/?p=305"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/blog.agdba.de\/?p=305#primaryimage","url":"https:\/\/blog.agdba.de\/wp-content\/uploads\/2026\/06\/article_5_dgpdb-pitfalls_instantiation-fail.png","contentUrl":"https:\/\/blog.agdba.de\/wp-content\/uploads\/2026\/06\/article_5_dgpdb-pitfalls_instantiation-fail.png","width":667,"height":460},{"@type":"BreadcrumbList","@id":"https:\/\/blog.agdba.de\/?p=305#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Start","item":"https:\/\/blog.agdba.de\/"},{"@type":"ListItem","position":2,"name":"Data Guard auf PDB-Ebene mit TDE &#8211; Erfahrungen aus der Praxis"}]},{"@type":"WebSite","@id":"https:\/\/blog.agdba.de\/#website","url":"https:\/\/blog.agdba.de\/","name":"agdba.de","description":"Oracle Database, OCI and more","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.agdba.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Person","@id":"https:\/\/blog.agdba.de\/#\/schema\/person\/c9b8806180cd864945b5950d3dec5798","name":"Alexander Giesbrecht","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/b0f7a24a2ab62199afeb3704ba03108c4a0b796d431d9342635095c0d1861e3b?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/b0f7a24a2ab62199afeb3704ba03108c4a0b796d431d9342635095c0d1861e3b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b0f7a24a2ab62199afeb3704ba03108c4a0b796d431d9342635095c0d1861e3b?s=96&d=mm&r=g","caption":"Alexander Giesbrecht"},"url":"https:\/\/blog.agdba.de\/?author=2"}]}},"_links":{"self":[{"href":"https:\/\/blog.agdba.de\/index.php?rest_route=\/wp\/v2\/posts\/305","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.agdba.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.agdba.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.agdba.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.agdba.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=305"}],"version-history":[{"count":10,"href":"https:\/\/blog.agdba.de\/index.php?rest_route=\/wp\/v2\/posts\/305\/revisions"}],"predecessor-version":[{"id":319,"href":"https:\/\/blog.agdba.de\/index.php?rest_route=\/wp\/v2\/posts\/305\/revisions\/319"}],"wp:attachment":[{"href":"https:\/\/blog.agdba.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=305"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.agdba.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=305"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.agdba.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=305"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}