{"id":4175,"date":"2014-12-01T12:44:10","date_gmt":"2014-12-01T11:44:10","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/oracle-12c-comparing-tts-with-noncdbtopdb\/"},"modified":"2014-12-01T12:44:10","modified_gmt":"2014-12-01T11:44:10","slug":"oracle-12c-comparing-tts-with-noncdbtopdb","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/oracle-12c-comparing-tts-with-noncdbtopdb\/","title":{"rendered":"Oracle 12c: comparing TTS with noncdb_to_pdb"},"content":{"rendered":"<h2>By Franck Pachot<\/h2>\n<p>.<br \/>\nHow to migrate from non-CDB to CDB? Of course all known migration methods works. But there is also another solution: upgrade to 12c if necessary and then convert the non-CDB to a PDB. This is done with the noncdb_to_pdb.sql which converts a non-CDB dictionary to a PDB one, with metadata and object links. But do you get a clean PDB after that ? I tested it and compared the result with same database migrated by transportable tablespaces.<\/p>\n<h3>The test case<\/h3>\n<p>In 12c I can use Full Transportable database, but here I&#8217;ve only one tablespace as I&#8217;m doing my comparison on an empty database with the EXAMPLE schemas.<\/p>\n<p>Here is my database:<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">RMAN&gt; report schema;\n\nReport of database schema for database with db_unique_name NDB1\n\nList of Permanent Datafiles\n===========================\nFile Size(MB) Tablespace           RB segs Datafile Name\n---- -------- -------------------- ------- ------------------------\n1    790      SYSTEM               YES     \/u01\/app\/oracle\/oradata\/NDB1\/system01.dbf\n3    610      SYSAUX               NO      \/u01\/app\/oracle\/oradata\/NDB1\/sysaux01.dbf\n4    275      UNDOTBS1             YES     \/u01\/app\/oracle\/oradata\/NDB1\/undotbs01.dbf\n5    1243     EXAMPLE              NO      \/u01\/app\/oracle\/oradata\/NDB1\/example01.dbf\n6    5        USERS                NO      \/u01\/app\/oracle\/oradata\/NDB1\/users01.dbf\n<\/pre>\n<p>It&#8217;s a new database, created with dbca, all defaults, and having only the EXAMPLE tablespace. SYSTEM is 790MB and SYSAUX is 610MB. We can have a lot of small databases like that, where system size is larger than user size and this is a reason to go to multitenant.<\/p>\n<p>I will compare the following:<\/p>\n<ul>\n<li>the migration with transportable tablespaces (into pluggable database PDB_TTS)<\/li>\n<li>the plug and run noncdb_to_pdb (into the pluggable database PDB_PLG)<\/li>\n<\/ul>\n<h3>Transportable tablespace<\/h3>\n<p>Transportable tablespace will plug only the non system tablespaces and all the dictionary entries are recreated while importing metadata. Here it is:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; alter tablespace EXAMPLE read only;\nTablespace altered.\nSQL&gt; host expdp '\"\/ as sysdba\"' transport_tablespaces='EXAMPLE'\n<\/pre>\n<p>The log gives me the dump file (containing the metadata) and the datafiles to copy:<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">Master table \"SYS\".\"SYS_EXPORT_TRANSPORTABLE_01\" successfully loaded\/unloaded\n******************************************************************************\nDump file set for SYS.SYS_EXPORT_TRANSPORTABLE_01 is:\n  \/u01\/app\/oracle\/admin\/NDB1\/dpdump\/expdat.dmp\n******************************************************************************\nDatafiles required for transportable tablespace EXAMPLE:\n  \/u01\/app\/oracle\/oradata\/NDB1\/example01.dbf\nJob \"SYS\".\"SYS_EXPORT_TRANSPORTABLE_01\" successfully completed at ... elapsed 00:03:55\n<\/pre>\n<p>then on the destination I create an empty pluggable database:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; create pluggable database PDB_TTS admin user pdbadmin identified by \"oracle\" file_name_convert=('\/pdbseed\/','\/PDB_TTS\/');\nSQL&gt; alter pluggable database PDB_TTS open;\nSQL&gt; alter session set container=PDB_TTS;\n<\/pre>\n<p>and import the metadata after having copied the datafile to \/u03:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; create or replace directory DATA_PUMP_DIR_NDB1 as '\/u01\/app\/oracle\/admin\/NDB1\/dpdump';\nSQL&gt; host impdp '\"sys\/oracle@\/\/vm211:1666\/pdb_tts as sysdba\"' transport_datafiles=\/u03\/app\/oracle\/oradata\/PDB_TTS\/example01.dbf directory=DATA_PUMP_DIR_NDB1\n<\/pre>\n<p>which took only two minutes because I don&#8217;t have a lot of objects. That&#8217;s all. I have a brand new pluggable database where I&#8217;ve imported my tablespaces.<\/p>\n<p>Here I used the transportable tablespace and had to pre-create the users. But in 12c you can do everything with Full Tabsportable Database.<\/p>\n<h3>noncdb_to_pdb.sql<\/h3>\n<p>The other solution is to plug the whole database, including the SYSTEM and SYSAUX tablespaces, and then run the noncdb_to_pdb.sql script to transform the dictionary to a multitenant one. First, we generate the xml describing the database, which is similar to the one generated when we unplug a PDB:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; shutdown immediate\nSQL&gt; startup open read only;\nSQL&gt; exec dbms_pdb.describe('\/tmp\/NDB01.xml');\n<\/pre>\n<p>And then plug it:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; CREATE PLUGGABLE DATABASE PDB_PLG USING '\/tmp\/NDB01.xml' COPY FILE_NAME_CONVERT = ('\/u01\/app\/oracle\/oradata\/NDB1', '\/u03\/app\/oracle\/oradata\/PDB_PLG');\n<\/pre>\n<p>At that point I can open the PDB but it will act as a Non-CDB, with its own dictionary that is not linked to the root. For example, you have nothing when you query DBA_PDBS from the PDB:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; show con_id\nCON_ID\n------------------------------\n6\nSQL&gt; select * from dba_pdbs;\nno rows selected\n<\/pre>\n<p>I put in my todo list to test what we can do in that PDB which is not yet a PDB before raising lot of ORA-600.<\/p>\n<p>Now you have to migrate the dictionary to a PDB one. The noncdb_to_pdb.sql will do internal updates to transform the entries in OBJ$ to be metadata links.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; alter session set container=PDB_PLG;\nSQL&gt; @?\/rdbms\/admin\/noncdb_to_pdb;\nSQL&gt; alter pluggable database PDB_PLG open;\n<\/pre>\n<p>The updates will depend on the number of dictionary objects, so that is fixed for the version. And the remaining time is to recompile all objects, but that can be done in parallel. Here, I&#8217;ve run it in serial to see how long it takes (screenshot from Lighty):<\/p>\n<p><a class=\"easyblog-thumb-preview\" title=\"Capturenon_cdb_to_pdb.png\" href=\"http:\/\/dbi-services.com\/blog\/images\/easyblog_images\/139\/Capturenon_cdb_to_pdb.png\"><img decoding=\"async\" title=\"b2ap3_thumbnail_Capturenon_cdb_to_pdb.png\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/b2ap3_thumbnail_Capturenon_cdb_to_pdb.png\" alt=\"b2ap3_thumbnail_Capturenon_cdb_to_pdb.png\" \/><\/a><\/p>\n<h3>Comparison<\/h3>\n<p>My goal was to compare both methods. As I expected, the SYSTEM and SYSAUX tablespaces did not decrease when using the noncdb_to_pdb, so if you want to go to multitenant to save space, the noncdb_to_pdb method is not the good one:<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">RMAN&gt; report schema;\n\nusing target database control file instead of recovery catalog\nReport of database schema for database with db_unique_name CDB1_SITE1\n\nList of Permanent Datafiles\n===========================\nFile Size(MB) Tablespace           RB segs Datafile Name\n---- -------- -------------------- ------- ------------------------\n1    781      SYSTEM               YES     \/u02\/app\/oracle\/oradata\/cdb1_site1\/system01.dbf\n3    691      SYSAUX               NO      \/u02\/app\/oracle\/oradata\/cdb1_site1\/sysaux01.dbf\n4    870      UNDOTBS1             YES     \/u02\/app\/oracle\/oradata\/cdb1_site1\/undotbs01.dbf\n5    260      PDB$SEED:SYSTEM      NO      \/u02\/app\/oracle\/oradata\/cdb1_site1\/pdbseed\/system01.dbf\n6    5        USERS                NO      \/u02\/app\/oracle\/oradata\/cdb1_site1\/users01.dbf\n7    570      PDB$SEED:SYSAUX      NO      \/u02\/app\/oracle\/oradata\/cdb1_site1\/pdbseed\/sysaux01.dbf\n8    260      PDB1:SYSTEM          NO      \/u02\/app\/oracle\/oradata\/cdb1_site1\/pdb1\/system01.dbf\n9    580      PDB1:SYSAUX          NO      \/u02\/app\/oracle\/oradata\/cdb1_site1\/pdb1\/sysaux01.dbf\n10   10       PDB1:USERS           NO      \/u02\/app\/oracle\/oradata\/cdb1_site1\/pdb1\/pdb1_users01.dbf\n14   270      PDB_TTS:SYSTEM       NO      \/u02\/app\/oracle\/oradata\/cdb1_site1\/PDB_TTS\/system01.dbf\n15   590      PDB_TTS:SYSAUX       NO      \/u02\/app\/oracle\/oradata\/cdb1_site1\/PDB_TTS\/sysaux01.dbf\n17   1243     PDB_TTS:EXAMPLE      NO      \/u03\/app\/oracle\/oradata\/PDB_TTS\/example01.dbf\n22   790      PDB_PLG:SYSTEM       NO      \/u03\/app\/oracle\/oradata\/PDB_PLG\/system01.dbf\n23   680      PDB_PLG:SYSAUX       NO      \/u03\/app\/oracle\/oradata\/PDB_PLG\/sysaux01.dbf\n24   5        PDB_PLG:USERS        NO      \/u03\/app\/oracle\/oradata\/PDB_PLG\/users01.dbf\n25   1243     PDB_PLG:EXAMPLE      NO      \/u03\/app\/oracle\/oradata\/PDB_PLG\/example01.dbf\n<\/pre>\n<p>The SYSTEM tablespace which is supposed to contain only links (my user schemas don&#8217;t have a lot of objects) is the same size as the root. This is bad. Let&#8217;s look at the detail:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; select *\n  from (select nvl(pdb_name,'CDB$ROOT') pdb_name,owner,segment_type,bytes from cdb_segments \n  left outer join dba_pdbs using(con_id))\n  pivot (sum(bytes\/1024\/1024) as \"MB\" for (pdb_name) \n  in ('CDB$ROOT' as \"CDB$ROOT\",'PDB_TTS' as PDB_TTS,'PDB_PLG' as PDB_PLG))\n  order by greatest(nvl(PDB_TTS_MB,0),nvl(PDB_PLG_MB,0))-least(nvl(PDB_TTS_MB,0),nvl(PDB_PLG_MB,0)) \n  desc fetch first 20 rows only;\n\nOWNER                SEGMENT_TYPE       CDB$ROOT_MB PDB_TTS_MB PDB_PLG_MB\n-------------------- ------------------ ----------- ---------- ----------\nSYS                  TABLE                      539         96        540\nSYS                  INDEX                      187        109        195\nSYS                  LOBSEGMENT                 117        105        118\nSYS                  TABLE PARTITION             17          1         12\nSYSTEM               INDEX                       10          1         10\nSYS                  SYSTEM STATISTICS                                  8\nSYSTEM               TABLE                        8          1          8\nSYS                  LOBINDEX                    12          7         13\nSYS                  INDEX PARTITION              9          0          6\nSYSTEM               LOBSEGMENT                   5          0          5\nAPEX_040200          LOBSEGMENT                  80         74         80\nSYSTEM               INDEX PARTITION              4                     4\nSYSTEM               TABLE PARTITION              3                     3\nSYS                  TABLE SUBPARTITION           2                     2\nSYS                  CLUSTER                     52         50         52\nSYS                  LOB PARTITION                3          1          2\nSYSTEM               LOBINDEX                     2          0          2\nAPEX_040200          TABLE                      100         99        100\nXDB                  TABLE                        7          6          7\nAUDSYS               LOB PARTITION                1          0          1\n\n20 rows selected.\n<\/pre>\n<p>Here I&#8217;ve compared the dictionary sizes. While the PDB_TTS table segments are below 100MB, the PDB_PLG is the same size as the root. The noncdb_to_pdb has updated OBJ$ but did not <del datetime=\"2015-04-29T08:51:32+00:00\">delete the rows<\/del> reclaim space from other tables (see update 2).<\/p>\n<p>Which tables?<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; select *\n   from (select nvl(pdb_name,'CDB$ROOT') pdb_name,owner,segment_type,segment_name,bytes \n   from cdb_segments left outer join dba_pdbs using(con_id) \n   where owner='SYS' and segment_type in ('TABLE'))\n   pivot (sum(bytes\/1024\/1024) as \"MB\" for (pdb_name) \n   in ('CDB$ROOT' as \"CDB$ROOT\",'PDB_TTS' as PDB_TTS,'PDB_PLG' as PDB_PLG))\n   order by greatest(nvl(PDB_TTS_MB,0),nvl(PDB_PLG_MB,0))-least(nvl(PDB_TTS_MB,0),nvl(PDB_PLG_MB,0))\n   desc fetch first 20 rows only;\n\nOWNER             SEGMENT_TYPE       SEGMENT_NAME                   CDB$ROOT_MB PDB_TTS_MB PDB_PLG_MB\n----------------- ------------------ ------------------------------ ----------- ---------- ----------\nSYS               TABLE              IDL_UB1$                               288          3        288\nSYS               TABLE              SOURCE$                                 51          2         52\nSYS               TABLE              IDL_UB2$                                32         13         32\nSYS               TABLE              ARGUMENT$                               13          0         13\nSYS               TABLE              IDL_CHAR$                               11          3         11\n\n<\/pre>\n<p>The IDL_UB1$ is the table that contains all the pcode for pl\/sql. All those wrapped dbms_ packages are there. And we don&#8217;t need them in the PDB: we have link to the root which has exactly the same version.<\/p>\n<h3>Conclusion<\/h3>\n<p>My conclusion is that I&#8217;ll not advise to use using noncdb_to_pdb. First, that script doing a lot of internal stuff scares me. I prefer to start that new implementation of the dictionary with a clean one.<\/p>\n<p>But now that I made this test, I&#8217;ve two additional reasons to avoid it. First, it&#8217;s not faster &#8211; except if you have a lot of objects. And the main goal is to reduce the total space by having the oracle packages stored only once. And this is cleary not done by the noncdb_to_pdb.<\/p>\n<p>However, that conclusion is only for small databases. If you a database with a huge number of objects and pl\/sql packages, then the overhead to keep the dictionary objects will not be very significant. And the TSS solution will be longer because it has to import all metadata. So there is still a case for noncdb_to_pdb. But test is before. And be sure to have a large shared pool for the recompile step.<\/p>\n<p><strong>Update 1<\/strong>: I forgot to add another reason to be very careful with noncdb_to_pdb from Bertrand Drouvot in his <a href=\"https:\/\/bdrouvot.wordpress.com\/2014\/10\/17\/watch-out-for-optimizer_adaptive_features-as-it-may-have-a-huge-negative-impact\">post about optimizer_adaptive_features huge negative impact on it.<\/a><\/p>\n<p><strong>Update 2<\/strong>: From a comment on <a href=\"https:\/\/community.oracle.com\/thread\/3635717?sr=inbox&amp;ru=7404\">OTN forum<\/a> I changed the sentence about deleted rows because it was wrong. In fact, rows are deleted when the objects are recompiled:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; select name,count(*) from containers(IDL_UB1$) left outer join v$containers using(con_id) group by name order by 1;\n\nNAME                             COUNT(*)\n------------------------------ ----------\nCDB$ROOT                            53298\nPDB1                                 6457\nPDB_PLG                              6432\nPDB_TTS                              6354\n\nSQL&gt; select name,count(*) from containers(SOURCE$) left outer join v$containers using(con_id) group by name order by 1;\n\nNAME                             COUNT(*)\n------------------------------ ----------\nCDB$ROOT                           327589\nPDB1                                73055\nPDB_PLG                             20306\nPDB_TTS                             17753\n<\/pre>\n<p>The issue is only that space is still allocated. And you can&#8217;t SHRINK those objects because SYSTEM is DMT, and anyway the large tables contain LONG, and finally:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; alter table sys.IDL_UB1$ shrink space;\nalter table sys.IDL_UB1$ shrink space\n*\nERROR at line 1:\nORA-65040: operation not allowed from within a pluggable database\n<\/pre>\n<p>Of course, the space can be reused, but do you expect to add 200MB of compiled pl\/sql in future releases?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>By Franck Pachot . How to migrate from non-CDB to CDB? Of course all known migration methods works. But there is also another solution: upgrade to 12c if necessary and then convert the non-CDB to a PDB. This is done with the noncdb_to_pdb.sql which converts a non-CDB dictionary to a PDB one, with metadata and [&hellip;]<\/p>\n","protected":false},"author":27,"featured_media":4176,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[198,59],"tags":[220,15,64,320,96,209,66,223],"type_dbi":[],"class_list":["post-4175","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-database-management","category-oracle","tag-cdb","tag-migration","tag-multitenant","tag-multitenant-database","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>Oracle 12c: comparing TTS with noncdb_to_pdb - dbi Blog<\/title>\n<meta name=\"description\" content=\"A test I had in my todo list for a long time: compare the size of the PDB dictionary after a noncdb_to_pdb.sql\" \/>\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-12c-comparing-tts-with-noncdbtopdb\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Oracle 12c: comparing TTS with noncdb_to_pdb\" \/>\n<meta property=\"og:description\" content=\"A test I had in my todo list for a long time: compare the size of the PDB dictionary after a noncdb_to_pdb.sql\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/oracle-12c-comparing-tts-with-noncdbtopdb\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2014-12-01T11:44:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/b2ap3_thumbnail_Capturenon_cdb_to_pdb.png\" \/>\n\t<meta property=\"og:image:width\" content=\"500\" \/>\n\t<meta property=\"og:image:height\" content=\"307\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\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=\"9 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-12c-comparing-tts-with-noncdbtopdb\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-12c-comparing-tts-with-noncdbtopdb\/\"},\"author\":{\"name\":\"Oracle Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"headline\":\"Oracle 12c: comparing TTS with noncdb_to_pdb\",\"datePublished\":\"2014-12-01T11:44:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-12c-comparing-tts-with-noncdbtopdb\/\"},\"wordCount\":975,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-12c-comparing-tts-with-noncdbtopdb\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/b2ap3_thumbnail_Capturenon_cdb_to_pdb.png\",\"keywords\":[\"CDB\",\"Migration\",\"multitenant\",\"Multitenant database\",\"Oracle\",\"Oracle 12c\",\"PDB\",\"Pluggable Databases\"],\"articleSection\":[\"Database management\",\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/oracle-12c-comparing-tts-with-noncdbtopdb\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-12c-comparing-tts-with-noncdbtopdb\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/oracle-12c-comparing-tts-with-noncdbtopdb\/\",\"name\":\"Oracle 12c: comparing TTS with noncdb_to_pdb - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-12c-comparing-tts-with-noncdbtopdb\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-12c-comparing-tts-with-noncdbtopdb\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/b2ap3_thumbnail_Capturenon_cdb_to_pdb.png\",\"datePublished\":\"2014-12-01T11:44:10+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"description\":\"A test I had in my todo list for a long time: compare the size of the PDB dictionary after a noncdb_to_pdb.sql\",\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-12c-comparing-tts-with-noncdbtopdb\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/oracle-12c-comparing-tts-with-noncdbtopdb\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-12c-comparing-tts-with-noncdbtopdb\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/b2ap3_thumbnail_Capturenon_cdb_to_pdb.png\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/b2ap3_thumbnail_Capturenon_cdb_to_pdb.png\",\"width\":500,\"height\":307},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-12c-comparing-tts-with-noncdbtopdb\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Oracle 12c: comparing TTS with noncdb_to_pdb\"}]},{\"@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":"Oracle 12c: comparing TTS with noncdb_to_pdb - dbi Blog","description":"A test I had in my todo list for a long time: compare the size of the PDB dictionary after a noncdb_to_pdb.sql","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-12c-comparing-tts-with-noncdbtopdb\/","og_locale":"en_US","og_type":"article","og_title":"Oracle 12c: comparing TTS with noncdb_to_pdb","og_description":"A test I had in my todo list for a long time: compare the size of the PDB dictionary after a noncdb_to_pdb.sql","og_url":"https:\/\/www.dbi-services.com\/blog\/oracle-12c-comparing-tts-with-noncdbtopdb\/","og_site_name":"dbi Blog","article_published_time":"2014-12-01T11:44:10+00:00","og_image":[{"width":500,"height":307,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/b2ap3_thumbnail_Capturenon_cdb_to_pdb.png","type":"image\/jpeg"}],"author":"Oracle Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Oracle Team","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-12c-comparing-tts-with-noncdbtopdb\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-12c-comparing-tts-with-noncdbtopdb\/"},"author":{"name":"Oracle Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"headline":"Oracle 12c: comparing TTS with noncdb_to_pdb","datePublished":"2014-12-01T11:44:10+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-12c-comparing-tts-with-noncdbtopdb\/"},"wordCount":975,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-12c-comparing-tts-with-noncdbtopdb\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/b2ap3_thumbnail_Capturenon_cdb_to_pdb.png","keywords":["CDB","Migration","multitenant","Multitenant database","Oracle","Oracle 12c","PDB","Pluggable Databases"],"articleSection":["Database management","Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/oracle-12c-comparing-tts-with-noncdbtopdb\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-12c-comparing-tts-with-noncdbtopdb\/","url":"https:\/\/www.dbi-services.com\/blog\/oracle-12c-comparing-tts-with-noncdbtopdb\/","name":"Oracle 12c: comparing TTS with noncdb_to_pdb - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-12c-comparing-tts-with-noncdbtopdb\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-12c-comparing-tts-with-noncdbtopdb\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/b2ap3_thumbnail_Capturenon_cdb_to_pdb.png","datePublished":"2014-12-01T11:44:10+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"description":"A test I had in my todo list for a long time: compare the size of the PDB dictionary after a noncdb_to_pdb.sql","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-12c-comparing-tts-with-noncdbtopdb\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/oracle-12c-comparing-tts-with-noncdbtopdb\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-12c-comparing-tts-with-noncdbtopdb\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/b2ap3_thumbnail_Capturenon_cdb_to_pdb.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/b2ap3_thumbnail_Capturenon_cdb_to_pdb.png","width":500,"height":307},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-12c-comparing-tts-with-noncdbtopdb\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Oracle 12c: comparing TTS with noncdb_to_pdb"}]},{"@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\/4175","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=4175"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/4175\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/4176"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=4175"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=4175"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=4175"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=4175"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}