
{"id":7642,"date":"2020-06-24T08:55:08","date_gmt":"2020-06-24T08:55:08","guid":{"rendered":"https:\/\/rax-stg-wp-aws.com\/blogs\/use-the-oracle-database-refreshable-clone-feature\/"},"modified":"2026-11-03T19:28:47","modified_gmt":"2026-11-03T19:28:47","slug":"use-the-oracle-database-refreshable-clone-feature","status":"publish","type":"blogs","link":"https:\/\/www.rackspace.com\/de\/blogs\/use-the-oracle-database-refreshable-clone-feature\/","title":{"rendered":"Use the Oracle Database refreshable clone feature"},"content":{"rendered":"<p><strong>Introduction<\/strong><br \/>\nThe Oracle\u00ae Database 18c for Enterprise Edition on Cloud bundles&nbsp;engineered systems (Exadata) with many new and improved features. Release 18c&nbsp;improves the refreshable clone feature from the 12c release 2 by adding a quick&nbsp;switchover or failover facility. You can also create a snapshot carousel to clone&nbsp;or replicate pluggable databases (PDBs) in a multitenant environment.<\/p>\n<p>For production environments, use a snapshot carousel with the refreshable clone&nbsp;PDB feature to make database administration (DBA) activities easy, such as&nbsp;safeguarding against an unforeseen outage or troubleshooting logical corruption&nbsp;issues. This post describes the practical use of refreshable clones with manual&nbsp;and automatic switchover cases. You can use it with the snapshot carousel feature&nbsp;to identify and handle the following database health problems:<\/p>\n<ul>\n<li>&nbsp;Production database unavailable<\/li>\n<li>&nbsp;Performance issues<\/li>\n<li>&nbsp;Logical corruption in the Oracle database<\/li>\n<\/ul>\n<p><strong>Cloning and snapshot questions<\/strong><\/p>\n<p>This section provides answers to some basic questions about clone and&nbsp;snapshot carousels.<\/p>\n<p><strong>What is cloning?<\/strong><br \/>\nWhen you clone an instance, you take a backup of it and restore the backup&nbsp;elsewhere. Typically, you restore it on another machine with the same directory&nbsp;structure. You can also restore it on the same machine by changing the Oracle&nbsp;System ID (SID) and the database name. You can use a clone of a production&nbsp;instance on a test machine to try out what-if scenarios, such as changing the&nbsp;<em>`init.ora` <\/em>parameter or altering your code, and so on.<\/p>\n<p><strong>How does PDB cloning work?<\/strong><\/p>\n<p>You can use PDB cloning to clone a PDB in a multitenant environment. For local&nbsp;or remote PDBs, use a refreshable clone or snapshot carousel to create PDB clones&nbsp;in a local container database.<\/p>\n<ul>\n<li>For remote PDB cloning, consider the following:<\/li>\n<li>To use a refreshable clone, you need to have a database link for the PDB and&nbsp; disable the cloned database.<\/li>\n<li>To use a snapshot carousel, you need to create a typical PDB clone by using snapshot. Then, use the database links or unplug and plug into another&nbsp; container database. You can also create a refreshable clone from a cloned PDB.<\/li>\n<\/ul>\n<p><strong>What is a PDB snapshot?&nbsp;<\/strong><\/p>\n<p>A PDB snapshot is a point-in-time copy of a PDB. Create snapshots manually by&nbsp;using the <em>`SNAPSHOT`<\/em> clause of <em>`CREATE PLUGGABLE DATABASE`<\/em>(or `<em>ALTER PLUGGABLE DATABASE<\/em>`) command, or automatically by using the <em>`EVERY`<\/em><br \/>\ninterval clause.<\/p>\n<p><strong>What is a PDB snapshot carousel?<\/strong><\/p>\n<p>A PDB snapshot carousel maintains a library of recent PDB snapshots that you can&nbsp;use to perform a point-in-time recovery and to clone a PDB.<\/p>\n<p><strong>Refreshable clone PDB<\/strong><\/p>\n<p>You can clone the PDB by using the refreshable clone feature, which protects&nbsp;the database from data corruption and disasters with minimal data loss, depending&nbsp;on the refresh interval and redo generation rate. You can use the refreshable&nbsp;clone database as a replica on which to resume certain low-load, non-critical applications. You can set the refreshable clone database to update automatically&nbsp;at set intervals or manually by using the redo log application.<\/p>\n<p>Figure 1 shows the architecture of refreshable clone processing. It shows the&nbsp;main components and processes and illustrates the relationship between the&nbsp;production database and the refreshable clone database. This diagram shows cloning&nbsp;the pluggable database <strong>PDB1<\/strong>&nbsp;of container database <strong>CDB1<\/strong>&nbsp;to another&nbsp;container database <strong>CDB2<\/strong>. This action results in a hot-cloned version of&nbsp;<strong>PDB1<\/strong>&nbsp;named <strong>PDB1\\_REF\\_CLONE<\/strong>.<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/blog_article_images\/26460-body-Picture1_11.png\" alt=\"pdb pic 1\" \/><\/p>\n<p>FIGURE 1<\/p>\n<p><strong>Refresh mode options<\/strong><\/p>\n<p>You can change refresh modes by setting up an environment with the following modes:<\/p>\n<p>&#8211; <em>MANUAL<\/em><\/p>\n<p>&#8211; <em>AUTOMATIC<\/em>&nbsp;(using <em>EVERY<\/em>&nbsp;<em>n<\/em>&nbsp;<em>MINUTES<\/em>)<\/p>\n<p>&#8211; <em>NONE<\/em><br \/>\n&nbsp;<\/p>\n<p><strong>Create and work with a refreshable clone<\/strong><\/p>\n<p>Use the following statement to clone the source PDB and configure the clone to&nbsp;be refreshable. Refreshing the clone PDB updates it with redo data accumulated&nbsp;since the last redo log applied.<\/p>\n<p><em>&nbsp; &nbsp; CREATE PLUGGABLE DATABASE &#8230; REFRESH MODE [ MANUAL \/ AUTOMATIC (using EVERY n MINUTES) \/ NONE ] ;<\/em><\/p>\n<p>Use the following statement to change the current mode of a refreshed or&nbsp;disabled refreshable clone and convert it to a fully functional PDB:<\/p>\n<p><em>&nbsp; &nbsp; ALTER PLUGGABLE DATABASE &#8230; REFRESH MODE [ MANUAL \/ AUTOMATIC (using EVERY n MINUTES) \/ NONE ] ;<\/em><\/p>\n<p>If you don&#8217;t clone PDBs frequently to avoid performance degradation, the clone&nbsp;data gets stale. A refreshable clone PDB solves this problem. When a refreshable&nbsp;clone gets stale, you can quickly refresh it with a recent redo.<\/p>\n<p>Typically, you maintain a <em>master<\/em>&nbsp;refreshable clone of a production PDB and&nbsp;then take snapshot clones of the master for development and testing.<\/p>\n<p>Use the following statement to reverse the roles for source and clone PDBs:<\/p>\n<p><em>&nbsp; &nbsp; ALTER PLUGGABLE DATABASE &#8230; SWITCHOVER;<\/em><\/p>\n<p>You can simplify this switchover process, as shown in the following figures:&nbsp;<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/blog_article_images\/26460-body-Picture2_5.png\" alt=\"pdb pic 2\" \/><\/p>\n<p>&nbsp;Figure 2<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/blog_article_images\/26460-body-Picture3_2.png\" alt=\"pdb pic 3\" \/><\/p>\n<p>Figure 3<\/p>\n<p>This switchover capability is useful in the following situations.<\/p>\n<p><strong>Planned switchover of a refreshable clone<\/strong><\/p>\n<p>In Figure 3, <strong>CDB1<\/strong>, which hosts the source PDB, <strong>PDB1<\/strong>, might experience&nbsp;significantly more overhead than <strong>CDB2<\/strong>, which hosts the clone PDB,&nbsp;<strong>PDB1\\_REF\\_CLONE<\/strong>. To achieve better load balancing, you can reverse the roles&nbsp;of PDBs by converting the clone to the new source PDB and the source PDB into<br \/>\nthe new clone.<\/p>\n<p>Execute this role transition by using the following command on the current&nbsp;primary database:<\/p>\n<p><em>&nbsp; &nbsp; ALTER PLUGGABLE DATABASE PDB1 REFRESH MODE EVERY 2 MINUTES FROM PDB1_REF_CLONE@DBLINK2CDB2 SWITCHOVER;<\/em><\/p>\n<p>After this command completes, <strong>PDB1\\_REF\\_CLONE<\/strong>&nbsp;in <strong>CDB2<\/strong>&nbsp;assumes the&nbsp;primary role. <strong>CDB1<\/strong>&nbsp;now maintains the replica. All connections to production&nbsp;connect to the new primary, which is now <strong>CDB2<\/strong>. You lose no more than two&nbsp;minutes of transactions, assuming that the refreshes kept up with the redo&nbsp;<br \/>\ngeneration rate from the source.<\/p>\n<p><strong>Unplanned switchover of a refreshable clone<\/strong><\/p>\n<p>If the source PDB has an unplanned failure, you can switch the clone PDB to the&nbsp;new source PDB and resume normal operations.<\/p>\n<p>Be sure to test your environment by using realistic transaction volumes to ensure&nbsp;that the process of refreshing the replica can keep up with the redo generation&nbsp;rate.<\/p>\n<p><strong>How do refreshable clones differ from Data Guard?<\/strong><\/p>\n<p>Oracle introduced the high availability feature with Data Guard and standby<br \/>\ndatabases. The following elements distinguish refreshable clones from Data Guard:<\/p>\n<ul>\n<li>Data Guard provides high availability to protect the database from disasters and data corruption in real-time providing switchover and failover to standby databases. You can also use a Data Guard standby database for load sharing by using the refreshable clone PDB feature. Data Guard works at a CDB level, and you can&#8217;t have a switchover or failover at the PDB level.<\/li>\n<li>Because of the lag between the initiation and completion of the switchover, Data Guard is more effective than just maintaining a refreshable clone. During&nbsp;this lag, transactions to the primary database might not be applied to or synced with the read-only database before you switch the roles. As a result, you might lose those transactions.<\/li>\n<li>Data Guard has a maximum limit of 30 standby databases, but you can have as many refreshable clones as you need.<\/li>\n<\/ul>\n<p>To strengthen the refreshable clone PDB feature for high availability and have&nbsp;almost no data loss, set the `<em>REMOTE_RECOVERY_FILE_DEST<\/em>` parameter to archive&nbsp;the source PDB&#8217;s log location.&nbsp;<strong>Conclusion<\/strong><\/p>\n<p>You should not consider the refreshable clone PDB feature as a replacement for&nbsp;Data Guard from the perspective of high availability. However, you can use a&nbsp;refreshable clone to maintain a replica database on another server.<\/p>\n<p>This post described how to use refreshable PDBs as replicas so that you can&nbsp;resume certain low-load, non-critical application operations, whether the&nbsp;switchover is a planned or unplanned event. Keep in mind that you should consider&nbsp;the switchovers from the point of view of Recovery Time Objectives (RTOs, time<br \/>\nto resume operations) and Recovery Point Objectives (RPOs, such as achieving<br \/>\nminimal data loss).<\/p>\n<p>Part Two of the series&nbsp;demonstrates the refreshable clone feature.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Use the Oracle Database refreshable clone feature<\/p>\n","protected":false},"author":2,"featured_media":7644,"menu_order":0,"comment_status":"open","ping_status":"open","template":"","format":"standard","meta":{"content-type":"","nid":"26460","content_type":"blog","created_by":"10130","authored_on":"2024-01-08T09:55:08+00:00","field_article_industries":"","tag_category":"Technical","field_blog_author_text":"by Tejashkumar Patel, Oracle Database Administrator, Rackspace Technology","seo_description":"Migrate data from an mdf file to an ndf file within the same file group. Manage large databases and mitigate IOPS issues.\r\n","field_featured_image":"","insights_image":"\/wp-content\/uploads\/2026\/blog_technical_images\/26460-insights_image-oracle-technical-blog-1-insights.jpg","field_partners":"","rxt_platforms":"Oracle","product":"","publisheddate":"2020-06-24T08:55:08","rxt_solutions":"Databases","opengraph_tag":"","x_tag":"","teaser_flag":"Technical Blog","seo_titile":"Oracle Database clone feature Pt.1 | Rackspace Technology","field_topics":"","field_slug":"use-the-oracle-database-refreshable-clone-feature","footnotes":""},"categories":[178],"tags":[204],"class_list":["post-7642","blogs","type-blogs","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-technical"],"_links":{"self":[{"href":"https:\/\/www.rackspace.com\/de\/wp-json\/wp\/v2\/blogs\/7642","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.rackspace.com\/de\/wp-json\/wp\/v2\/blogs"}],"about":[{"href":"https:\/\/www.rackspace.com\/de\/wp-json\/wp\/v2\/types\/blogs"}],"author":[{"embeddable":true,"href":"https:\/\/www.rackspace.com\/de\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rackspace.com\/de\/wp-json\/wp\/v2\/comments?post=7642"}],"version-history":[{"count":3,"href":"https:\/\/www.rackspace.com\/de\/wp-json\/wp\/v2\/blogs\/7642\/revisions"}],"predecessor-version":[{"id":9580,"href":"https:\/\/www.rackspace.com\/de\/wp-json\/wp\/v2\/blogs\/7642\/revisions\/9580"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.rackspace.com\/de\/wp-json\/wp\/v2\/media\/7644"}],"wp:attachment":[{"href":"https:\/\/www.rackspace.com\/de\/wp-json\/wp\/v2\/media?parent=7642"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rackspace.com\/de\/wp-json\/wp\/v2\/categories?post=7642"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rackspace.com\/de\/wp-json\/wp\/v2\/tags?post=7642"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}