{"id":20400,"date":"2022-11-07T15:57:55","date_gmt":"2022-11-07T14:57:55","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=20400"},"modified":"2023-01-06T11:35:17","modified_gmt":"2023-01-06T10:35:17","slug":"how-to-setup-dataguard-on-pdb-level-dgpdb","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/how-to-setup-dataguard-on-pdb-level-dgpdb\/","title":{"rendered":"How to Setup Dataguard on PDB Level (DGPDB)"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Introduction<\/h2>\n\n\n\n<p class=\"has-small-font-size\">One of the long requested features in case of Multitenant was the possibility to create and manage a data guard configuration on pdb level. Now with the Release Update 21.6 this was finaly implemented and the name of the new feature ist called DGPDB. If you want to know more about the data guard on pdb level and how it works, i recommend you the follwing pages:<br><br><a href=\"https:\/\/blogs.oracle.com\/maa\/post\/dgpdb-available-today\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/blogs.oracle.com\/maa\/post\/dgpdb-available-today<\/a><br><a href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/21\/dgbkr\/managing-oracle-data-guard-broker-dgpdb-configuration-members.html#GUID-FC91CF75-0EF8-43C2-80C4-55B12C029E30\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/21\/dgbkr\/managing-oracle-data-guard-broker-dgpdb-configuration-members.html#GUID-FC91CF75-0EF8-43C2-80C4-55B12C029E30<\/a><br><br>With the current long term support release 19c it&#8217;s only possible to create data guard configurations on cdb level and one cdb acts as primary database and the other as standby database. This has some disadvantages if you have a high consolidation level with a lot of pdb&#8217;s in one cdb:<\/p>\n\n\n\n<div class=\"wp-block-group has-small-font-size\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<ol class=\"wp-block-list\">\n<li>Switchovers \/ Failovers can take a long time <\/li>\n\n\n\n<li>Ressource allocation of the nodes is not very flexible because all active pdb&#8217;s must be on the same site<\/li>\n<\/ol>\n\n\n\n<p>If you want to use DGPDB you have to be aware, that are currently a lot of restrictions in case of data guard functionality as you can see on this picture. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"518\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/11\/dg_limitations.webp\" alt=\"\" class=\"wp-image-20401\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/11\/dg_limitations.webp 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/11\/dg_limitations-300x152.webp 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/11\/dg_limitations-768x389.webp 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Setup Data Guard on PDB Level<\/h2>\n\n\n\n<p class=\"has-small-font-size\"> So now lets start with the technical part and how to setup a data guard on pdb level. The main difference is, that now we would not have a primary and a standby cdb for the configuration, but instead two primary cdb&#8217;s. That sounds logical, because both containers will host primary and standby pdbs&#8217;s. Additionaly i created one pdb in cdbs1 and one pdb in cdbs2.<\/p>\n\n\n\n<p class=\"has-small-font-size\"><strong>Prerequisites<\/strong><br>As prerequisites for the setup i deployed 2 vm&#8217;s and every vm has one cdb in Version 21.8. It is already available with 21.6 but i decided to go to the newest RU <\/p>\n\n\n\n<figure class=\"wp-block-table has-small-font-size\"><table><tbody><tr><td><\/td><td><strong>Site 1<\/strong><\/td><td><strong>Site 2<\/strong><\/td><\/tr><tr><td><strong>Hostname<\/strong><\/td><td>ora01<\/td><td>ora02<\/td><\/tr><tr><td><strong>CDB Name <\/strong><\/td><td>cdbs1<\/td><td>cdbs2<\/td><\/tr><tr><td><strong>Oracle Version<\/strong><\/td><td>Oracle 21.8<\/td><td>Oracle 21.8<\/td><\/tr><tr><td><strong>Storage <\/strong><\/td><td>local File System<\/td><td>local File System<\/td><\/tr><tr><td><strong>OMF <\/strong><\/td><td>YES <\/td><td>YES<\/td><\/tr><tr><td><strong>PDB<\/strong><\/td><td>pdbs1<\/td><td>pdbs2<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"has-small-font-size\"><strong>Connection between both sides<\/strong><br>Like in a normal Data Guard Setup we need a TNS Setup, that we can reach both cdb from both sides. My Here is my tnsnames.ora on both sides<\/p>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<div class=\"wp-block-group has-small-font-size\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\"><div class=\"wp-block-syntaxhighlighter-code alignfull\"><pre class=\"brush: sql; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\n-- tnsnames.ora on ora01 \/ ora02\ncdbs1.world =\n (DESCRIPTION =\n   (ADDRESS= (PROTOCOL = TCP)(HOST = ora01 )(PORT = 1521))\n   (CONNECT_DATA =\n     (SERVICE_NAME = cdbs1)\n   )\n )\n\ncdbs2.world =\n (DESCRIPTION =\n   (ADDRESS= (PROTOCOL = TCP)(HOST = ora02 )(PORT = 1521))\n   (CONNECT_DATA =\n     (SERVICE_NAME = cdbs2)\n   )\n )\n\n-- Connect Verfification from ora01\noracle@ora01:\/home\/oracle\/ &#x5B;cdbs1] tnsping cdbs1.world\n\nTNS Ping Utility for Linux: Version 21.0.0.0.0 - Production on 07-NOV-2022 01:10:58\n\nCopyright (c) 1997, 2021, Oracle.  All rights reserved.\n\nUsed parameter files:\n\/u01\/app\/oracle\/network\/admin\/sqlnet.ora\n\n\nUsed TNSNAMES adapter to resolve the alias\nAttempting to contact (DESCRIPTION = (ADDRESS= (PROTOCOL = TCP)(HOST = ora01)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = cdbs1)))\nOK (0 msec)\noracle@ora01:\/home\/oracle\/ &#x5B;cdbs1] tnsping cdbs2.world\n\nTNS Ping Utility for Linux: Version 21.0.0.0.0 - Production on 07-NOV-2022 01:11:04\n\nCopyright (c) 1997, 2021, Oracle.  All rights reserved.\n\nUsed parameter files:\n\/u01\/app\/oracle\/network\/admin\/sqlnet.ora\n\n\nUsed TNSNAMES adapter to resolve the alias\nAttempting to contact (DESCRIPTION = (ADDRESS= (PROTOCOL = TCP)(HOST = ora02)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = cdbs2)))\nOK (10 msec)\n\n-- Connect Verfification from ora02\n\noracle@ora02:\/home\/oracle\/ &#x5B;cdbs2] tnsping cdbs1.world\n\nTNS Ping Utility for Linux: Version 21.0.0.0.0 - Production on 07-NOV-2022 01:11:25\n\nCopyright (c) 1997, 2021, Oracle.  All rights reserved.\n\nUsed parameter files:\n\/u01\/app\/oracle\/network\/admin\/sqlnet.ora\n\n\nUsed TNSNAMES adapter to resolve the alias\nAttempting to contact (DESCRIPTION = (ADDRESS= (PROTOCOL = TCP)(HOST = ora01)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = cdbs1)))\nOK (10 msec)\noracle@ora02:\/home\/oracle\/ &#x5B;cdbs2] tnsping cdbs2.world\n\nTNS Ping Utility for Linux: Version 21.0.0.0.0 - Production on 07-NOV-2022 01:11:29\n\nCopyright (c) 1997, 2021, Oracle.  All rights reserved.\n\nUsed parameter files:\n\/u01\/app\/oracle\/network\/admin\/sqlnet.ora\n\n\nUsed TNSNAMES adapter to resolve the alias\nAttempting to contact (DESCRIPTION = (ADDRESS= (PROTOCOL = TCP)(HOST = ora02)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = cdbs2)))\nOK (0 msec)\n\n<\/pre><\/div><\/div><\/div>\n<\/div><\/div>\n<\/div><\/div>\n\n\n\n<p class=\"has-small-font-size\"><strong>Data Guard Configurations<\/strong><br>We need some minimal configuration to prepare the databases for the broker configuration like:<br>&#8211; dg_broker_start=TRUE (activate the broker)<br>&#8211; dg_broker_config_file (location of the broker config file)<br>&#8211; standby_file_management=AUTO (automatic file transfer from one side to other)<br>&#8211; Standby Redo Logs on both sides<\/p>\n\n\n\n<p class=\"has-small-font-size\">Configurations applied on ORA01<\/p>\n\n\n\n<div class=\"wp-block-group has-small-font-size\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\"><div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\n&#x5B;oracle@ora01 ~]$ sqlplus \/ as sysdba\nSQL*Plus: Release 21.0.0.0.0 - Production on Sun Nov 02 14:31:44 2022\nVersion 21.8.0.0.0\nCopyright (c) 1982, 2022, Oracle.  All rights reserved.\nConnected to:\nOracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production\nVersion 21.8.0.0.0\nSQL&gt;\nSQL&gt; alter system set dg_broker_config_file1 = &#039;u01\/app\/oracle\/admin\/cdbs1\/pfile\/dr1cdbs1.dat&#039;  scope = both;\nSystem altered.\nSQL&gt; alter system set dg_broker_config_file1 = &#039;u01\/app\/oracle\/admin\/cdbs1\/pfile\/dr2cdbs1.dat&#039;  scope = both;\nSystem altered.\nSQL&gt; alter system set dg_broker_start=TRUE  scope = both;\nSystem altered.\nSQL&gt;\nSQL&gt; show parameter standby_file_management\nNAME                                 TYPE        VALUE\n------------------------------------ ----------- ------------------------------\nstandby_file_management              string      MANUAL\nSQL&gt; alter system set standby_file_management = AUTO scope = both;\nSystem altered.\nSQL&gt;\nSQL&gt; select group#,thread#,bytes from v$standby_log;\nno rows selected\nSQL&gt; select group#,thread#,bytes from v$log;\n    GROUP#    THREAD#      BYTES\n---------- ---------- ----------\n         1          1  209715200\n         2          1  209715200\n         3          2  209715200\n         4          2  209715200\nSQL&gt; ALTER DATABASE ADD STANDBY LOGFILE size 209715200;\nDatabase altered.\nSQL&gt; ALTER DATABASE ADD STANDBY LOGFILE size 209715200;\nDatabase altered.\nSQL&gt; ALTER DATABASE ADD STANDBY LOGFILE size 209715200;\nDatabase altered.\nSQL&gt; ALTER DATABASE ADD STANDBY LOGFILE size 209715200;\nDatabase altered.\nSQL&gt; ALTER DATABASE ADD STANDBY LOGFILE size 209715200;\nDatabase altered.\nSQL&gt; ALTER DATABASE ADD STANDBY LOGFILE size 209715200;\nDatabase altered.\n<\/pre><\/div><\/div><\/div>\n\n\n\n<p class=\"has-small-font-size\">Configurations applied on ORA02<\/p>\n\n\n\n<div class=\"wp-block-group has-small-font-size\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\"><div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\nSQL&gt; alter system set dg_broker_config_file1 = &#039;u01\/app\/oracle\/admin\/cdbs2\/pfile\/dr1cdbs2.dat&#039;  scope = both;\nSystem altered.\nSQL&gt; alter system set dg_broker_config_file1 = &#039;u01\/app\/oracle\/admin\/cdbs2\/pfile\/dr2cdbs2.dat&#039;  scope = both;\nSystem altered.\nSQL&gt; alter system set dg_broker_start=TRUE  scope = both;\nSystem altered.\nSQL&gt;\nSQL&gt; show parameter standby_file_management\nNAME                                 TYPE        VALUE\n------------------------------------ ----------- ------------------------------\nstandby_file_management              string      MANUAL\nSQL&gt; alter system set standby_file_management = AUTO scope = both;\nSystem altered.\nSQL&gt;\nSQL&gt; select group#,thread#,bytes from v$standby_log;\nno rows selected\nSQL&gt; select group#,thread#,bytes from v$log;\n    GROUP#    THREAD#      BYTES\n---------- ---------- ----------\n         1          1  209715200\n         2          1  209715200\n         3          2  209715200\n         4          2  209715200\nSQL&gt; ALTER DATABASE ADD STANDBY LOGFILE size 209715200;\nDatabase altered.\nSQL&gt; ALTER DATABASE ADD STANDBY LOGFILE size 209715200;\nDatabase altered.\nSQL&gt; ALTER DATABASE ADD STANDBY LOGFILE size 209715200;\nDatabase altered.\nSQL&gt; ALTER DATABASE ADD STANDBY LOGFILE size 209715200;\nDatabase altered.\nSQL&gt; ALTER DATABASE ADD STANDBY LOGFILE size 209715200;\nDatabase altered.\nSQL&gt; ALTER DATABASE ADD STANDBY LOGFILE size 209715200;\nDatabase altered.\n<\/pre><\/div><\/div><\/div>\n\n\n\n<p class=\"has-small-font-size\"><strong>Setup Remote Connection<\/strong><br>To register the databases to the broker configuration you need password less login as sysdba \/sysdg from one side to the other. Here i get some trouble because the normal setup over the oracle password file did not work on my side. I always get &#8220;invalid username \/ password &#8221; message if i tried add the database to the broker. So currently i don&#8217;t now if that is a bug or if that don&#8217;t work for dgpdb. In my case i configured a wallet that holds the connection information and this works in that case. Please be aware, that the credential inside the walltet must be exactly like the name of your tns connection entry! I configure the wallte on ORA01 and afterwards copy the wallet to ORA02<\/p>\n\n\n\n<div class=\"wp-block-group has-small-font-size\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\"><div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\n&#x5B;oracle@ora01 ~]$ mkdir -p \/u01\/app\/oracle\/admin\/cdbs1\/dg_wallet_cdbs1\n&#x5B;oracle@ora01 ~]$ mkstore -wrl \/u01\/app\/oracle\/dbs\/dg_wallet_cdbs1 -createALO\nOracle Secret Store Tool Release 21.0.0.0.0 - Production\nVersion 21.0.0.0.0\nCopyright (c) 2004, 2022, Oracle and\/or its affiliates. All rights reserved.\n&#x5B;oracle@ora01 ~]$ mkstore -wrl \/u01\/app\/oracle\/dbs\/dg_wallet_cdbs1 -createCredential cdbs1.world sys Welcome_01\nOracle Secret Store Tool Release 21.0.0.0.0 - Production\nVersion 21.0.0.0.0\nCopyright (c) 2004, 2022, Oracle and\/or its affiliates. All rights reserved.\n&#x5B;oracle@ora01 ~]$ mkstore -wrl \/u01\/app\/oracle\/dbs\/dg_wallet_cdbs1 -createCredential cdbs2.world sys Welcome_01\nOracle Secret Store Tool Release 21.0.0.0.0 - Production\nVersion 21.0.0.0.0\nCopyright (c) 2004, 2022, Oracle and\/or its affiliates. All rights reserved.\n&#x5B;oracle@ora01 ~]$ mkstore -wrl \/u01\/app\/oracle\/dbs\/dg_wallet_cdbs1 -listCredential\nOracle Secret Store Tool Release 21.0.0.0.0 - Production\nVersion 21.0.0.0.0\nCopyright (c) 2004, 2022, Oracle and\/or its affiliates. All rights reserved.\n\nList credential (index: connect_string username)\n2: cdbs2.world sys\n1: cdbs1.world sys\n<\/pre><\/div><\/div><\/div>\n\n\n\n<p class=\"has-small-font-size\"><strong>Configure SQLNET.ora to use the wallet<\/strong><br>Now we have to add the wallet on the sqlnet.ora configuration that oracle will use it <\/p>\n\n\n\n<div class=\"wp-block-group has-small-font-size\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\"><div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\noracle@ora01:\/u01\/app\/oracle\/network\/admin\/ &#x5B;cdbs1] cat sqlnet.ora\nNAMES.DIRECTORY_PATH=(tnsnames,ezconnect)\n\nSQLNET.WALLET_OVERRIDE = true\nWALLET_LOCATION =\n(\n   SOURCE =\n      (METHOD = FILE)\n      (METHOD_DATA =\n         (DIRECTORY = \/u01\/app\/oracle\/admin\/cdbs1\/dg_wallet_cdbs1)\n      )\n)\n\n<\/pre><\/div><\/div><\/div>\n\n\n\n<p class=\"has-small-font-size\"><strong>Test Wallet <\/strong><br>now we can check if the connection over the wallet is working <\/p>\n\n\n\n<div class=\"wp-block-group has-small-font-size\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\"><div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\noracle@ora01:\/u01\/app\/oracle\/network\/admin\/ &#x5B;cdbs1] sqlplus \/@cdbs1 as sysdba\nSQL*Plus: Release 21.0.0.0.0 - Production\nVersion 21.8.0.0.0\nCopyright (c) 1982, 2022, Oracle.  All rights reserved.\nConnected to:\nOracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production\nVersion 21.8.0.0.0\nSQL&gt;exit\n\n-- Same to Side 2\noracle@ora01:\/u01\/app\/oracle\/network\/admin\/ &#x5B;cdbs1] sqlplus \/@cdbs2 as sysdba\nSQL*Plus: Release 21.0.0.0.0 - Production\nVersion 21.8.0.0.0\nCopyright (c) 1982, 2022, Oracle.  All rights reserved.\nConnected to:\nOracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production\nVersion 21.8.0.0.0\nSQL&gt;exit\n<\/pre><\/div><\/div><\/div>\n\n\n\n<p class=\"has-small-font-size\"><strong>Copy wallet \/ sqlnet to ORA02 <\/strong><br>now we can copy the wallet and sqlnet.ora to ora02 side and also test the connection from this side <\/p>\n\n\n\n<div class=\"wp-block-group has-small-font-size\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\"><div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\noracle@ora01:\/u01\/app\/oracle\/admin\/cdbs1\/&#x5B;cdbs1] scp dg_wallet_cdbs1 oracle@ora02:$PWD\ncwallet.sso                                                                                                            \ncwallet.sso.lck  \noracle@ora01:\/u01\/app\/oracle\/admin\/cdbs1\/&#x5B;cdbs1] scp $TNS_ADMIN\/sqlnet.ora oracle@ora02:$TNS_ADMIN\/sqlnet.ora\nsqlnet.ora\n\n-- Test Connection on Side 2 \noracle@ora02:\/u01\/app\/oracle\/network\/admin\/ &#x5B;cdbs1] sqlplus \/@cdbs1 as sysdba\nCopyright (c) 1982, 2022, Oracle.  All rights reserved.\nConnected to:\nOracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production\nVersion 21.8.0.0.0\nSQL&gt;exit\n\noracle@ora02:\/u01\/app\/oracle\/network\/admin\/ &#x5B;cdbs1] sqlplus \/@cdbs2 as sysdba\nSQL*Plus: Release 21.0.0.0.0 - Production\nVersion 21.8.0.0.0\nCopyright (c) 1982, 2022, Oracle.  All rights reserved.\nConnected to:\nOracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production\nVersion 21.8.0.0.0\nSQL&gt;exit\n<\/pre><\/div><\/div><\/div>\n\n\n\n<p class=\"has-small-font-size\"><strong>Create Broker Configuration<\/strong><br>So the first step is to create the broker configuration for the primary database. This is the same as for a normal dg configuration. The difference is, that you do this for both cdb, because both are primary databases <\/p>\n\n\n\n<div class=\"wp-block-group has-small-font-size\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\"><div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\n--SITE 1\n&#x5B;oracle@ora01 ~]$ dgmgrl sys\/Welcome_01\nDGMGRL for Linux: Release 21.0.0.0.0 - Production \nVersion 21.8.0.0.0\nCopyright (c) 1982, 2021, Oracle and\/or its affiliates.  All rights reserved.\nWelcome to DGMGRL, type &quot;help&quot; for information.\nConnected to &quot;cdbs1&quot;\nConnected as SYSDBA.\nDGMGRL&gt;\nDGMGRL&gt; create configuration site1 primary database is cdbs1 connect identifier is cdbs1.world;\nConnected to &quot;cdbs1&quot;\nConfiguration &quot;site1&quot; created with primary database &quot;cdbs1&quot;\nDGMGRL&gt;\nDGMGRL&gt; show configuration verbose;\nConfiguration - \n  Protection Mode: MaxPerformance\n  Members:\n  cdbs1 - Primary database\n  Properties:\n    FastStartFailoverThreshold      = &#039;30&#039;\n    OperationTimeout                = &#039;30&#039;\n    TraceLevel                      = &#039;USER&#039;\n    FastStartFailoverLagLimit       = &#039;30&#039;\n    CommunicationTimeout            = &#039;180&#039;\n    ObserverReconnect               = &#039;0&#039;\n    ObserverPingInterval            = &#039;0&#039;\n    ObserverPingRetry               = &#039;0&#039;\n    FastStartFailoverAutoReinstate  = &#039;TRUE&#039;\n    FastStartFailoverPmyShutdown    = &#039;TRUE&#039;\n    BystandersFollowRoleChange      = &#039;ALL&#039;\n    ObserverOverride                = &#039;FALSE&#039;\n    ExternalDestination1            = &#039;&#039;\n    ExternalDestination2            = &#039;&#039;\n    PrimaryLostWriteAction          = &#039;CONTINUE&#039;\n    ConfigurationWideServiceName    = &#039;cdbs1_CFG&#039;\n    ConfigurationSimpleName         = &#039;site1&#039;\n    DrainTimeout                    = &#039;0&#039;\nFast-Start Failover:  Disabled\nConfiguration Status:\nDISABLED\nDGMGRL&gt;\n\n-- Site 2\n&#x5B;oracle@ora02 ~]$ dgmgrl sys\/Welcome_01\nDGMGRL for Linux: Release 21.0.0.0.0 - Production \nVersion 21.8.0.0.0\nCopyright (c) 1982, 2021, Oracle and\/or its affiliates.  All rights reserved.\nWelcome to DGMGRL, type &quot;help&quot; for information.\nConnected to &quot;cdbs2&quot;\nConnected as SYSDBA.\nDGMGRL&gt;\nDGMGRL&gt; create configuration site2 primary database is cdbs2 connect identifier is cdbs2.world;\nConnected to &quot;cdbs2&quot;\nConfiguration &quot;site2&quot; created with primary database &quot;cdbs2&quot;\nDGMGRL&gt;\nDGMGRL&gt; show configuration verbose;\nConfiguration - \n  Protection Mode: MaxPerformance\n  Members:\n  cdbs2 - Primary database\n  Properties:\n    FastStartFailoverThreshold      = &#039;30&#039;\n    OperationTimeout                = &#039;30&#039;\n    TraceLevel                      = &#039;USER&#039;\n    FastStartFailoverLagLimit       = &#039;30&#039;\n    CommunicationTimeout            = &#039;180&#039;\n    ObserverReconnect               = &#039;0&#039;\n    ObserverPingInterval            = &#039;0&#039;\n    ObserverPingRetry               = &#039;0&#039;\n    FastStartFailoverAutoReinstate  = &#039;TRUE&#039;\n    FastStartFailoverPmyShutdown    = &#039;TRUE&#039;\n    BystandersFollowRoleChange      = &#039;ALL&#039;\n    ObserverOverride                = &#039;FALSE&#039;\n    ExternalDestination1            = &#039;&#039;\n    ExternalDestination2            = &#039;&#039;\n    PrimaryLostWriteAction          = &#039;CONTINUE&#039;\n    ConfigurationWideServiceName    = &#039;cdbs2_CFG&#039;\n    ConfigurationSimpleName         = &#039;site2&#039;\n    DrainTimeout                    = &#039;0&#039;\nFast-Start Failover:  Disabled\nConfiguration Status:\nDISABLED\nDGMGRL&gt;\n\n<\/pre><\/div><\/div><\/div>\n\n\n\n<p class=\"has-small-font-size\">the next step is different to a normal dg configuration. Normally after adding the primary database you would add the standby database but now we use the new syntax that allows us to add the configuration of one side to the other one<\/p>\n\n\n\n<div class=\"wp-block-group has-small-font-size\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\"><div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\n--Add Site 2 configuration to Side 1 Configuration\n&#x5B;oracle@ora01 ~]$ dgmgrl sys\/Welcome_01\nDGMGRL for Linux: Release 21.0.0.0.0 - Production \nVersion 21.8.0.0.0\nCopyright (c) 1982, 2021, Oracle and\/or its affiliates.  All rights reserved.\nWelcome to DGMGRL, type &quot;help&quot; for information.\nConnected to &quot;cdbs1&quot;\nConnected as SYSDBA.\nDGMGRL&gt;\nDGMGRL&gt; add configuration site2 connect identifier is cdbs2.world;\nConfiguration site2 added.\nDGMGRL&gt;\nDGMGRL&gt; show configuration verbose;\n\nConfiguration - site1\n\n  Protection Mode: MaxPerformance\n  Members:\n  cdbs1 - Primary database\n    cdbs2 - Primary database in site2 configuration\n\n  Properties:\n    FastStartFailoverThreshold      = &#039;30&#039;\n    OperationTimeout                = &#039;30&#039;\n    TraceLevel                      = &#039;USER&#039;\n    FastStartFailoverLagLimit       = &#039;30&#039;\n    CommunicationTimeout            = &#039;180&#039;\n    ObserverReconnect               = &#039;0&#039;\n    ObserverPingInterval            = &#039;0&#039;\n    ObserverPingRetry               = &#039;0&#039;\n    FastStartFailoverAutoReinstate  = &#039;TRUE&#039;\n    FastStartFailoverPmyShutdown    = &#039;TRUE&#039;\n    BystandersFollowRoleChange      = &#039;ALL&#039;\n    ObserverOverride                = &#039;FALSE&#039;\n    ExternalDestination1            = &#039;&#039;\n    ExternalDestination2            = &#039;&#039;\n    PrimaryLostWriteAction          = &#039;CONTINUE&#039;\n    ConfigurationWideServiceName    = &#039;cdbs1_CFG&#039;\n    ConfigurationSimpleName         = &#039;site1&#039;\n    DrainTimeout                    = &#039;0&#039;\n\nData Guard for PDB:   Enabled in SOURCE role\n\nFast-Start Failover:  Disabled\n\nConfiguration Status:\nDISABLED\n\nDGMGRL&gt; show configuration verbose site2;\n\nConfiguration - site2\n\nPrimary Database: cdbs2\n\n  Properties:\n    DGConnectIdentifier             = &#039;&#039;\n    LogShipping                     = &#039;ON&#039;\n    LogXptMode                      = &#039;ASYNC&#039;\n    DelayMins                       = &#039;0&#039;\n    Binding                         = &#039;optional&#039;\n    MaxFailure                      = &#039;0&#039;\n    ReopenSecs                      = &#039;300&#039;\n    NetTimeout                      = &#039;30&#039;\n    RedoCompression                 = &#039;DISABLE&#039;\n\nConfiguration site2 Status:\nSUCCESS\n\n-- Now we can enable the configuration ob both sides with the keyword &quot;ALL&quot;\nDGMGRL&gt; enable configuration all;\nSucceeded.\nDGMGRL&gt;\n<\/pre><\/div><\/div><\/div>\n\n\n\n<p class=\"has-small-font-size\"><strong>Add PDB to Broker <\/strong><br>The next step is to add the pluggable database to the broker configuration<\/p>\n\n\n\n<div class=\"wp-block-group has-small-font-size\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\"><div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\n&#x5B;oracle@ora01 ~]$ dgmgrl sys\/Welcome_01\nDGMGRL for Linux: Release 21.0.0.0.0 - Production \nVersion 21.8.0.0.0\nCopyright (c) 1982, 2021, Oracle and\/or its affiliates.  All rights reserved.\nWelcome to DGMGRL, type &quot;help&quot; for information.\nConnected to &quot;cdbs1&quot;\nConnected as SYSDBA.\nDGMGRL&gt; ADD PLUGGABLE DATABASE pdbs2 AT cdbs1 SOURCE IS pdbs2 AT cdbs2 PDBFILENAMECONVERT IS &quot;&#039;cdbs2&#039;,&#039;cdbs1&#039;&quot;;\nConnected to &quot;cdbs2&quot;\nConnected to &quot;cdbs1&quot;\nPluggable Database &quot;pdbs2&quot; added\nDGMGRL&gt;\n-- Now we can verify the new configuration for pdbs2\n\nDGMGRL&gt; show pluggable database pdbs2 at cdbs1;\nPluggable database &#039;pdbs2&#039; at database &#039;cdbs1&#039;\n  Data Guard Role:     Physical Standby\n  Con_ID:              4\n  Source:              con_id 3 at cdbs2\n  Transport Lag:       0 seconds (computed 43 seconds ago)\n  Intended State:      APPLY-ON\n  Apply State:         Not Running\nPluggable Database Status:\nDGM-5103: one or more data files were not found\nORA-16766: Redo Apply is stopped\n\nDGMGRL&gt; show pluggable database pdbs2 at cdbs2;\nConnected to &quot;cdbs2&quot;\nPluggable database &#039;pdbs2&#039; at database &#039;cdbs2&#039;\n  Data Guard Role:     Primary\n  Con_ID:              3\n  Active Target:       con_id 4 at cdbs1\nPluggable Database Status:\nSUCCESS\nDGMGRL&gt;\n\n\n<\/pre><\/div><\/div><\/div>\n\n\n\n<p class=\"has-small-font-size\"><strong>copy PDB Files<\/strong> <br>As you can see we have some Warning messages on the standby side for pdbs2 that some datafiles are not found. That is one of the disadvantages that we have with dgpd. If you add a standby pdb to the broker, the files will not automaticly copied to the standby side. We have to do that in that case \ud83d\ude41 I will show you how to do it with rman. <br>1. First you need the file ID for the pdb from the primary side. in my case that was 13,14,15<br>2. Connect with RMAN as target to the Primary Site of the pdbs2 and with the auxiliary to the standby side<br>3. Copy the datafiles to the standby server<\/p>\n\n\n\n<div class=\"wp-block-group has-small-font-size\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\"><div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\n&#x5B;oracle@ora01 ~]$ rman target sys\/Welcome_01@cdbs2.world auxiliary sys\/Welcome_01@cdbs1.world\nRecovery Manager: Release 21.0.0.0.0 - Production on Mon Nov 7 03:05:56 2022\nVersion 21.8.0.0.0\n\nCopyright (c) 1982, 2021, Oracle and\/or its affiliates.  All rights reserved.\n\nconnected to target database: CDBS2 (DBID=4113202005)\nconnected to auxiliary database: CDBS1 (DBID=4052505709)\n\nRMAN&gt; run {\n2&gt; allocate channel ch1 type disk ;\n3&gt; backup as copy reuse  datafile 13,14,15 auxiliary format to new;\n4&gt; }\n\nusing target database control file instead of recovery catalog\nallocated channel: ch1\nchannel ch1: SID=69 instance=oradbdc22 device type=DISK\nStarting backup at 04-NOV-22\nchannel ch1: starting datafile copy\ninput datafile file number=00013\nname=\/u02\/oradata\/cdbs2\/E55CEF3F4ECA51D8E0535ABDRB0AA403\/DATAFILE\/sysaux.300.1111789169\noutput file name=\/u02\/oradata\/cdbs1\/E78CEF3F4ECA5941D8E0535A73A00AA405\/DATAFILE\/sysaux.316.1111792861 \nchannel ch1: datafile copy complete, elapsed time: 00:00:18\nchannel ch1: starting datafile copy\ninput datafile file number=00014\nname=\/u02\/oradata\/cdbs2\/E55CEF3F4ECA51D8E0535ABDRB0AA403\/DATAFILE\/system.300.1111789169\noutput file name=\/u02\/oradata\/cdbs1\/E78CEF3F4ECA5941D8E0535A73A00AA405\/DATAFILE\/system.316.1111792861 \nchannel ch1: datafile copy complete, elapsed time: 00:00:23\nchannel ch1: starting datafile copy\ninput datafile file number=00015\nname=\/u02\/oradata\/cdbs2\/E55CEF3F4ECA51D8E0535ABDRB0AA403\/DATAFILE\/undots.300.1111789169\noutput file name=\/u02\/oradata\/cdbs1\/E78CEF3F4ECA5941D8E0535A73A00AA405\/DATAFILE\/undots.316.1111792861 \nchannel ch1: datafile copy complete, elapsed time: 00:00:19\nFinished backup at 04-NOV-22\nreleased channel: ch1\n<\/pre><\/div><\/div><\/div>\n\n\n\n<p class=\"has-small-font-size\">Now the datafiles for the pdbs2 are copied to the standby side on cdbs1 but we still have to do some changes. As we have added the standby database in the broker, oracle automaticly add some wrong datafile names in the dictionary. So now we have to do a rename to the right names that we get from the rman &#8220;output file name&#8221; <\/p>\n\n\n\n<div class=\"wp-block-group has-small-font-size\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\"><div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\nSQL&gt; alter database rename file &#039;\/u02\/oradata\/CDBS2\/EC7F3B8B56133B1DE0530B01A8C0B4DC\/datafile\/o1_mf_undotbs1_kp5220rq_.dbf&#039; to &#039;\/u02\/oradata\/cdbs1\/E78CEF3F4ECA5941D8E0535A73A00AA405\/DATAFILE\/undots.316.1111792861&#039;;\nDatabase altered.\nSQL&gt; alter database rename file &#039;\/u02\/oradata\/CDBS2\/EC7F3B8B56133B1DE0530B01A8C0B4DC\/datafile\/o1_mf_sysaux_kp5220rp_.dbf&#039; to &#039;\/u02\/oradata\/cdbs1\/E78CEF3F4ECA5941D8E0535A73A00AA405\/DATAFILE\/sysaux.316.1111792861&#039;;\nDatabase altered.\nSQL&gt; alter database rename file &#039;\/u02\/oradata\/CDBS2\/EC7F3B8B56133B1DE0530B01A8C0B4DC\/datafile\/o1_mf_system_kp5220r9_.dbf&#039; to &#039;\/u02\/oradata\/cdbs1\/E78CEF3F4ECA5941D8E0535A73A00AA405\/DATAFILE\/system.316.1111792861&#039;;\nDatabase altered.\n\n<\/pre><\/div><\/div><\/div>\n\n\n\n<p class=\"has-small-font-size\"><strong>Enable configuration and check settings<\/strong><br>Now we can enable the configuration again and the pdb should start with the recovery <\/p>\n\n\n\n<div class=\"wp-block-group has-small-font-size\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\"><div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\n&#x5B;oracle@ora01 ~]$ dgmgrl sys\/Welcome_01\nDGMGRL for Linux: Release 21.0.0.0.0 - Production \nVersion 21.8.0.0.0\nCopyright (c) 1982, 2021, Oracle and\/or its affiliates.  All rights reserved.\nWelcome to DGMGRL, type &quot;help&quot; for information.\nConnected to &quot;cdbs1&quot;\nConnected as SYSDBA.\nDGMGRL&gt; enable configuration all;\nSucceeded.\nDGMGRL&gt; show pluggable database pdbs2 at cdbs1;\nConnected to &quot;cdbs1&quot;\n\nPluggable database &#039;pdbs2&#039; at database &#039;cdbs1&#039;\n\n  Data Guard Role:     Physical Standby\n  Con_ID:              3\n  Source:              con_id 5 at cdbs2\n  Transport Lag:       0 seconds (computed 7 seconds ago)\n  Intended State:      APPLY-ON\n  Apply State:         Running\n  Apply Instance:      cdbs2\n  Average Apply Rate:  17 KByte\/s\n  Real Time Query:     OFF\n\nPluggable Database Status:\nSUCCESS\n\n<\/pre><\/div><\/div><\/div>\n\n\n\n<p class=\"has-small-font-size\"><strong>Execute Switchover for pdbs2<\/strong><\/p>\n\n\n\n<div class=\"wp-block-group has-small-font-size\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\"><div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\n&#x5B;oracle@ora01 ~]$ dgmgrl sys\/Welcome_01\nDGMGRL for Linux: Release 21.0.0.0.0 - Production \nVersion 21.8.0.0.0\nCopyright (c) 1982, 2021, Oracle and\/or its affiliates.  All rights reserved.\nWelcome to DGMGRL, type &quot;help&quot; for information.\nConnected to &quot;cdbs1&quot;\nConnected as SYSDBA.\nDGMGRL&gt; show pluggable database pdbs2 at cdbs2;\nConnected to &quot;cdbs1&quot;\n\nPluggable database &#039;pdbs2&#039; at database &#039;cdbs2&#039;\n\n  Data Guard Role:     Primary\n  Con_ID:              5\n  Active Target:       con_id 3 at cdbs2\n\nPluggable Database Status:\nSUCCESS\n\nDGMGRL&gt; show pluggable database pdbs2 at cdbs1;\n\nPluggable database &#039;pdbs2&#039; at database &#039;cdbs1&#039;\n\n  Data Guard Role:     Physical Standby\n  Con_ID:              3\n  Source:              con_id 5 at cdbs1\n  Transport Lag:       0 seconds (computed 37 seconds ago)\n  Intended State:      APPLY-ON\n  Apply State:         Running\n  Apply Instance:      cdbs2\n  Average Apply Rate:  12 KByte\/s\n  Real Time Query:     OFF\n\nPluggable Database Status:\nSUCCESS\n\n\nDGMGRL&gt; switchover to pluggable database pdbs2 at cdbs1;\nVerifying conditions for Switchover...\n\nConnected to &quot;cdbs2&quot;\n  Source pluggable database is &#039;PDBS2&#039; at database &#039;cdbs2&#039;\n\nPerforming switchover NOW, please wait...\n\n  Closing pluggable database &#039;PDBS2&#039;...\n  Switching &#039;PDBS2&#039; to standby role...\nConnected to &quot;cdbs1&quot;\n  Waiting for &#039;PDBS2&#039; to recover all redo data...\n  Stopping recovery at &#039;PDBS2&#039;...\n  Converting &#039;PDBS2&#039; to primary role...\n  Opening new primary &#039;PDBS2&#039;...\nConnected to &quot;cdbs2&quot;\n  Waiting for redo data from new primary &#039;PDBS2&#039;...\n  Starting recovery at new standby &#039;PDBS2&#039;...\n\nSwitchover succeeded, new primary is &quot;PDBS2&quot;\nDGMGRL&gt;\nDGMGRL&gt;\nDGMGRL&gt; show pluggable database pdbs2 at cdbs1;\n\nPluggable database &#039;pdbs2&#039; at database &#039;cdbs1&#039;\n\n  Data Guard Role:     Primary\n  Con_ID:              3\n  Active Target:       con_id 5 at cdbs1\n\nPluggable Database Status:\nSUCCESS\n\nDGMGRL&gt; show pluggable database pdbs2 at cdbs2;\nConnected to &quot;cdbs1&quot;\n\nPluggable database &#039;pdbs2&#039; at database &#039;cdbs2&#039;\n\n  Data Guard Role:     Physical Standby\n  Con_ID:              5\n  Source:              con_id 3 at cdbs2\n  Transport Lag:       0 seconds (computed 67 seconds ago)\n  Intended State:      APPLY-ON\n  Apply State:         Running\n  Apply Instance:      cdbs1\n  Average Apply Rate:  (unknown)\n  Real Time Query:     OFF\n\nPluggable Database Status:\nSUCCESS\n\nDGMGRL&gt;\n<\/pre><\/div><\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p class=\"has-small-font-size\">As you can see the new feature DGPDB is working and you also can do a switchover on pdb level. So oracle is going in the right direction that you can manage pdbs also in case of high availability like a &#8220;normal&#8221; database, but today you have to be aware, that the Setup is not straigt forward and also that you have a lot of limitations compared to the normal data guard with primary and standby databases. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><br><\/h2>\n","protected":false},"excerpt":{"rendered":"<p>Introduction One of the long requested features in case of Multitenant was the possibility to create and manage a data guard configuration on pdb level. Now with the Release Update 21.6 this was finaly implemented and the name of the new feature ist called DGPDB. If you want to know more about the data guard [&hellip;]<\/p>\n","protected":false},"author":27,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[59],"tags":[221,2740,64,137],"type_dbi":[],"class_list":["post-20400","post","type-post","status-publish","format-standard","hentry","category-oracle","tag-data-guard","tag-dgpdb","tag-multitenant","tag-oracle-21c"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>How to Setup Dataguard on PDB Level (DGPDB) - dbi Blog<\/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:\/\/www.dbi-services.com\/blog\/how-to-setup-dataguard-on-pdb-level-dgpdb\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Setup Dataguard on PDB Level (DGPDB)\" \/>\n<meta property=\"og:description\" content=\"Introduction One of the long requested features in case of Multitenant was the possibility to create and manage a data guard configuration on pdb level. Now with the Release Update 21.6 this was finaly implemented and the name of the new feature ist called DGPDB. If you want to know more about the data guard [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/how-to-setup-dataguard-on-pdb-level-dgpdb\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-07T14:57:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-01-06T10:35:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/11\/dg_limitations.webp\" \/>\n<meta name=\"author\" content=\"Oracle Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Oracle Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/how-to-setup-dataguard-on-pdb-level-dgpdb\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/how-to-setup-dataguard-on-pdb-level-dgpdb\/\"},\"author\":{\"name\":\"Oracle Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"headline\":\"How to Setup Dataguard on PDB Level (DGPDB)\",\"datePublished\":\"2022-11-07T14:57:55+00:00\",\"dateModified\":\"2023-01-06T10:35:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/how-to-setup-dataguard-on-pdb-level-dgpdb\/\"},\"wordCount\":1024,\"commentCount\":1,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/how-to-setup-dataguard-on-pdb-level-dgpdb\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/11\/dg_limitations.webp\",\"keywords\":[\"Data Guard\",\"DGPDB\",\"multitenant\",\"Oracle 21C\"],\"articleSection\":[\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/how-to-setup-dataguard-on-pdb-level-dgpdb\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/how-to-setup-dataguard-on-pdb-level-dgpdb\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/how-to-setup-dataguard-on-pdb-level-dgpdb\/\",\"name\":\"How to Setup Dataguard on PDB Level (DGPDB) - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/how-to-setup-dataguard-on-pdb-level-dgpdb\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/how-to-setup-dataguard-on-pdb-level-dgpdb\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/11\/dg_limitations.webp\",\"datePublished\":\"2022-11-07T14:57:55+00:00\",\"dateModified\":\"2023-01-06T10:35:17+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/how-to-setup-dataguard-on-pdb-level-dgpdb\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/how-to-setup-dataguard-on-pdb-level-dgpdb\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/how-to-setup-dataguard-on-pdb-level-dgpdb\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/11\/dg_limitations.webp\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/11\/dg_limitations.webp\",\"width\":1024,\"height\":518},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/how-to-setup-dataguard-on-pdb-level-dgpdb\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Setup Dataguard on PDB Level (DGPDB)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\",\"name\":\"Oracle Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"caption\":\"Oracle Team\"},\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/oracle-team\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to Setup Dataguard on PDB Level (DGPDB) - dbi Blog","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:\/\/www.dbi-services.com\/blog\/how-to-setup-dataguard-on-pdb-level-dgpdb\/","og_locale":"en_US","og_type":"article","og_title":"How to Setup Dataguard on PDB Level (DGPDB)","og_description":"Introduction One of the long requested features in case of Multitenant was the possibility to create and manage a data guard configuration on pdb level. Now with the Release Update 21.6 this was finaly implemented and the name of the new feature ist called DGPDB. If you want to know more about the data guard [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/how-to-setup-dataguard-on-pdb-level-dgpdb\/","og_site_name":"dbi Blog","article_published_time":"2022-11-07T14:57:55+00:00","article_modified_time":"2023-01-06T10:35:17+00:00","og_image":[{"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/11\/dg_limitations.webp","type":"","width":"","height":""}],"author":"Oracle Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Oracle Team","Est. reading time":"14 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/how-to-setup-dataguard-on-pdb-level-dgpdb\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/how-to-setup-dataguard-on-pdb-level-dgpdb\/"},"author":{"name":"Oracle Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"headline":"How to Setup Dataguard on PDB Level (DGPDB)","datePublished":"2022-11-07T14:57:55+00:00","dateModified":"2023-01-06T10:35:17+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/how-to-setup-dataguard-on-pdb-level-dgpdb\/"},"wordCount":1024,"commentCount":1,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/how-to-setup-dataguard-on-pdb-level-dgpdb\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/11\/dg_limitations.webp","keywords":["Data Guard","DGPDB","multitenant","Oracle 21C"],"articleSection":["Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/how-to-setup-dataguard-on-pdb-level-dgpdb\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/how-to-setup-dataguard-on-pdb-level-dgpdb\/","url":"https:\/\/www.dbi-services.com\/blog\/how-to-setup-dataguard-on-pdb-level-dgpdb\/","name":"How to Setup Dataguard on PDB Level (DGPDB) - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/how-to-setup-dataguard-on-pdb-level-dgpdb\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/how-to-setup-dataguard-on-pdb-level-dgpdb\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/11\/dg_limitations.webp","datePublished":"2022-11-07T14:57:55+00:00","dateModified":"2023-01-06T10:35:17+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/how-to-setup-dataguard-on-pdb-level-dgpdb\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/how-to-setup-dataguard-on-pdb-level-dgpdb\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/how-to-setup-dataguard-on-pdb-level-dgpdb\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/11\/dg_limitations.webp","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/11\/dg_limitations.webp","width":1024,"height":518},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/how-to-setup-dataguard-on-pdb-level-dgpdb\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to Setup Dataguard on PDB Level (DGPDB)"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee","name":"Oracle Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","caption":"Oracle Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/oracle-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/20400","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/27"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=20400"}],"version-history":[{"count":9,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/20400\/revisions"}],"predecessor-version":[{"id":20669,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/20400\/revisions\/20669"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=20400"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=20400"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=20400"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=20400"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}