{"id":47292,"date":"2026-10-27T11:26:39","date_gmt":"2026-10-27T10:26:39","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=47292"},"modified":"2026-10-27T11:26:41","modified_gmt":"2026-10-27T10:26:41","slug":"oracle-and-btrfs-snapshots","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/oracle-and-btrfs-snapshots\/","title":{"rendered":"Oracle and btrfs snapshots"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">In my last blog post <a href=\"https:\/\/www.dbi-services.com\/blog\/snapshots-with-virtualbox-and-btrfs\/\" data-type=\"post\" data-id=\"47071\">Snapshots with VirtualBox and btrfs<\/a> we have seen some possibilities of btrfs snapshots.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In this blog post we will see how we can use btrfs snapshots in combination with an Oracle database to clone PDBs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">My colleague Marc Wagner has shown <a href=\"https:\/\/www.dbi-services.com\/blog\/snapshot-solutions-with-oracle-standard-edition-se2\/\" data-type=\"post\" data-id=\"17130\">in his article<\/a> the possibilities and the limitations of snapshot clones of a PDB. If we use btrfs snapshots, we can bypass these limitations.<\/p>\n\n\n\n<h2 id=\"h-preparation-of-subvolumes\" class=\"wp-block-heading\">Preparation of subvolumes<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I will show, how to create a test-PDB &#8220;WEBT&#8221; from the production-PDB &#8220;WEBP&#8221;. The prerequisite is that all PDB files from WEBP are stored in their own btrfs sub-volume. If not yet done, do it now:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; gutter: false; title: ; notranslate\" title=\"\">\nroot$  btrfs subvolume list  -t \/u01\/oradata\/MNB1 |grep WEBP #if not found, continue\nSQL&gt;  alter pluggable database WEBP close immediate;\nroot$  cd  \/u01\/oradata\/MNB\nroot$  mv WEBP WEBP.bck\nroot$  btrfs subvolume create WEBP\nroot$  mv WEBP.bck\/* WEBP\/\nroot$  rmdir WEBP.bck\nSQL&gt;  alter pluggable database all open;\nSQL&gt;  alter pluggable database WEBP open;\n<\/pre><\/div>\n\n\n<h2 id=\"h-create-a-subvolume-snapshot-and-create-a-pdb-with-it\" class=\"wp-block-heading\">Create a subvolume snapshot and create a PDB with it<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">After this one-time preparation, we are ready to prepare our cloning. Unfortunately, the source-PDB (WEBP) must be read-only during the cloning. <\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; gutter: false; title: ; notranslate\" title=\"\">\nALTER SESSION SET container=WEBP;\n shutdown immediate;\n ALTER DATABASE OPEN READ ONLY;\n-- create the manifest file\n EXEC dbms_pdb.describe(pdb_descr_file=&gt;&#039;\/u00\/app\/oracle\/admin\/MNB1\/WEBP.xml&#039;);\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">As root (or as oracle with sudo-rights) we create the consistent subvolume snapshot of the btrfs filesystem:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; gutter: false; title: ; notranslate\" title=\"\">\n cd \/u01\/oradata\/MNB1\n btrfs subvolume snapshot WEBP WEBT\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Readonly for WEBP is no longer required, so we can re-open it read-write. Then, we can integrate our new WEBT test-database. <\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; gutter: false; title: ; notranslate\" title=\"\">\nALTER SESSION SET container=WEBP;\nshutdown immediate;\nALTER DATABASE OPEN;\n \nALTER SESSION SET container=cdb$root;\nCREATE pluggable DATABASE WEBT \n  AS clone USING &#039;\/u00\/app\/oracle\/admin\/MNB1\/WEBP.xml&#039; \n  source_file_name_convert=(&#039;WEBP&#039;,&#039;WEBT&#039;) \n  nocopy tempfile reuse standbys=NONE;\n \nALTER SESSION SET container=webt;\nALTER DATABASE OPEN;\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Hint: If we have forgotten to do the snapshot in readonly mode, then we get<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ORA-65368: unable to open the pluggable database due to errors during recovery<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">From Oracle&#8217;s point of view, we have now a full-clone of the pluggable database, not a sparse clone. And initially without additional space usage. The space usage only increases if we change blocks (in the original or the clone).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It is time to adapt your cloned WEBT. Change passwords, disable jobs, change dblinks, etc.<\/p>\n\n\n\n<h2 id=\"h-recurring-cloning\" class=\"wp-block-heading\">Recurring cloning<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If you want to update WEBT, the workflow is similar. First, delete WEBT<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; gutter: false; title: ; notranslate\" title=\"\">\nSQL&gt;  alter pluggable database webt close abort;\nSQL&gt;  drop pluggable database webt including datafiles;\nroot$   btrfs subvolume delete \/u01\/oradata\/MNB1\/WEBT\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Then you can continue as above.<\/p>\n\n\n\n<h2 id=\"h-cloning-without-downtime\" class=\"wp-block-heading\">Cloning without downtime?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">But can we really not do it without downtime of the production (put to readonly, put back to readwrite)? In the summary of <a href=\"https:\/\/mikedietrichde.com\/2019\/10\/28\/dbms_pdb-describe-something-to-be-aware-of\/\">Mike Dietrich&#8217;s blog about dbms_pdb.describe<\/a> we can see that the package can now be called in read-write, but that is only intended for compatibility check, not for plugin.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If I create the subvolume snapshot before the manifest file: Is it not possible to recover the files up to the point-in-time of the manifest? Let&#8217;s try&#8230;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Because the source PDB is open, I want to be careful and I will enable the good old backup mode first before create the subvolume snapshot.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; gutter: false; title: ; notranslate\" title=\"\">\nSQL&gt; alter database begin backup;\n<\/pre><\/div>\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; gutter: false; title: ; notranslate\" title=\"\">\ncd \/u01\/oradata\/MNB1\nbtrfs subvolume snapshot WEBP WEBT\n<\/pre><\/div>\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; gutter: false; title: ; notranslate\" title=\"\">\nSQL&gt; alter database end backup;\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">I think it might work if the snapshot is older than the manifest file. Then hopefully we can recover the files to the time of the manifest.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; gutter: false; title: ; notranslate\" title=\"\">\nALTER SESSION SET container=WEBP;\n-- now we will NOT shutdown and open read-write our production!\nEXEC dbms_pdb.describe(pdb_descr_file=&gt;&#039;\/u00\/app\/oracle\/admin\/MNB1\/WEBP.xml&#039;);\nALTER SESSION SET container=cdb$root;\nCREATE pluggable DATABASE WEBT \n    AS clone USING &#039;\/u00\/app\/oracle\/admin\/MNB1\/WEBP.xml&#039; \n    source_file_name_convert=(&#039;WEBP&#039;,&#039;WEBT&#039;) \n    nocopy tempfile reuse standbys=NONE;\nalter pluggable database WEBT open;\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">But unfortunately, it does not work \ud83d\ude41<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE pluggable DATABASE WEBT AS clone USING '\/u00\/app\/oracle\/admin\/MNB1\/WEBP.xml' source_file_name_convert=('WEBP','WEBT') nocopy tempfile reuse standbys=NONE\n*\nERROR at line 1:\nORA-65368: unable to open the pluggable database due to errors during recovery\nORA-65089: pluggable database is not clean\nORA-01113: file 91 needs media recovery\nORA-01110: data file 91: '\/u01\/oradata\/MNB1\/WEBT\/users01.dbf'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">But wait. Let&#8217;s check what happens. In the alertlog:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ORA-65368 signalled during: CREATE pluggable DATABASE WEBT AS clone USING '\/u00\/app\/oracle\/admin\/MNB1\/WEBP.xml' source_file_name_convert=('WEBP','WEBT') nocopy tempfile reuse standbys=NONE...\n2026-10-02T19:31:58.630109+02:00\nErrors in file \/u00\/app\/oracle\/diag\/rdbms\/mnb1a\/MNB1\/trace\/MNB1_mz00_1856209.trc:\nORA-01110: data file 3: '\/u01\/oradata\/MNB1\/sysaux01.dbf'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">And I will check in sqlplus if it created something:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SQL&gt; show pdbs\n\n    CON_ID CON_NAME                       OPEN MODE  RESTRICTED\n---------- ------------------------------ ---------- ----------\n         2 PDB$SEED                       READ ONLY  NO\n         3 WEBP                           READ WRITE NO\n         4 WEBT                           MOUNTED\nSQL&gt; select name from v$datafile where name like '%WEBT%';\n\nNAME\n--------------------------------------------\n\/u01\/oradata\/MNB1\/WEBT\/system01.dbf\n\/u01\/oradata\/MNB1\/WEBT\/sysaux01.dbf\n\/u01\/oradata\/MNB1\/WEBT\/undotbs01.dbf\n\/u01\/oradata\/MNB1\/WEBT\/users01.dbf\n\nSQL&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">And we see, it created the pdb and the datafiles are visible. But it complained: &#8220;file 91 needs media recovery&#8221;. Recovery? let&#8217;s try with rman:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; gutter: false; title: ; notranslate\" title=\"\">\nRMAN&gt; recover database;\n<\/pre><\/div>\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; recover database;\n\nStarting recover at 02-OCT-26\nusing target database control file instead of recovery catalog\nallocated channel: ORA_DISK_1\nchannel ORA_DISK_1: SID=263 device type=DISK\ndatafile 89 not processed because file is offline\ndatafile 90 not processed because file is offline\ndatafile 91 not processed because file is offline\n...<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Let&#8217;s try to recover the offline files <\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; gutter: false; title: ; notranslate\" title=\"\">\nRMAN&gt; recover datafile 89,90,91;\n<\/pre><\/div>\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; recover datafile 89,90,91;\n\nStarting recover at 02-OCT-26\nusing channel ORA_DISK_1\n\nstarting media recovery\nmedia recovery complete, elapsed time: 00:00:00\n\nFinished recover at 02-OCT-26<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Now it looks better. I will now try to open the PDB.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; gutter: false; title: ; notranslate\" title=\"\">\nSQL&gt;  alter pluggable database webt open;\n<\/pre><\/div>\n\n\n<pre class=\"wp-block-code\"><code>SQL&gt;  alter pluggable database webt open;\n alter pluggable database webt open\n*\nERROR at line 1:\nORA-65368: unable to open the pluggable database due to errors during recovery\nORA-65089: pluggable database is not clean\nORA-01113: file 88 needs media recovery\nORA-01110: data file 88: '\/u01\/oradata\/MNB1\/WEBT\/system01.dbf'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Why datafile 88? It complained 89-91&#8230; Nevermind, we will try to recover it and to open the PDB again.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; gutter: false; title: ; notranslate\" title=\"\">\nSQL&gt; recover datafile 88;\n<\/pre><\/div>\n\n\n<pre class=\"wp-block-code\"><code>SQL&gt; recover datafile 88;\nMedia recovery complete.\nSQL&gt; alter pluggable database webt open;\n\nPluggable database altered.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">And yes! it worked \ud83d\ude42<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If not yet done, do not forget to disable the backup mode.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; gutter: false; title: ; notranslate\" title=\"\">\nSQL&gt; alter database end backup;\nalter database end backup\n*\nERROR at line 1:\nORA-01260: warning: END BACKUP succeeded but some files found not to be in backup mode\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">That is not a problem, It only affects our cloned files.<\/p>\n\n\n\n<h2 id=\"h-scripting\" class=\"wp-block-heading\">Scripting<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">To do the cloning automated, create some sudo-rules and create a cloning-script. <\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n# visudo -f \/etc\/sudoers.d\/oracle-btrfs\noracle ALL=(root) NOPASSWD: \/sbin\/btrfs subvolume delete \/u01\/oradata\/MNB1\/WEBT\noracle ALL=(root) NOPASSWD: \/sbin\/btrfs subvolume snapshot \/u01\/oradata\/MNB1\/WEBP \/u01\/oradata\/MNB1\/WEBT\n<\/pre><\/div>\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n# set the environment for the SID;\n# I will use our dbi-services dmk environment script\n. dmk.sh MNB1 \n\n# remove the old clone \necho &quot;alter pluggable database webt close abort;\n      drop pluggable database webt including datafiles;\n      alter database begin backup;&quot; \\\n |sqlplus -S -L \/ as sysdba\nsudo  btrfs subvolume delete \/u01\/oradata\/MNB1\/WEBT\n\n# create the new clone\nsudo  btrfs subvolume snapshot \/u01\/oradata\/MNB1\/WEBP \/u01\/oradata\/MNB1\/WEBT\necho &quot;alter database end backup;\n      ALTER SESSION SET container=WEBP;\n      EXEC dbms_pdb.describe(pdb_descr_file=&gt;&#039;\/u00\/app\/oracle\/admin\/MNB1\/WEBP.xml&#039;);\n      ALTER SESSION SET container=cdb\\$root;\n      CREATE pluggable DATABASE WEBT AS clone \n        USING &#039;\/u00\/app\/oracle\/admin\/MNB1\/WEBP.xml&#039; \n        source_file_name_convert=(&#039;WEBP&#039;,&#039;WEBT&#039;) \n        nocopy tempfile reuse standbys=NONE;\n&quot; |sqlplus -S -L \/ as sysdba\necho &quot;select &#039;recover datafile &#039;||file#||&#039;;&#039; \n      from v\\$datafile where name like &#039;%\/WEBT\/%&#039;;&quot; \\\n | sqlplus -S -L \/ as sysdba | grep recover |rman target \/\necho &quot;alter pluggable database webt open;\n      show pdbs&quot;  |sqlplus -S -L \/ as sysdba\n\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">And here is what I want to see \ud83d\ude42<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    CON_ID CON_NAME                       OPEN MODE  RESTRICTED\n---------- ------------------------------ ---------- ----------\n         2 PDB$SEED                       READ ONLY  NO\n         3 WEBP                           READ WRITE NO\n         5 WEBT                           READ WRITE NO<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In my last blog post Snapshots with VirtualBox and btrfs we have seen some possibilities of btrfs snapshots. In this blog post we will see how we can use btrfs snapshots in combination with an Oracle database to clone PDBs. My colleague Marc Wagner has shown in his article the possibilities and the limitations of [&hellip;]<\/p>\n","protected":false},"author":123,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229,198,1320,199,59],"tags":[2122,1938,96,237],"type_dbi":[],"class_list":["post-47292","post","type-post","status-publish","format-standard","hentry","category-database-administration-monitoring","category-database-management","category-devops","category-hardware-storage","category-oracle","tag-btrfs","tag-cloning","tag-oracle","tag-snapshot"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.7 (Yoast SEO v28.7) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Oracle and btrfs snapshots - dbi Blog<\/title>\n<meta name=\"description\" content=\"how to create a full clone of a pluggable database without to allocate the whole storage by using BTRFS snapshots\" \/>\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\/oracle-and-btrfs-snapshots\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Oracle and btrfs snapshots\" \/>\n<meta property=\"og:description\" content=\"how to create a full clone of a pluggable database without to allocate the whole storage by using BTRFS snapshots\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/oracle-and-btrfs-snapshots\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-27T10:26:39+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-27T10:26:41+00:00\" \/>\n<meta name=\"author\" content=\"Martin Bracher\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Martin Bracher\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 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\\\/oracle-and-btrfs-snapshots\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/oracle-and-btrfs-snapshots\\\/\"},\"author\":{\"name\":\"Martin Bracher\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/2cbe1e2ea3cbf519c8ee3493042de8c9\"},\"headline\":\"Oracle and btrfs snapshots\",\"datePublished\":\"2026-10-27T10:26:39+00:00\",\"dateModified\":\"2026-10-27T10:26:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/oracle-and-btrfs-snapshots\\\/\"},\"wordCount\":551,\"commentCount\":0,\"keywords\":[\"Btrfs\",\"cloning\",\"Oracle\",\"Snapshot\"],\"articleSection\":[\"Database Administration &amp; Monitoring\",\"Database management\",\"DevOps\",\"Hardware &amp; Storage\",\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/oracle-and-btrfs-snapshots\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/oracle-and-btrfs-snapshots\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/oracle-and-btrfs-snapshots\\\/\",\"name\":\"Oracle and btrfs snapshots - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"datePublished\":\"2026-10-27T10:26:39+00:00\",\"dateModified\":\"2026-10-27T10:26:41+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/2cbe1e2ea3cbf519c8ee3493042de8c9\"},\"description\":\"how to create a full clone of a pluggable database without to allocate the whole storage by using BTRFS snapshots\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/oracle-and-btrfs-snapshots\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/oracle-and-btrfs-snapshots\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/oracle-and-btrfs-snapshots\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Oracle and btrfs snapshots\"}]},{\"@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\\\/2cbe1e2ea3cbf519c8ee3493042de8c9\",\"name\":\"Martin Bracher\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/864a93d77bcd4cd44bab880a88f25fb5173ffbfac8e6e8775f0b4e056a4fbb56?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/864a93d77bcd4cd44bab880a88f25fb5173ffbfac8e6e8775f0b4e056a4fbb56?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/864a93d77bcd4cd44bab880a88f25fb5173ffbfac8e6e8775f0b4e056a4fbb56?s=96&d=mm&r=g\",\"caption\":\"Martin Bracher\"},\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/martinbracher\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Oracle and btrfs snapshots - dbi Blog","description":"how to create a full clone of a pluggable database without to allocate the whole storage by using BTRFS snapshots","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\/oracle-and-btrfs-snapshots\/","og_locale":"en_US","og_type":"article","og_title":"Oracle and btrfs snapshots","og_description":"how to create a full clone of a pluggable database without to allocate the whole storage by using BTRFS snapshots","og_url":"https:\/\/www.dbi-services.com\/blog\/oracle-and-btrfs-snapshots\/","og_site_name":"dbi Blog","article_published_time":"2026-10-27T10:26:39+00:00","article_modified_time":"2026-10-27T10:26:41+00:00","author":"Martin Bracher","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Martin Bracher","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-and-btrfs-snapshots\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-and-btrfs-snapshots\/"},"author":{"name":"Martin Bracher","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/2cbe1e2ea3cbf519c8ee3493042de8c9"},"headline":"Oracle and btrfs snapshots","datePublished":"2026-10-27T10:26:39+00:00","dateModified":"2026-10-27T10:26:41+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-and-btrfs-snapshots\/"},"wordCount":551,"commentCount":0,"keywords":["Btrfs","cloning","Oracle","Snapshot"],"articleSection":["Database Administration &amp; Monitoring","Database management","DevOps","Hardware &amp; Storage","Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/oracle-and-btrfs-snapshots\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-and-btrfs-snapshots\/","url":"https:\/\/www.dbi-services.com\/blog\/oracle-and-btrfs-snapshots\/","name":"Oracle and btrfs snapshots - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2026-10-27T10:26:39+00:00","dateModified":"2026-10-27T10:26:41+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/2cbe1e2ea3cbf519c8ee3493042de8c9"},"description":"how to create a full clone of a pluggable database without to allocate the whole storage by using BTRFS snapshots","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-and-btrfs-snapshots\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/oracle-and-btrfs-snapshots\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-and-btrfs-snapshots\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Oracle and btrfs snapshots"}]},{"@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\/2cbe1e2ea3cbf519c8ee3493042de8c9","name":"Martin Bracher","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/864a93d77bcd4cd44bab880a88f25fb5173ffbfac8e6e8775f0b4e056a4fbb56?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/864a93d77bcd4cd44bab880a88f25fb5173ffbfac8e6e8775f0b4e056a4fbb56?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/864a93d77bcd4cd44bab880a88f25fb5173ffbfac8e6e8775f0b4e056a4fbb56?s=96&d=mm&r=g","caption":"Martin Bracher"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/martinbracher\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/47292","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\/123"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=47292"}],"version-history":[{"count":25,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/47292\/revisions"}],"predecessor-version":[{"id":48179,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/47292\/revisions\/48179"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=47292"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=47292"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=47292"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=47292"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}