{"id":6364,"date":"2026-07-31T00:05:19","date_gmt":"2026-07-31T00:05:19","guid":{"rendered":"https:\/\/oracleconraul.com\/?p=6364"},"modified":"2026-07-31T00:08:22","modified_gmt":"2026-07-31T00:08:22","slug":"convertir-non-cdb-a-pdb","status":"publish","type":"post","link":"https:\/\/oracleconraul.com\/index.php\/2026\/07\/31\/convertir-non-cdb-a-pdb\/","title":{"rendered":"Convertir una base de datos non cdb a pdb"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">En esta entrada vamos a explicar c\u00f3mo convertir una base de datos noncdb y convertirla en una base de datos PDB dentro de un contenedor existente usando el m\u00e9todo <strong>\u00abPlugging a Non-CDB into a CDB\u00bb<\/strong>.<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Partimos de la siguiente siguaci\u00f3n:<br><br>En uma m\u00e1quina tenemos una base de datos \u00abtest\u00bb noncdb que vamos a migrar a una PDB en una base de datos multitenat (CDBORCL) instalada en la misma m\u00e1quina y en la misma versi\u00f3n.<\/p>\n\n\n\n<p class=\"has-very-light-gray-to-cyan-bluish-gray-gradient-background has-background has-small-font-size wp-block-paragraph\">M\u00e1quina: <strong>oracle19cdb1<\/strong><br>Origen: <strong>Oracle 19c<\/strong> (19.3.0.0.0) ->  Non-CDB (test)<br>Destino: <strong>Oracle 19c<\/strong> (2(19.3.0.0.0) ) -> CDB (CDBORCL) -><\/p>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">1- Prerequisitos y validaciones previas<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de comezar, revisamos que los par\u00e1metros de base de datos son compatibles.<br>Verificamos que el juego de caracteres origen  \/ destino es compatible.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Base de datos: test<\/p>\n\n\n\n<p class=\"has-very-light-gray-to-cyan-bluish-gray-gradient-background has-background has-small-font-size wp-block-paragraph\">SQL > <em><strong>select *from v$nls_parameters where parameter in (&#8216;NLS_CHARACTERSET&#8217;,&#8217;NLS_NCHAR_CHARACTERSET&#8217;)<\/strong><\/em>;<br><br>PARAMETER                                             VALUE                                  <br>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br>NLS_CHARACTERSET                           AL32UTF8                                <br>NLS_NCHAR_CHARACTERSET           AL16UTF16                      <br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Base de datos contenedora: CDBORCL<\/p>\n\n\n\n<p class=\"has-very-light-gray-to-cyan-bluish-gray-gradient-background has-background has-small-font-size wp-block-paragraph\"><br><br><br>SQL > <em><strong>select *from v$nls_parameters where parameter in (&#8216;NLS_CHARACTERSET&#8217;,&#8217;NLS_NCHAR_CHARACTERSET&#8217;)<\/strong><\/em>;<br><br>PARAMETER                                             VALUE                                  <br>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br>NLS_CHARACTERSET                           AL32UTF8                                <br>NLS_NCHAR_CHARACTERSET           AL16UTF16                      <br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Comprobamos que no haya componentes \/ opciones que no est\u00e1n soportadas por las bases de datos PDB.<\/p>\n\n\n\n<p class=\"has-very-light-gray-to-cyan-bluish-gray-gradient-background has-background has-small-font-size wp-block-paragraph\"><br><br><br>SQL > <strong>select comp_id, version,status from dba_registry:<\/strong><br><br>COMP_ID                VERSION                STATUS<br>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br>CATALOG              19.0.0.0.0             VALID<br>CATPROC               19.0.0.0.0             VALID<br>RAC                         19.0.0.0.0             OPTION OFF<br>JAVAVM                  19.0.0.0.0             VALID<br>XML                        19.0.0.0.0             VALID<br>CATJAVA                19.0.0.0.0             VALID<br>APS                         19.0.0.0.0             VALID<br>XDB                        19.0.0.0.0             VALID<br>OWM                      19.0.0.0.0             VALID<br>CONTEXT              19.0.0.0.0             VALID<br>ORDIM                   19.0.0.0.0             VALID<br>SDO                        19.0.0.0.0             VALID<br>XOQ                        19.0.0.0.0             VALID<br>OLS                         19.0.0.0.0             VALID<br>DV                           19.0.0.0.0             VALID<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">2 &#8211; Dejar la base de datos no-CDB en modo lectura<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es recomendable dejar la base de datos en modo read-only, para evitar cambios mientras generasmos el XML.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>SHUTDOWN IMMEDIATE;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>STARTUP OPEN READ ONLY;<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img fetchpriority=\"high\" decoding=\"async\" width=\"425\" height=\"270\" src=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2026\/07\/image.png\" alt=\"\" class=\"wp-image-6378\" srcset=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2026\/07\/image.png 425w, https:\/\/oracleconraul.com\/wp-content\/uploads\/2026\/07\/image-300x191.png 300w\" sizes=\"(max-width: 425px) 100vw, 425px\" \/><\/figure>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">3 &#8211; Generar archivo XML descriptivo (non CDB)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Generamos el fichero xml, que guardar\u00e1 la descripci\u00f3n de la base de datos non-cdb que ser\u00e1n utilizados para importar en la base de datos CDB.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"525\" height=\"131\" src=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2026\/07\/image-2.png\" alt=\"\" class=\"wp-image-6384\" srcset=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2026\/07\/image-2.png 525w, https:\/\/oracleconraul.com\/wp-content\/uploads\/2026\/07\/image-2-300x75.png 300w\" sizes=\"(max-width: 525px) 100vw, 525px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>BEGIN<br>DBMS_PDB.DESCRIBE(<br>         pdb_descr_file => &#8216;\/tmp\/oracleconraultest.xml&#8217;);<br>END;<\/strong><br>\/<\/p>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">4 &#8211; Verificar compatibilidad (BBDD CDB)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de a\u00f1adir la base de datos al contenedor CDB (CDBORCL), es necesario saber si es compatible. Para ello ejecutamos.<\/p>\n\n\n\n<div class=\"wp-block-group has-background has-small-font-size is-vertical is-layout-flex wp-container-core-group-is-layout-4fc3f8e1 wp-block-group-is-layout-flex\" style=\"background-color:#95abab78\">\n<p class=\"wp-block-paragraph\"><strong>SET SERVEROUTPUT ON<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>DECLARE<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>compatible VARCHAR2(3);<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>BEGIN<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>compatible :=<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>CASE DBMS_PDB.CHECK_PLUG_COMPATIBILITY(<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>pdb_descr_file => &#8216;<strong>tmp\/oracleconraultest.xml<\/strong>&#8216;)<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>WHEN TRUE THEN &#8216;YES&#8217;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>ELSE &#8216;NO&#8217;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>END;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>DBMS_OUTPUT.PUT_LINE(compatible);<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>END;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\/<\/strong><\/p>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"538\" height=\"259\" src=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2026\/07\/image-4.png\" alt=\"\" class=\"wp-image-6389\" srcset=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2026\/07\/image-4.png 538w, https:\/\/oracleconraul.com\/wp-content\/uploads\/2026\/07\/image-4-300x144.png 300w\" sizes=\"(max-width: 538px) 100vw, 538px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de pasar al siguiente paso, bajamos la base de datos Non CDB.<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">SHUTDOWN IMEDIATE;<br><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"265\" height=\"83\" src=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2026\/07\/image-5.png\" alt=\"\" class=\"wp-image-6395\"\/><\/figure>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">5. Crear el PDB<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Hay dos formas de crear la PDB. <\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Una ser\u00eda reuitilzando los datafiles actuales. Sin hacer una copia de  la base de datos (opcion NOCOPY). Otra con opci\u00f3n COPY, donde se realiza una copia de seguridad de los datafiles de la BBDD.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Al estar en la m\u00edsma m\u00e1quina. Utilizaremos NOCOPY, que obviamente har\u00e1 que el proceso sea m\u00e1s r\u00e1pido, ya que no tiene que realizar una copia de los datafiles. <br>Si se opta por esta opci\u00f3n es muy recomendable <strong>realizar un backup <\/strong>anterior al lanzamiento del proceso.<\/p>\n\n\n\n<p class=\"has-background has-small-font-size wp-block-paragraph\" style=\"background-color:#95abab78\">CREATE PLUGGABLE DATABASE test<br>USING &#8216;<strong> &#8216;<strong>tmp\/oracleconraultest.xml<\/strong>&#8216;<\/strong><br><strong><em>NOCOPY<\/em><\/strong><br>TEMPFILE REUSE;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Si quieres copiar los datafiles a una nueva ubicaci\u00f3n ASM<\/h3>\n\n\n\n<p class=\"has-background has-small-font-size wp-block-paragraph\" style=\"background-color:#95abab78\">SCREATE PLUGGABLE DATABASE test<br>USING &#8216;\/tmp\/noncdb.xml&#8217;<br><strong><em>COPY<\/em><\/strong><br>FILE_NAME_CONVERT =<br>(<br>&#8216;+DATA\/NONCDB\/&#8217;,<br>&#8216;+DATA\/CDB19\/TEST\/&#8217;<br>);<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En la misma m\u00e1quina ASM normalmente se utiliza <strong>NOCOPY<\/strong>, minimizando espacio y tiempo.<\/p>\n\n\n\n<p class=\"has-background has-small-font-size wp-block-paragraph\" style=\"background-color:#95abab78\">CREATE PLUGGABLE DATABASE test<br>USING &#8216;<strong> &#8216;<strong>tmp\/oracleconraultest.xml<\/strong>&#8216;<\/strong><br>NOCOPY<br>TEMPFILE REUSE;<br><br><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"338\" height=\"113\" src=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2026\/07\/image-6.png\" alt=\"\" class=\"wp-image-6396\" srcset=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2026\/07\/image-6.png 338w, https:\/\/oracleconraul.com\/wp-content\/uploads\/2026\/07\/image-6-300x100.png 300w\" sizes=\"(max-width: 338px) 100vw, 338px\" \/><\/figure>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">6. Abrir base de datos modo restricted.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Abrimos la base de datos en modo restricted en la CDB.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>ALTER PLUGGABLE DATABASE TEST OPEN RESTRICTED;<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"490\" height=\"69\" src=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2026\/07\/image-7.png\" alt=\"\" class=\"wp-image-6399\" srcset=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2026\/07\/image-7.png 490w, https:\/\/oracleconraul.com\/wp-content\/uploads\/2026\/07\/image-7-300x42.png 300w\" sizes=\"(max-width: 490px) 100vw, 490px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Verificamos los errores y vemos que se trata de que a\u00fan falta la ejecu\u00edon del script<\/p>\n\n\n\n<p class=\"has-background has-small-font-size wp-block-paragraph\" style=\"background-color:#95abab78\">SELECT name, cause, type, message, status<br>FROM pdb_plug_in_violations<br>WHERE name = &#8216;TEST&#8217;<br>ORDER BY time;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"153\" src=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2026\/07\/image-9-1024x153.png\" alt=\"\" class=\"wp-image-6403\" srcset=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2026\/07\/image-9-1024x153.png 1024w, https:\/\/oracleconraul.com\/wp-content\/uploads\/2026\/07\/image-9-300x45.png 300w, https:\/\/oracleconraul.com\/wp-content\/uploads\/2026\/07\/image-9-768x115.png 768w, https:\/\/oracleconraul.com\/wp-content\/uploads\/2026\/07\/image-9.png 1507w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">7. Ejecuci\u00f3n del script de conversi\u00f3n NonCdb to CDB<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cambiamos la sesi\u00f3n a la pdb que vamos a convertir \u00abtest\u00bb.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>ALTER SESSION SET CONTAINER=TEST;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Y ejecutamos la conversi\u00f3n:<br><br><strong>@$ORACLE_HOME\/rdbms\/admin\/noncdb_to_pdb.sql<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una vez finalizada podemos ver que la conversi\u00f3n se ha realizado correctamente.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"150\" src=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2026\/07\/image-10-1024x150.png\" alt=\"\" class=\"wp-image-6409\" srcset=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2026\/07\/image-10-1024x150.png 1024w, https:\/\/oracleconraul.com\/wp-content\/uploads\/2026\/07\/image-10-300x44.png 300w, https:\/\/oracleconraul.com\/wp-content\/uploads\/2026\/07\/image-10-768x112.png 768w, https:\/\/oracleconraul.com\/wp-content\/uploads\/2026\/07\/image-10.png 1157w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Para evitar que en el pr\u00f3ximo reinicio la base de datos TEST arranque en modo mounted, con la base de datos abierta ejecutamos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>ALTER PLUGGABLE DATABASE TEST SAVE STATE;<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"587\" height=\"323\" src=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2026\/07\/image-11.png\" alt=\"\" class=\"wp-image-6412\" srcset=\"https:\/\/oracleconraul.com\/wp-content\/uploads\/2026\/07\/image-11.png 587w, https:\/\/oracleconraul.com\/wp-content\/uploads\/2026\/07\/image-11-300x165.png 300w\" sizes=\"(max-width: 587px) 100vw, 587px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Con esto ya habr\u00edamos convertido nuestra BBDD Non CDB a PDB.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En esta entrada vamos a explicar c\u00f3mo convertir una base de datos noncdb y convertirla en una base de datos PDB dentro de un contenedor existente usando el m\u00e9todo \u00abPlugging a Non-CDB into a CDB\u00bb. Partimos de la siguiente siguaci\u00f3n: En uma m\u00e1quina tenemos una base de datos \u00abtest\u00bb noncdb que vamos a migrar a<\/p>\n<div class=\"more-link\">\n\t\t\t\t <a href=\"https:\/\/oracleconraul.com\/index.php\/2026\/07\/31\/convertir-non-cdb-a-pdb\/\" class=\"link-btn theme-btn\"><span>Leer M\u00e1s <\/span> <i class=\"fa fa-caret-right\"><\/i><\/a>\n\t\t\t<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"wpupg_custom_link":[],"wpupg_custom_link_behaviour":[],"wpupg_custom_link_nofollow":[],"wpupg_custom_image":[],"wpupg_custom_image_id":[],"_monsterinsights_skip_tracking":false,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[14],"tags":[15],"class_list":["post-6364","post","type-post","status-publish","format-standard","hentry","category-oracle","tag-rdbmsoracle"],"_links":{"self":[{"href":"https:\/\/oracleconraul.com\/index.php\/wp-json\/wp\/v2\/posts\/6364","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oracleconraul.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/oracleconraul.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/oracleconraul.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/oracleconraul.com\/index.php\/wp-json\/wp\/v2\/comments?post=6364"}],"version-history":[{"count":50,"href":"https:\/\/oracleconraul.com\/index.php\/wp-json\/wp\/v2\/posts\/6364\/revisions"}],"predecessor-version":[{"id":6427,"href":"https:\/\/oracleconraul.com\/index.php\/wp-json\/wp\/v2\/posts\/6364\/revisions\/6427"}],"wp:attachment":[{"href":"https:\/\/oracleconraul.com\/index.php\/wp-json\/wp\/v2\/media?parent=6364"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/oracleconraul.com\/index.php\/wp-json\/wp\/v2\/categories?post=6364"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/oracleconraul.com\/index.php\/wp-json\/wp\/v2\/tags?post=6364"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}