{"id":3739,"date":"2021-04-13T07:09:39","date_gmt":"2021-04-13T07:09:39","guid":{"rendered":"https:\/\/swiv.com.br\/managing-multitenant-local-users\/"},"modified":"2026-05-27T20:02:33","modified_gmt":"2026-05-27T19:02:33","slug":"managing-multitenant-local-users","status":"publish","type":"post","link":"https:\/\/swiv.com.br\/index.php\/2021\/04\/13\/managing-multitenant-local-users\/","title":{"rendered":"Managing Multitenant Local Users"},"content":{"rendered":"\n<p>Local Users s\u00e3o criados especificamente dentro de um PDB, para uso limitado dentro do mesmo. No PDB, poderemos ter tanto Local Users quanto Common Users. Como boa pr\u00e1tica, e para evitar confus\u00f5es, o ideal seria usar o segundo para para os administradores (por exemplo os DBAs) e o primeiro para os schemas de aplica\u00e7\u00f5es. <\/p>\n\n\n\n<p>Com a consulta abaixo, podemos checar todos os Local Users criados em algum PDB do root container:<\/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@quiasma admin]$ sqlplus \/ as sysdba\n \nSQL*Plus: Release 18.0.0.0.0 - Production on Tue Apr 13 03:54:56 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; col pdb_name format a10\nSQL&gt; SELECT U.USERNAME, P.PDB_NAME FROM CDB_USERS U, CDB_PDBS P WHERE U.CON_ID = P.CON_ID AND COMMON=&#039;NO&#039; ORDER BY 2,1;\n \nUSERNAME\n--------------------------------------------------------------------------------\nPDB_NAME\n----------\nBSS\nHIPOFISE1\n<\/pre><\/div>\n\n\n<p>Para criarmos um Local user, podemos seguir o exemplo seguite:<\/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=HIPOFISE1;\n \nSession altered.\n \nSQL&gt; CREATE USER LOCALUSER IDENTIFIED BY oracle;\n \nUser created.\n \nSQL&gt; GRANT CREATE SESSION TO LOCALUSER;\n \nGrant succeeded.\n<\/pre><\/div>\n\n\n<p>Percebemos que n\u00e3o \u00e9 poss\u00edvel criar um Common User dentro de um PDB. Para isso, devemos cri\u00e1-lo dentro do root container:<\/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 USER C##BRUNO3 IDENTIFIED BY oracle CONTAINER=ALL;\nCREATE USER C##BRUNO3 IDENTIFIED BY oracle CONTAINER=ALL\n*\nERROR at line 1:\nORA-65050: Common DDLs only allowed in root.\n<\/pre><\/div>\n\n\n<p>Realizando o teste de conex\u00e3o com o LOCALUSER. Notamos que s\u00f3 \u00e9 poss\u00edvel conectar no PDB que foi a origem de sua cria\u00e7\u00e3o:<\/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@quiasma admin]$ sqlplus LOCALUSER\/oracle@HIPOFISE1\n \nSQL*Plus: Release 18.0.0.0.0 - Production on Tue Apr 13 04:05:36 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; SHOW USER;\nUSER is &quot;LOCALUSER&quot;\nSQL&gt;\nSQL&gt; conn LOCALUSER\/oracle@TALAMO\nERROR:\nORA-01017: invalid username\/password; logon denied\n \n \nWarning: You are no longer connected to ORACLE.\nSQL&gt;\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>Local Users s\u00e3o criados especificamente dentro de um PDB, para uso limitado dentro do mesmo. No PDB, poderemos ter tanto Local Users quanto Common Users. Como boa pr\u00e1tica, e para evitar confus\u00f5es, o ideal seria usar o segundo para para os administradores (por exemplo os DBAs) e o primeiro para os schemas de aplica\u00e7\u00f5es. Com [&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-3739","post","type-post","status-publish","format-standard","hentry","category-multitenant"],"_links":{"self":[{"href":"https:\/\/swiv.com.br\/index.php\/wp-json\/wp\/v2\/posts\/3739","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=3739"}],"version-history":[{"count":1,"href":"https:\/\/swiv.com.br\/index.php\/wp-json\/wp\/v2\/posts\/3739\/revisions"}],"predecessor-version":[{"id":9175,"href":"https:\/\/swiv.com.br\/index.php\/wp-json\/wp\/v2\/posts\/3739\/revisions\/9175"}],"wp:attachment":[{"href":"https:\/\/swiv.com.br\/index.php\/wp-json\/wp\/v2\/media?parent=3739"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/swiv.com.br\/index.php\/wp-json\/wp\/v2\/categories?post=3739"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/swiv.com.br\/index.php\/wp-json\/wp\/v2\/tags?post=3739"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}