{"id":2951,"date":"2021-03-20T20:16:34","date_gmt":"2021-03-20T20:16:34","guid":{"rendered":"https:\/\/swiv.com.br\/creating-a-new-pdb-using-the-dbms_pdb-package-on-a-non-cdb\/"},"modified":"2026-05-27T20:02:50","modified_gmt":"2026-05-27T19:02:50","slug":"creating-a-new-pdb-using-the-dbms_pdb-package-on-a-non-cdb","status":"publish","type":"post","link":"https:\/\/swiv.com.br\/index.php\/2021\/03\/20\/creating-a-new-pdb-using-the-dbms_pdb-package-on-a-non-cdb\/","title":{"rendered":"Creating a new PDB using the DBMS_PDB package on a Non-CDB"},"content":{"rendered":"\n<p>Neste artigo vou simular a cria\u00e7\u00e3o de um PDB utilizando a DBMS_PDB. No ambiente de origem (Non-CDB), vou deixar o banco de dados em read only:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \\&quot;wp-block-syntaxhighlighter-code\\&quot;\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n&#x5B;oracle@oel8 ~]$ sqlplus \/ as sysdba\n \nSQL*Plus: Release 18.0.0.0.0 - Production on Sat Mar 20 15:48:25 2021\nVersion 18.3.0.0.0\n \nCopyright (c) 1982, 2018, Oracle.  All rights reserved.\n \n \nConnected to:\nOracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production\nVersion 18.3.0.0.0\n \nSQL&gt; SELECT NAME,OPEN_MODE,CDB FROM V$DATABASE;\n \nNAME      OPEN_MODE            CDB\n--------- -------------------- ---\nRMANDB    READ WRITE           NO\n \nSQL&gt; SHU IMMEDIATE;\nDatabase closed.\nDatabase dismounted.\nORACLE instance shut down.\nSQL&gt; STARTUP MOUNT;\nORACLE instance started.\n \nTotal System Global Area 1610612016 bytes\nFixed Size                  8658224 bytes\nVariable Size             520093696 bytes\nDatabase Buffers         1073741824 bytes\nRedo Buffers                8118272 bytes\nDatabase mounted.\nSQL&gt; ALTER DATABASE OPEN READ ONLY;\n \nDatabase altered.\n<\/pre><\/div>\n\n\n<p>Gerando o arquivo XML com os dados do banco de dados a partir da DBMS_PDB:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \\&quot;wp-block-syntaxhighlighter-code\\&quot;\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nSQL&gt; exec DBMS_PDB.DESCRIBE( PDB_DESCR_FILE =&gt; &#039;\/home\/oracle\/RMANDB.xml&#039;);\n \nPL\/SQL procedure successfully completed.\n \nSQL&gt; ! ls -lthr \/home\/oracle\/RMANDB.xml\n-rw-r--r--. 1 oracle oinstall 7.7K Mar 20 15:51 \/home\/oracle\/RMANDB.xml\n<\/pre><\/div>\n\n\n<p>Copiando o arquivo gerado da m\u00e1quina de origem para a m\u00e1quina de destino:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \\&quot;wp-block-syntaxhighlighter-code\\&quot;\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n&#x5B;oracle@oel8 ~]$ cd\n&#x5B;oracle@oel8 ~]$ scp RMANDB.xml oracle@192.168.0.106:\/home\/oracle\/RMANDB.xml\nThe authenticity of host &#039;192.168.0.106 (192.168.0.106)&#039; can&#039;t be established.\nECDSA key fingerprint is SHA256:4UQCI0pPac0916hthopcW6hQhmzzxfPVXuhSwCuqlLQ.\nAre you sure you want to continue connecting (yes\/no\/&#x5B;fingerprint])? yes\nWarning: Permanently added &#039;192.168.0.106&#039; (ECDSA) to the list of known hosts.\noracle@192.168.0.106&#039;s password:\nRMANDB.xml                                                                                            100% 7877     4.0MB\/s   00:00\n&#x5B;oracle@oel8 ~]$ rm RMANDB.xml\n<\/pre><\/div>\n\n\n<p>No ambiente de destino, vou criar o diret\u00f3rio que abrigar\u00e1 os dados do novo PDB (mantive o mesmo diret\u00f3rio da origem):<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \\&quot;wp-block-syntaxhighlighter-code\\&quot;\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n&#x5B;oracle@oel8 dados]$ ps -ef | grep pmon\noracle    2322     1  0 15:44 ?        00:00:00 ora_pmon_TALAMO\noracle    4761  3076  0 15:57 pts\/0    00:00:00 grep --color=auto pmon\n&#x5B;oracle@oel8 dados]$ mkdir -p \/oracle\/dados\/RMANDB\/datafile\n<\/pre><\/div>\n\n\n<p>Na m\u00e1quina de origem, vou disparar o SQL din\u00e2mico abaixo para gerar os comandos de c\u00f3pia de todos os datafiles:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \\&quot;wp-block-syntaxhighlighter-code\\&quot;\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nSQL&gt; SET PAGESIZE 20\nSQL&gt; SET LINESIZE 200\nSQL&gt; SELECT &#039;scp -p &#039; || NAME || &#039; oracle@192.168.0.106:\/oracle\/dados\/RMANDB\/datafile&#039; as SCP FROM V$DATAFILE ORDER BY 1;\n \nSCP\n--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\nscp -p \/oracle\/dados\/RMANDB\/datafile\/o1_mf_sysaux_h8nyq35q_.dbf oracle@192.168.0.106:\/oracle\/dados\/RMANDB\/datafile\nscp -p \/oracle\/dados\/RMANDB\/datafile\/o1_mf_system_h8nynqfx_.dbf oracle@192.168.0.106:\/oracle\/dados\/RMANDB\/datafile\nscp -p \/oracle\/dados\/RMANDB\/datafile\/o1_mf_undotbs1_h8nyrjdr_.dbf oracle@192.168.0.106:\/oracle\/dados\/RMANDB\/datafile\nscp -p \/oracle\/dados\/RMANDB\/datafile\/o1_mf_users_h8nyrkn7_.dbf oracle@192.168.0.106:\/oracle\/dados\/RMANDB\/datafile\nscp -p \/oracle\/dados\/RMANDB\/datafile\/ts_cortex_catalog.dbf oracle@192.168.0.106:\/oracle\/dados\/RMANDB\/datafile\n \nSQL&gt;\n<\/pre><\/div>\n\n\n<p>Baixando o banco de origem:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \\&quot;wp-block-syntaxhighlighter-code\\&quot;\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nSQL&gt; SHU IMMEDIATE;\nDatabase closed.\nDatabase dismounted.\nORACLE instance shut down.\n<\/pre><\/div>\n\n\n<p>Realizando a c\u00f3pia dos arquivos:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \\&quot;wp-block-syntaxhighlighter-code\\&quot;\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n&#x5B;oracle@oel8 datafile]$ scp -p \/oracle\/dados\/RMANDB\/datafile\/o1_mf_sysaux_h8nyq35q_.dbf oracle@192.168.0.106:\/oracle\/dados\/RMANDB\/datafile\noracle@192.168.0.106&#039;s password:\no1_mf_sysaux_h8nyq35q_.dbf                                                                            100%  630MB  42.8MB\/s   00:14\n&#x5B;oracle@oel8 datafile]$ scp -p \/oracle\/dados\/RMANDB\/datafile\/o1_mf_system_h8nynqfx_.dbf oracle@192.168.0.106:\/oracle\/dados\/RMANDB\/datafile\noracle@192.168.0.106&#039;s password:\no1_mf_system_h8nynqfx_.dbf                                                                            100%  860MB  49.1MB\/s   00:17\n&#x5B;oracle@oel8 datafile]$ scp -p \/oracle\/dados\/RMANDB\/datafile\/o1_mf_undotbs1_h8nyrjdr_.dbf oracle@192.168.0.106:\/oracle\/dados\/RMANDB\/datafile\noracle@192.168.0.106&#039;s password:\no1_mf_undotbs1_h8nyrjdr_.dbf                                                                          100%  305MB  40.6MB\/s   00:07\n&#x5B;oracle@oel8 datafile]$ scp -p \/oracle\/dados\/RMANDB\/datafile\/o1_mf_users_h8nyrkn7_.dbf oracle@192.168.0.106:\/oracle\/dados\/RMANDB\/datafile\noracle@192.168.0.106&#039;s password:\no1_mf_users_h8nyrkn7_.dbf                                                                             100% 5128KB  46.3MB\/s   00:00\n&#x5B;oracle@oel8 datafile]$ scp -p \/oracle\/dados\/RMANDB\/datafile\/ts_cortex_catalog.dbf oracle@192.168.0.106:\/oracle\/dados\/RMANDB\/datafile\noracle@192.168.0.106&#039;s password:\nts_cortex_catalog.dbf                                                                                 100%  200MB  57.6MB\/s   00:03\n&#x5B;oracle@oel8 datafile]$\n<\/pre><\/div>\n\n\n<p>Checando compatibilidade do PDB com o CDB:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \\&quot;wp-block-syntaxhighlighter-code\\&quot;\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n&#x5B;oracle@oel8 dados]$ sqlplus \/ as sysdba\n \nSQL*Plus: Release 18.0.0.0.0 - Production on Sat Mar 20 16:06:22 2021\nVersion 18.13.0.0.0\n \nCopyright (c) 1982, 2018, Oracle.  All rights reserved.\n \n \nConnected to:\nOracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production\nVersion 18.13.0.0.0\n \nSQL&gt; SET SERVEROUTPUT ON\nbegin\n        IF DBMS_PDB.CHECK_PLUG_COMPATIBILITY( PDB_DESCR_FILE =&gt;\n                &#039;\/home\/oracle\/RMANDB.xml&#039;, PDB_NAME =&gt; &#039;BSS&#039;) THEN\n                DBMS_OUTPUT.PUT_LINE(&#039;COMPATIBLE&#039;);\n        ELSE\n                DBMS_OUTPUT.PUT_LINE(&#039;NOT COMPATIBLE&#039;);\n        END IF;\nend;\n\/SQL&gt;   2    3    4    5    6    7    8    9\nNOT COMPATIBLE\n \nPL\/SQL procedure successfully completed.\n<\/pre><\/div>\n\n\n<p>Percebo que a falta de compatibilidade acontece pois na origem possui um 18.3.0.0.0, e no destino um 18.13.0.0.0 (apesar de acontecer alguns Warning devido diferen\u00e7a de valores de par\u00e2metros entre os ambientes, como SGA). A View me reporta:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \\&quot;wp-block-syntaxhighlighter-code\\&quot;\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nWarning: Non-CDB to PDB (PDB plugged in is a non-CDB, requires noncdb_to_pdb.sql be run.)\nWarning: Parameter (CDB parameter nls_date_format mismatch: Previous &#039;YYYY-MM-DD:HH24:MI:SS&#039; Current)\nWarning: Parameter (CDB parameter sga_target mismatch: Previous 1536M Current 2352M)\nWarning: Parameter (CDB parameter pga_aggregate_target mismatch: Previous 512M Current 781M)\nSQL Patch: Error (&#039;18.3.0.0.0 Release_Update 1806280943&#039; is installed in the CDB but &#039;18.3.0.0.0 Release_Update 180628094&#039; is installed in the PDB)\n<\/pre><\/div>\n\n<p>Em vez de aplicar um contorno igual <a href=\"https:\/\/swiv.com.br\/solved-issue-18-3-0-0-0-release_update-1806280943-is-installed-in-the-cdb-but-18-3-0-0-0-release_update-180628094-is-installed-in-the-pdb\/\" target=\"\\&quot;_blank\\&quot;\" rel=\"\\&quot;noreferrer noopener\" noopener=\"\">ESTE <\/a>artigo que fiz, vou aplicar logo o PSU JAN21 na origem. Ap\u00f3s isso, farei novamente o processo de gera\u00e7\u00e3o de XML e check de compatibilidade:<\/p>\n\n<div class=\"wp-block-syntaxhighlighter-code \\&quot;wp-block-syntaxhighlighter-code\\&quot;\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n&#x5B;oracle@oel8 OPatch]$ cd $ORACLE_HOME\/OPatch\n&#x5B;oracle@oel8 OPatch]$ ps -ef | grep pmon\noracle   17962     1  0 16:38 ?        00:00:00 ora_pmon_RMANDB\noracle   18666  2452  0 16:39 pts\/0    00:00:00 grep --color=auto pmon\n&#x5B;oracle@oel8 OPatch]$ .\/opatch lsinventory | grep escript\nARU platform description:: Linux x86-64\nPatch description:  &quot;Database Release Update : 18.13.0.0.210119 (32204699)&quot;\nPatch description:  &quot;OJVM RELEASE UPDATE: 18.3.0.0.180717 (27923415)&quot;\nPatch description:  &quot;OCW RELEASE UPDATE 18.3.0.0.0 (28090553)&quot;\n<\/pre><\/div>\n\n\n<p>Ap\u00f3s gerar novamente o arquivo XML (omiti aqui para n\u00e3o ficar redundante), rodando novamente o check:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \\&quot;wp-block-syntaxhighlighter-code\\&quot;\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nSQL&gt; SET SERVEROUTPUT ON\nbegin\n        IF DBMS_PDB.CHECK_PLUG_COMPATIBILITY( PDB_DESCR_FILE =&gt;\n                &#039;\/home\/oracle\/RMANDB.xml&#039;, PDB_NAME =&gt; &#039;BSS&#039;) THEN\n                DBMS_OUTPUT.PUT_LINE(&#039;COMPATIBLE&#039;);\n        ELSE\n                DBMS_OUTPUT.PUT_LINE(&#039;NOT COMPATIBLE&#039;);\n        END IF;\nend;\n\/SQL&gt;   2    3    4    5    6    7    8    9\nCOMPATIBLE\n \nPL\/SQL procedure successfully completed.\n<\/pre><\/div>\n\n\n<p>Criando efetivamente o novo PDB:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \\&quot;wp-block-syntaxhighlighter-code\\&quot;\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nSQL&gt; CREATE PLUGGABLE DATABASE BSS USING &#039;\/home\/oracle\/RMANDB.xml&#039;;\n \nPluggable database created.\n<\/pre><\/div>\n\n\n<p>Realizando a convers\u00e3o de banco non-CDB para PDB:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \\&quot;wp-block-syntaxhighlighter-code\\&quot;\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nSQL&gt; ALTER SESSION SET CONTAINER=BSS;\n \nSession altered.\n \nSQL&gt; @$ORACLE_HOME\/rdbms\/admin\/noncdb_to_pdb.sql\nSQL&gt; SET FEEDBACK 1\nSQL&gt; SET NUMWIDTH 10\nSQL&gt; SET LINESIZE 80\nSQL&gt; SET TRIMSPOOL ON\nSQL&gt; SET TAB OFF\nSQL&gt; SET PAGESIZE 100\nSQL&gt; SET VERIFY OFF\nSQL&gt;\nSQL&gt; -- save settings\nSQL&gt; STORE SET ncdb2pdb.settings.sql REPLACE\nWrote file ncdb2pdb.settings.sql\n \n...\n \nSQL&gt; set timing OFF\nSQL&gt; set trimout ON\nSQL&gt; set trimspool ON\nSQL&gt; set underline &quot;-&quot;\nSQL&gt; set verify OFF\nSQL&gt; set wrap ON\nSQL&gt; set xmloptimizationcheck OFF\n<\/pre><\/div>\n\n\n<p>Abrindo o novo PDB e validando.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \\&quot;wp-block-syntaxhighlighter-code\\&quot;\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nSQL&gt; ALTER SESSION SET CONTAINER=CDB$ROOT;\n \nSession altered.\n \nSQL&gt; ALTER PLUGGABLE DATABASE BSS OPEN;\n \nPluggable database altered.\n \nSQL&gt; SELECT NAME,OPEN_MODE FROM V$PDBS;\n \nNAME\n--------------------------------------------------------------------------------\nOPEN_MODE\n----------\nPDB$SEED\nREAD ONLY\n \nHIPOFISE1\nMOUNTED\n \nHIPOFISE2\nREAD WRITE\n \nBSS\nREAD WRITE\n \n \n4 rows selected.\n<\/pre><\/div>\n\n\n<p>Obs: Este procedimento foi criado pelo senhor Ahmed Baraka (www.ahmedbaraka.com) e foi apenas reproduzido por mim em um laborat\u00f3rio pessoal para fins de aprendizado.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Neste artigo vou simular a cria\u00e7\u00e3o de um PDB utilizando a DBMS_PDB. No ambiente de origem (Non-CDB), vou deixar o banco de dados em read only: Gerando o arquivo XML com os dados do banco de dados a partir da DBMS_PDB: Copiando o arquivo gerado da m\u00e1quina de origem para a m\u00e1quina de destino: No [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-2951","post","type-post","status-publish","format-standard","hentry","category-multitenant"],"_links":{"self":[{"href":"https:\/\/swiv.com.br\/index.php\/wp-json\/wp\/v2\/posts\/2951","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/swiv.com.br\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/swiv.com.br\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/swiv.com.br\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/swiv.com.br\/index.php\/wp-json\/wp\/v2\/comments?post=2951"}],"version-history":[{"count":1,"href":"https:\/\/swiv.com.br\/index.php\/wp-json\/wp\/v2\/posts\/2951\/revisions"}],"predecessor-version":[{"id":9214,"href":"https:\/\/swiv.com.br\/index.php\/wp-json\/wp\/v2\/posts\/2951\/revisions\/9214"}],"wp:attachment":[{"href":"https:\/\/swiv.com.br\/index.php\/wp-json\/wp\/v2\/media?parent=2951"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/swiv.com.br\/index.php\/wp-json\/wp\/v2\/categories?post=2951"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/swiv.com.br\/index.php\/wp-json\/wp\/v2\/tags?post=2951"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}