{"id":7525,"date":"2016-04-09T18:57:23","date_gmt":"2016-04-09T16:57:23","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/single-tenant-vs-non-cdb-no-reason-to-refuse-it\/"},"modified":"2016-04-09T18:57:23","modified_gmt":"2016-04-09T16:57:23","slug":"single-tenant-vs-non-cdb-no-reason-to-refuse-it","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/single-tenant-vs-non-cdb-no-reason-to-refuse-it\/","title":{"rendered":"Single-Tenant vs. non-CDB: no reason to refuse it"},"content":{"rendered":"<h2>By Franck Pachot<\/h2>\n<p>.<br \/>\nWhen non-CDB has been declared deprecated, I was a bit upset because multitenant with a lone PDB just looks like an overhead of 3 containers instead of one. But with experience I changed my mind. First because the multitenant architecture brings some features that are available even without the option. And second, because this overhead is not a big problem. Let&#8217;s put numbers on that last point.<br \/>\n<!--more--><br \/>\nA CDB has 3 containers: CDB$ROOT, PDB$SEED, and your pluggable database. Each one has SYSTEM and SYSAUX tablespaces. Even if the pluggable database system tablespaces are smaller thanks to metadata links, it&#8217;s still more datafiles and more space. There are also more processes.<\/p>\n<p>I&#8217;ve created a non-CDB and a CDB with same configuration and same virtual machines. Oracle Cloud Services is very nice for that.<\/p>\n<p>Here is the storage after the database creation.<br \/>\nFirst on the Multitenant one:<\/p>\n<pre><code>\n[oracle@vicdb ~]$ df -h\nFilesystem      Size  Used Avail Use% Mounted on\n\/dev\/xvdb3       25G   17G  7.7G  68% \/\ntmpfs           7.3G     0  7.3G   0% \/dev\/shm\n\/dev\/xvdb1      477M  148M  300M  34% \/boot\n[oracle@vicdb ~]$\n&nbsp;\n[oracle@vinon ~]$ du -xh \/u01\/app\/oracle\/oradata | sort -h\n9.6M    \/u01\/app\/oracle\/oradata\/NON\/controlfile\n151M    \/u01\/app\/oracle\/oradata\/NON\/onlinelog\n1.6G    \/u01\/app\/oracle\/oradata\/NON\/datafile\n1.8G    \/u01\/app\/oracle\/oradata\n1.8G    \/u01\/app\/oracle\/oradata\/NON\n<\/code><\/pre>\n<p>And in the non-CDB one:<\/p>\n<pre><code>\n[oracle@vinon ~]$ df -h\nFilesystem      Size  Used Avail Use% Mounted on\n\/dev\/xvdb3       25G   15G  9.1G  62% \/\ntmpfs           7.3G     0  7.3G   0% \/dev\/shm\n\/dev\/xvdb1      477M  148M  300M  34% \/boot\n&nbsp;\n[oracle@vicdb ~]$ du -xh \/u01\/app\/oracle\/oradata | sort -h\n18M     \/u01\/app\/oracle\/oradata\/CDB\/controlfile\n151M    \/u01\/app\/oracle\/oradata\/CDB\/onlinelog\n741M    \/u01\/app\/oracle\/oradata\/CDB\/2F81FDFC05495272E053CE46C40ABDCF\n741M    \/u01\/app\/oracle\/oradata\/CDB\/2F81FDFC05495272E053CE46C40ABDCF\/datafile\n2.4G    \/u01\/app\/oracle\/oradata\/CDB\/datafile\n3.3G    \/u01\/app\/oracle\/oradata\n3.3G    \/u01\/app\/oracle\/oradata\/CDB\n<\/code><\/pre>\n<p>The CDB system needs additional 1.4GB for the additional tablespaces.<br \/>\nIf you think about it, the overhead is minimal when you compare it with the size of your database.<\/p>\n<p>That&#8217;s for storage. Let&#8217;s have a look at memory.<\/p>\n<p>Here is the Multitenant system<\/p>\n<pre><code>\ntop - 10:20:00 up  2:26,  2 users,  load average: 0.00, 0.04, 0.13\nTasks: 164 total,   1 running, 163 sleeping,   0 stopped,   0 zombie\nCpu(s):  0.1%us,  0.0%sy,  0.0%ni, 99.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st\nMem:  15138468k total, 14783080k used,   355388k free,   125580k buffers\nSwap:  4194300k total,        0k used,  4194300k free, 13845468k cached\n&nbsp;\n  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND\n20854 oracle    -2   0 4790m  19m  17m S  2.4  0.1   0:19.75 ora_vktm_cdb\n20890 oracle    20   0 4810m 129m 112m S  0.1  0.9   0:01.70 ora_mmon_cdb\n20870 oracle    20   0 4793m  25m  21m S  0.1  0.2   0:00.71 ora_dia0_cdb\n20892 oracle    20   0 4791m  40m  38m S  0.1  0.3   0:00.69 ora_mmnl_cdb\n21306 oracle    20   0 4791m  26m  24m S  0.0  0.2   0:00.03 ora_j000_cdb\n20852 oracle    20   0 4790m  19m  17m S  0.0  0.1   0:00.20 ora_psp0_cdb\n20876 oracle    20   0 4791m  51m  48m S  0.0  0.3   0:00.23 ora_ckpt_cdb\n20957 oracle    20   0 4801m  69m  57m S  0.0  0.5   0:00.49 ora_cjq0_cdb\n   12 root      RT   0     0    0    0 S  0.0  0.0   0:00.05 watchdog\/1\n20866 oracle    20   0 4793m  44m  40m S  0.0  0.3   0:00.27 ora_dbrm_cdb\n20872 oracle    20   0 4800m  76m  67m S  0.0  0.5   0:00.21 ora_dbw0_cdb\n20911 oracle    20   0 4790m  19m  17m S  0.0  0.1   0:00.04 ora_tt00_cdb\n<\/code><\/pre>\n<p>and the CDB one:<\/p>\n<pre><code>\ntop - 10:21:04 up  2:10,  2 users,  load average: 0.00, 0.01, 0.10\nTasks: 154 total,   1 running, 153 sleeping,   0 stopped,   0 zombie\nCpu(s):  1.8%us,  0.6%sy,  0.2%ni, 96.5%id,  0.6%wa,  0.0%hi,  0.0%si,  0.3%st\nMem:  15138468k total, 12102812k used,  3035656k free,   167644k buffers\nSwap:  4194300k total,        0k used,  4194300k free, 11260644k cached\n&nbsp;\n  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND\n21539 oracle    -2   0 4790m  19m  17m S  2.0  0.1   0:32.69 ora_vktm_non\n22095 oracle    20   0 15088 1164  856 R  2.0  0.0   0:00.01 top\n    1 root      20   0 19408 1540 1232 S  0.0  0.0   0:00.69 init\n    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd\n    3 root      20   0     0    0    0 S  0.0  0.0   0:00.05 ksoftirqd\/0\n    5 root       0 -20     0    0    0 S  0.0  0.0   0:00.00 kworker\/0:0H\n    6 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kworker\/u:0\n    7 root       0 -20     0    0    0 S  0.0  0.0   0:00.00 kworker\/u:0H\n    8 root      RT   0     0    0    0 S  0.0  0.0   0:00.25 migration\/0\n    9 root      20   0     0    0    0 S  0.0  0.0   0:00.00 rcu_bh\n   10 root      20   0     0    0    0 S  0.0  0.0   0:01.02 rcu_sched\n<\/code><\/pre>\n<p>With same SGA sizing the memory footprint is the similar. And you don&#8217;t need to setup a larger SGA for single-tenant: buffer cache is the same (depends on your data), library cache is the same (depends on your code), dictionary cache may be a bit larger but it&#8217;s still small. Basically it run exactly the same except that objects have a container id (which is only one byte in 12.1).<\/p>\n<p>I think it&#8217;s enough to clear out the myth that single-tenant has a big overhead over non-CDB. <\/p>\n<p>For sure, it&#8217;s a bit strange to have to store a PDB$SEED, which is used only to create new pluggable databases, when we cannot create additional pluggable databases. In single-tenant, you will probably have one CDB with your own seed in read-only, and you can remote clone from it. And it&#8217;s right that multitenant architecture has been implemented for the multitenant option. But there is no reason to refuse it. With minimal overhead, you can benefit from lot of features that are possible with the dictionary separation. Let&#8217;s take a single example: in Standard Edition you can move a whole database physically by unplug\/plug or remote clone. When you realize that transportable tablespaces have never been available in Standard Edition can see unplug\/plug as a great enhancement for Standard Edition. Easier than duplicate, and cross-version, cross-platform. Perfect for migrations.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>By Franck Pachot . When non-CDB has been declared deprecated, I was a bit upset because multitenant with a lone PDB just looks like an overhead of 3 containers instead of one. But with experience I changed my mind. First because the multitenant architecture brings some features that are available even without the option. And [&hellip;]<\/p>\n","protected":false},"author":27,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229],"tags":[220,64,96,209,66,223],"type_dbi":[],"class_list":["post-7525","post","type-post","status-publish","format-standard","hentry","category-database-administration-monitoring","tag-cdb","tag-multitenant","tag-oracle","tag-oracle-12c","tag-pdb","tag-pluggable-databases"],"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>Single-Tenant vs. non-CDB: no reason to refuse it - 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\/single-tenant-vs-non-cdb-no-reason-to-refuse-it\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Single-Tenant vs. non-CDB: no reason to refuse it\" \/>\n<meta property=\"og:description\" content=\"By Franck Pachot . When non-CDB has been declared deprecated, I was a bit upset because multitenant with a lone PDB just looks like an overhead of 3 containers instead of one. But with experience I changed my mind. First because the multitenant architecture brings some features that are available even without the option. And [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/single-tenant-vs-non-cdb-no-reason-to-refuse-it\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2016-04-09T16:57:23+00:00\" \/>\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=\"4 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\/single-tenant-vs-non-cdb-no-reason-to-refuse-it\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/single-tenant-vs-non-cdb-no-reason-to-refuse-it\/\"},\"author\":{\"name\":\"Oracle Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"headline\":\"Single-Tenant vs. non-CDB: no reason to refuse it\",\"datePublished\":\"2016-04-09T16:57:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/single-tenant-vs-non-cdb-no-reason-to-refuse-it\/\"},\"wordCount\":447,\"commentCount\":0,\"keywords\":[\"CDB\",\"multitenant\",\"Oracle\",\"Oracle 12c\",\"PDB\",\"Pluggable Databases\"],\"articleSection\":[\"Database Administration &amp; Monitoring\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/single-tenant-vs-non-cdb-no-reason-to-refuse-it\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/single-tenant-vs-non-cdb-no-reason-to-refuse-it\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/single-tenant-vs-non-cdb-no-reason-to-refuse-it\/\",\"name\":\"Single-Tenant vs. non-CDB: no reason to refuse it - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2016-04-09T16:57:23+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/single-tenant-vs-non-cdb-no-reason-to-refuse-it\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/single-tenant-vs-non-cdb-no-reason-to-refuse-it\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/single-tenant-vs-non-cdb-no-reason-to-refuse-it\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Single-Tenant vs. non-CDB: no reason to refuse it\"}]},{\"@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":"Single-Tenant vs. non-CDB: no reason to refuse it - 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\/single-tenant-vs-non-cdb-no-reason-to-refuse-it\/","og_locale":"en_US","og_type":"article","og_title":"Single-Tenant vs. non-CDB: no reason to refuse it","og_description":"By Franck Pachot . When non-CDB has been declared deprecated, I was a bit upset because multitenant with a lone PDB just looks like an overhead of 3 containers instead of one. But with experience I changed my mind. First because the multitenant architecture brings some features that are available even without the option. And [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/single-tenant-vs-non-cdb-no-reason-to-refuse-it\/","og_site_name":"dbi Blog","article_published_time":"2016-04-09T16:57:23+00:00","author":"Oracle Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Oracle Team","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/single-tenant-vs-non-cdb-no-reason-to-refuse-it\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/single-tenant-vs-non-cdb-no-reason-to-refuse-it\/"},"author":{"name":"Oracle Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"headline":"Single-Tenant vs. non-CDB: no reason to refuse it","datePublished":"2016-04-09T16:57:23+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/single-tenant-vs-non-cdb-no-reason-to-refuse-it\/"},"wordCount":447,"commentCount":0,"keywords":["CDB","multitenant","Oracle","Oracle 12c","PDB","Pluggable Databases"],"articleSection":["Database Administration &amp; Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/single-tenant-vs-non-cdb-no-reason-to-refuse-it\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/single-tenant-vs-non-cdb-no-reason-to-refuse-it\/","url":"https:\/\/www.dbi-services.com\/blog\/single-tenant-vs-non-cdb-no-reason-to-refuse-it\/","name":"Single-Tenant vs. non-CDB: no reason to refuse it - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2016-04-09T16:57:23+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/single-tenant-vs-non-cdb-no-reason-to-refuse-it\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/single-tenant-vs-non-cdb-no-reason-to-refuse-it\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/single-tenant-vs-non-cdb-no-reason-to-refuse-it\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Single-Tenant vs. non-CDB: no reason to refuse it"}]},{"@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\/7525","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=7525"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/7525\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=7525"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=7525"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=7525"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=7525"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}