{"id":10244,"date":"2017-06-12T20:04:49","date_gmt":"2017-06-12T18:04:49","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/12cr2-pdb-refresh-as-a-poor-man-standby\/"},"modified":"2017-06-12T20:04:49","modified_gmt":"2017-06-12T18:04:49","slug":"12cr2-pdb-refresh-as-a-poor-man-standby","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/12cr2-pdb-refresh-as-a-poor-man-standby\/","title":{"rendered":"12cR2 PDB refresh as a poor-man standby?"},"content":{"rendered":"<h2>By Franck Pachot<\/h2>\n<p>.<\/p>\n<h3>Disclaimer<\/h3>\n<p>My goal here is only to show that the Refreshable PDB feature works by shipping and applying redo, and then can synchronize a copy of the datafiles. I do not recommend to use it for disaster recovery in any production environment yet. Even if I&#8217;m using only supported features, those features were not designed for this usage, and are quite new and not stable yet. Disaster Recovery must use safe and proven technologies and this is why I&#8217;ll stick with Dbvisit standby for disaster recovery in Standard Edition.<\/p>\n<p>This post explains what I had in my mind whith the following tweet:<br \/>\n<a href=\"https:\/\/twitter.com\/FranckPachot\/status\/872868762327928832\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CapturePoorManSBY.png\" alt=\"CapturePoorManSBY\" width=\"592\" height=\"286\" class=\"alignnone size-full wp-image-17095\" \/><\/a><br \/>\n<!--more--><\/p>\n<h3>Primary PRDPDB<\/h3>\n<p>On my primary server, I have a CDB1 container database in Standard Edition with one Pluggable Database: PDRDPDB:<\/p>\n<pre><code>\n21:36:45 SQL&gt; connect sys\/oracle@\/\/192.168.78.105\/CDB1 as sysdba\nConnected.\n&nbsp;\n21:36:46 SQL&gt; show pdbs\n&nbsp;\n    CON_ID CON_NAME                       OPEN MODE  RESTRICTED\n---------- ------------------------------ ---------- ----------\n         2 PDB$SEED                       READ ONLY  NO\n         3 PRDPDB                         READ WRITE NO\n<\/code><\/pre>\n<p>I need a user there to be able to remote clone from it:<\/p>\n<pre><code>\n21:36:46 SQL&gt; grant create session, sysoper, dba  to C##DBA identified by oracle container=all;\nGrant succeeded.\n<\/code><\/pre>\n<h3>Standby server<\/h3>\n<p>On my standby server, I have a CDB1 container database in Standard Edition, where I create a database link to the production CDB using the user created above to connect to it:<\/p>\n<pre><code>\n21:36:46 SQL&gt; connect sys\/oracle@\/\/192.168.78.106:1522\/CDB1 as sysdba\nConnected.\n21:36:46 SQL&gt; create database link CDB1A connect to C##DBA identified by oracle using '\/\/192.168.78.105\/CDB1A';\nDatabase link created.\n<\/code><\/pre>\n<p>My standby server runs Grid Infrastructure and has the database created on \/acfs which is an ACFS filesystem. We will see the reason later when we will need to create a PDB snapshot copy. Any filesystem where you can use PDB snapshot copy would be fine.<\/p>\n<h3>Standby SBYPDB<\/h3>\n<p>The creation of the &#8216;standby&#8217; pluggable database is done with a simple remote clone command and can be run in 12<i>c<\/i>R2 with the source PRDPDB still opened read write:<\/p>\n<pre><code>\n21:36:46 SQL&gt; create pluggable database SBYPDB from PRDPDB@CDB1A\n21:36:46   2  file_name_convert=('\/u01\/oradata\/CDB1A\/PRDPDB','\/acfs\/oradata\/CDB1\/SBYPDB')\n21:36:46   3  refresh mode every 1 minutes;\n&nbsp;\nPluggable database created.\n<\/code><\/pre>\n<p>The REFRESH MODE is a 12<i>c<\/i>R2 feature which primary goal is to maintain and refresh a master clone for further provisioning of thin clones. This clone is refreshed every 1 minute, which means that I expect to have at most a one minute gap between PRDPDB and SBYPDB data, with the additional time to apply the 1 minute redo, of course.<\/p>\n<h3>Activity on the source<\/h3>\n<p>I will simulate a crash of the primary server and a failover to the standby, when transactions are running. I&#8217;ll run this activity on the SCOTT.EMP table:<\/p>\n<pre><code>\n21:39:03 SQL&gt; connect scott\/tiger@\/\/192.168.78.105\/PRDPDB;\nConnected.\n&nbsp;\n21:39:04 SQL&gt; select * from emp where ename='KING';\n&nbsp;\n     EMPNO ENAME      JOB              MGR HIREDATE                    SAL\n---------- ---------- --------- ---------- -------------------- ----------\n      7839 KING       PRESIDENT            17-nov-1981 00:00:00       5000\n<\/code><\/pre>\n<p>I&#8217;m now updating the date and incrementing the number each second.<\/p>\n<pre><code>\n21:39:09 SQL&gt; exec for i in 1..150 loop update emp set hiredate=sysdate, sal=sal+1; dbms_lock.sleep(1); commit; end loop\n&nbsp;\nPL\/SQL procedure successfully completed.\n<\/code><\/pre>\n<p>Here is the latest data on the primary server:<\/p>\n<pre><code>\n21:41:39 SQL&gt; select * from emp where ename='KING';\n&nbsp;\n     EMPNO ENAME      JOB              MGR HIREDATE                    SAL\n---------- ---------- --------- ---------- -------------------- ----------\n      7839 KING       PRESIDENT            11-jun-2017 21:41:38       5150\n<\/code><\/pre>\n<h3>Crash the primary<\/h3>\n<p>The primary server is not supposed to be accessible in case of Disaster Recovery, so I&#8217;m crashing it:<\/p>\n<pre><code>\n21:41:39 SQL&gt; disconnect\nDisconnected from Oracle Database 12c Standard Edition Release 12.2.0.1.0 - 64bit Production\n21:41:39 SQL&gt; connect \/ as sysdba\nConnected.\n21:41:39 SQL&gt; shutdown abort\nORACLE instance shut down.\n<\/code><\/pre>\n<h3>Activate the standby<\/h3>\n<p>The datafiles are up to date, with a maximum 1 minute gap and all I want is open it and have the application re-connect to it. However a refreshable clone can be opened only read-only. This makes sense: you cannot apply more redo from source once opened read-write. So my first idea was to stop the refresh mode:<\/p>\n<pre><code>\n21:41:45 SQL&gt; connect sys\/oracle@\/\/192.168.78.106:1522\/CDB1 as sysdba\nConnected.\n21:41:45 SQL&gt; alter session set container=SBYPDB;\nSession altered.\n&nbsp;\n21:41:45 SQL&gt; alter pluggable database SBYPDB refresh mode none;\nalter pluggable database SBYPDB refresh mode none\n*\nERROR at line 1:\nORA-17627: ORA-12514: TNS:listener does not currently know of service requested\nin connect descriptor\nORA-17629: Cannot connect to the remote database server\n<\/code><\/pre>\n<p>It seems that Oracle tries to do one last refresh when you stop the refresh mode, but this fails here because the source is not accessible. I think that it should be possible to open read-write without applying more redo. However, these refreshable clones were not designed for failover. <\/p>\n<p>I hope that one day we will just be able to end refresh mode without connecting to source, accepting to lose the latest transactions. <\/p>\n<h3>Open Read Only<\/h3>\n<p>Without an access to the source, I stay in refresh mode and I can only open read only:<\/p>\n<pre><code>21:41:45 SQL&gt; alter pluggable database SBYPDB open read-only;\nPluggable database altered.\n&nbsp;\n21:41:47 SQL&gt; alter session set container=SBYPDB;\nSession altered.\n&amp;nsbp;\n21:41:47 SQL&gt; alter session set nls_date_format='dd-mon-yyyy hh24:mi:ss';\nSession altered.\n&nbsp;\n21:41:47 SQL&gt; select * from scott.emp where ename='KING';\n&nbsp;\n     EMPNO ENAME      JOB              MGR HIREDATE                    SAL\n---------- ---------- --------- ---------- -------------------- ----------\n      7839 KING       PRESIDENT            11-jun-2017 21:41:01       5113\n<\/code><\/pre>\n<p>My data is there, with my less than one minute gap, but that&#8217;s not sufficient for me. I want to run my application on it.<\/p>\n<h3>Snapshot Clone<\/h3>\n<p>My first idea to get the PDB read write on the standby server is to clone it. Of course, the failover time should not depend on the size of the database, so my idea is to do a snapshot copy, and this is why I&#8217;ve setup my standby CDB on ACFS. Here I&#8217;m cloning the SBYPDB to the same name as the primary: PRDPDB <\/p>\n<pre><code>\n21:41:47 SQL&gt; alter session set container=CDB$ROOT;\nSession altered.\n&nbsp;\n21:41:47 SQL&gt; create pluggable database PRDPDB from SBYPDB file_name_convert=('SBYPDB','PRDPDB') snapshot copy;\nPluggable database created.\n&nbsp;\n21:42:03 SQL&gt; alter pluggable database PRDPDB open;\nPluggable database altered.\n<\/code><\/pre>\n<p>I have now my new PRDPDB opened read write with the latest data that was refreshed:<\/p>\n<pre><code>\n21:42:26 SQL&gt; alter session set container=PRDPDB;\nSession altered.\n&nbsp;\n21:42:26 SQL&gt; alter session set nls_date_format='dd-mon-yyyy hh24:mi:ss';\nSession altered.\n&nbsp;\n21:42:26 SQL&gt; select * from scott.emp where ename='KING';\n&nbsp;\n     EMPNO ENAME      JOB              MGR HIREDATE                    SAL\n---------- ---------- --------- ---------- -------------------- ----------\n      7839 KING       PRESIDENT            11-jun-2017 21:41:01       5113\n<\/code><\/pre>\n<p>I&#8217;m running on a snapshot here. I can stay like that, or plan to move it out of the snapshot in the future. There is no online datafile move in Standard Edition, but there is the online pluggable database relocate. Anyway, running the database in a snapshot is sufficient to run a production after a Disaster Recovery and I can remove the SBYPRD so that there is no need to copy the ACFS extents on future writes.<\/p>\n<h3>Keep the snapshot<\/h3>\n<p>At that point, you should tell me that I cannot snapshot copy a PDB within the same CDB here because I&#8217;m in Standard Edition. And that&#8217;s right: you can create only one PDB there and you are supposed to get a &#8216;feature not enabled&#8217;. But I was able to do it here in my lab, with a small trick to inverse the CON_ID sequence:<\/p>\n<pre><code>\nConnected to:\nOracle Database 12c Standard Edition Release 12.2.0.1.0 - 64bit Production\n&nbsp;\nSQL&gt; show pdbs\n&nbsp;\n    CON_ID CON_NAME                       OPEN MODE  RESTRICTED\n---------- ------------------------------ ---------- ----------\n         2 PDB$SEED                       READ ONLY  NO\n         3 PRDPDB                         READ WRITE NO\n         4 SBYPDB                         MOUNTED\n<\/code><\/pre>\n<p>Remote snapshot clone should be possible as well. But there&#8217;s another licensing issue here. Using ACFS snapshots for the database is not allowed in Standard Edition. This means that this solution probably requires another snapshot solution than the one I&#8217;m using here in my lab.<\/p>\n<p>If you don&#8217;t fear to violate the single-tenant rules, you may prefer to keep the SBYPRD for a while. Imagine that you are able to restart the crashed server for a few minutes, then you can do the last refresh of SBYPRD to have a look at the transactions that were lost in the 1 minute window.<\/p>\n<p>I re-start the crashed CDB:<\/p>\n<pre><code>\n21:42:26 SQL&gt; connect \/ as sysdba\nConnected to an idle instance.\n21:42:27 SQL&gt; startup\nORACLE instance started.\n&nbsp;\nTotal System Global Area  859832320 bytes\nFixed Size                  8798552 bytes\nVariable Size             356519592 bytes\nDatabase Buffers          486539264 bytes\nRedo Buffers                7974912 bytes\nDatabase mounted.\nDatabase opened.\n<\/code><\/pre>\n<p>and now, on my standby server, I can finally stop the refresh mode:<\/p>\n<pre><code>\n21:42:51 SQL&gt; connect sys\/oracle@\/\/192.168.78.106:1522\/CDB1 as sysdba\nConnected.\n21:42:52 SQL&gt; alter pluggable database SBYPDB close;\nPluggable database altered.\n&nbsp;\n21:42:52 SQL&gt; alter session set container=SBYPDB;\nSession altered.\n&nbsp;\n21:42:52 SQL&gt; alter pluggable database SBYPDB refresh mode none;\nPluggable database altered.\n<\/code><\/pre>\n<p>Be careful not to have jobs or services starting here because your production is now on the snapshot clone PRDPDB running on the same server. Let&#8217;s open it:<\/p>\n<pre><code>\n21:43:02 SQL&gt; alter pluggable database SBYPDB open restricted;\nPluggable database altered.\n&nbsp;\n21:43:24 SQL&gt; select * from scott.emp where ename='KING';\n&nbsp;\n     EMPNO ENAME      JOB              MGR HIREDATE                    SAL\n---------- ---------- --------- ---------- -------------------- ----------\n      7839 KING       PRESIDENT            11-jun-2017 21:41:38       5150\n<\/code><\/pre>\n<p>And here we are with the data at the moment of the crash. Then, the application owner can manually check what was missed between the last refresh (which made its way to PRDPDB) and the crash (visible in SBYPDB).<\/p>\n<h3>Unplug\/Plug<\/h3>\n<p>I was not very satisfied by the snapshot clone because of the limitations in Standard Edition, which is where this solution may be interesting. I have the datafiles but cannot open the SBYPDB read write. I tried to unplug them but cannot because of the refresh mode:<\/p>\n<pre><code>\nSQL&gt; alter pluggable database SBYPDB unplug into '\/tmp\/tmp.xml';\n&nbsp;\nError starting at line : 1 in command -\nalter pluggable database SBYPDB unplug into '\/tmp\/tmp.xml'\nError report -\nORA-01113: file 23 needs media recovery\nORA-01110: data file 23: '\/acfs\/oradata\/CDB1\/SBYPDB\/undotbs01.dbf'\n01113. 00000 -  \"file %s needs media recovery\"\n*Cause:    An attempt was made to online or open a database with a file that\n           is in need of media recovery.\n*Action:   First apply media recovery to the file.\n<\/code><\/pre>\n<p>I know that I don&#8217;t need more recovery. So let&#8217;s unplug it in another way:<\/p>\n<pre><code>\nSQL&gt; alter pluggable database SBYPDB open read only;\nPluggable database SBYPDB altered.\n&nbsp;\nSQL&gt; exec dbms_pdb.describe('\/tmp\/tmp.xml','SBYPDB');\nPL\/SQL procedure successfully completed.\n<\/code><\/pre>\n<p>Then drop it but keep the datafiles:<\/p>\n<pre><code>\nSQL&gt; alter pluggable database SBYPDB close;\nPluggable database SBYPDB altered.\n&nbsp;\nSQL&gt; drop pluggable database SBYPDB;\nPluggable database SBYPDB dropped.\n<\/code><\/pre>\n<p>And plug it back:<\/p>\n<pre><code>\nSQL&gt; create pluggable database SBYPDB using '\/tmp\/tmp.xml';\nPluggable database SBYPDB created.\n&nbsp;\nSQL&gt; alter pluggable database SBYPDB open;\nPluggable database SBYPDB altered.\n<\/code><\/pre>\n<p>Here it is. This takes a bit longer than the snapshot solution but still ready to activate the &#8216;standby&#8217; PDB without copying datafiles.<\/p>\n<h3>So what?<\/h3>\n<p>All the new 12<i>c<\/i>R2 multitenant features are available in all Editions, which is very good. Here with ALTER PLUGGABLE DATABASE &#8230; REFRESH we have log shipping and apply, for free in Standard Edition, at PDB level. And I&#8217;ve tested two ways to open this standby PDB in case of disaster recovery. I&#8217;m using only supported features here, but be careful that those features were not designed for this goal. The normal operations on refreshable clone require that the remote CDB is accessible. But there are workarounds here because you can describe\/drop\/plug or snapshot clone from a PDB that you can open read only.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>By Franck Pachot . Disclaimer My goal here is only to show that the Refreshable PDB feature works by shipping and applying redo, and then can synchronize a copy of the datafiles. I do not recommend to use it for disaster recovery in any production environment yet. Even if I&#8217;m using only supported features, those [&hellip;]<\/p>\n","protected":false},"author":27,"featured_media":10245,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[59],"tags":[220,64,96,209,66,223,1121],"type_dbi":[],"class_list":["post-10244","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oracle","tag-cdb","tag-multitenant","tag-oracle","tag-oracle-12c","tag-pdb","tag-pluggable-databases","tag-single-tenant"],"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>12cR2 PDB refresh as a poor-man standby? - 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\/12cr2-pdb-refresh-as-a-poor-man-standby\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"12cR2 PDB refresh as a poor-man standby?\" \/>\n<meta property=\"og:description\" content=\"By Franck Pachot . Disclaimer My goal here is only to show that the Refreshable PDB feature works by shipping and applying redo, and then can synchronize a copy of the datafiles. I do not recommend to use it for disaster recovery in any production environment yet. Even if I&#8217;m using only supported features, those [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/12cr2-pdb-refresh-as-a-poor-man-standby\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-06-12T18:04:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CapturePoorManSBY.png\" \/>\n\t<meta property=\"og:image:width\" content=\"592\" \/>\n\t<meta property=\"og:image:height\" content=\"286\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\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=\"10 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\/12cr2-pdb-refresh-as-a-poor-man-standby\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/12cr2-pdb-refresh-as-a-poor-man-standby\/\"},\"author\":{\"name\":\"Oracle Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"headline\":\"12cR2 PDB refresh as a poor-man standby?\",\"datePublished\":\"2017-06-12T18:04:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/12cr2-pdb-refresh-as-a-poor-man-standby\/\"},\"wordCount\":1203,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/12cr2-pdb-refresh-as-a-poor-man-standby\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CapturePoorManSBY.png\",\"keywords\":[\"CDB\",\"multitenant\",\"Oracle\",\"Oracle 12c\",\"PDB\",\"Pluggable Databases\",\"single-tenant\"],\"articleSection\":[\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/12cr2-pdb-refresh-as-a-poor-man-standby\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/12cr2-pdb-refresh-as-a-poor-man-standby\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/12cr2-pdb-refresh-as-a-poor-man-standby\/\",\"name\":\"12cR2 PDB refresh as a poor-man standby? - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/12cr2-pdb-refresh-as-a-poor-man-standby\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/12cr2-pdb-refresh-as-a-poor-man-standby\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CapturePoorManSBY.png\",\"datePublished\":\"2017-06-12T18:04:49+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/12cr2-pdb-refresh-as-a-poor-man-standby\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/12cr2-pdb-refresh-as-a-poor-man-standby\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/12cr2-pdb-refresh-as-a-poor-man-standby\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CapturePoorManSBY.png\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CapturePoorManSBY.png\",\"width\":592,\"height\":286},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/12cr2-pdb-refresh-as-a-poor-man-standby\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"12cR2 PDB refresh as a poor-man standby?\"}]},{\"@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":"12cR2 PDB refresh as a poor-man standby? - 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\/12cr2-pdb-refresh-as-a-poor-man-standby\/","og_locale":"en_US","og_type":"article","og_title":"12cR2 PDB refresh as a poor-man standby?","og_description":"By Franck Pachot . Disclaimer My goal here is only to show that the Refreshable PDB feature works by shipping and applying redo, and then can synchronize a copy of the datafiles. I do not recommend to use it for disaster recovery in any production environment yet. Even if I&#8217;m using only supported features, those [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/12cr2-pdb-refresh-as-a-poor-man-standby\/","og_site_name":"dbi Blog","article_published_time":"2017-06-12T18:04:49+00:00","og_image":[{"width":592,"height":286,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CapturePoorManSBY.png","type":"image\/png"}],"author":"Oracle Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Oracle Team","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/12cr2-pdb-refresh-as-a-poor-man-standby\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/12cr2-pdb-refresh-as-a-poor-man-standby\/"},"author":{"name":"Oracle Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"headline":"12cR2 PDB refresh as a poor-man standby?","datePublished":"2017-06-12T18:04:49+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/12cr2-pdb-refresh-as-a-poor-man-standby\/"},"wordCount":1203,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/12cr2-pdb-refresh-as-a-poor-man-standby\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CapturePoorManSBY.png","keywords":["CDB","multitenant","Oracle","Oracle 12c","PDB","Pluggable Databases","single-tenant"],"articleSection":["Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/12cr2-pdb-refresh-as-a-poor-man-standby\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/12cr2-pdb-refresh-as-a-poor-man-standby\/","url":"https:\/\/www.dbi-services.com\/blog\/12cr2-pdb-refresh-as-a-poor-man-standby\/","name":"12cR2 PDB refresh as a poor-man standby? - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/12cr2-pdb-refresh-as-a-poor-man-standby\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/12cr2-pdb-refresh-as-a-poor-man-standby\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CapturePoorManSBY.png","datePublished":"2017-06-12T18:04:49+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/12cr2-pdb-refresh-as-a-poor-man-standby\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/12cr2-pdb-refresh-as-a-poor-man-standby\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/12cr2-pdb-refresh-as-a-poor-man-standby\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CapturePoorManSBY.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CapturePoorManSBY.png","width":592,"height":286},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/12cr2-pdb-refresh-as-a-poor-man-standby\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"12cR2 PDB refresh as a poor-man standby?"}]},{"@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\/10244","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=10244"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/10244\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/10245"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=10244"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=10244"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=10244"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=10244"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}