Managing Multitenant Local Users

Local Users são 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ática, e para evitar confusões, o ideal seria usar o segundo para para os administradores (por exemplo os DBAs) e o primeiro para os schemas de aplicações.

Com a consulta abaixo, podemos checar todos os Local Users criados em algum PDB do root container:

[oracle@quiasma admin]$ sqlplus / as sysdba
 
SQL*Plus: Release 18.0.0.0.0 - Production on Tue Apr 13 03:54:56 2021
Version 18.13.0.0.0
 
Copyright (c) 1982, 2018, Oracle.  All rights reserved.
 
 
Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.13.0.0.0
 
SQL> col pdb_name format a10
SQL> SELECT U.USERNAME, P.PDB_NAME FROM CDB_USERS U, CDB_PDBS P WHERE U.CON_ID = P.CON_ID AND COMMON='NO' ORDER BY 2,1;
 
USERNAME
--------------------------------------------------------------------------------
PDB_NAME
----------
BSS
HIPOFISE1

Para criarmos um Local user, podemos seguir o exemplo seguite:

SQL> ALTER SESSION SET CONTAINER=HIPOFISE1;
 
Session altered.
 
SQL> CREATE USER LOCALUSER IDENTIFIED BY oracle;
 
User created.
 
SQL> GRANT CREATE SESSION TO LOCALUSER;
 
Grant succeeded.

Percebemos que não é possível criar um Common User dentro de um PDB. Para isso, devemos criá-lo dentro do root container:

SQL> CREATE USER C##BRUNO3 IDENTIFIED BY oracle CONTAINER=ALL;
CREATE USER C##BRUNO3 IDENTIFIED BY oracle CONTAINER=ALL
*
ERROR at line 1:
ORA-65050: Common DDLs only allowed in root.

Realizando o teste de conexão com o LOCALUSER. Notamos que só é possível conectar no PDB que foi a origem de sua criação:

[oracle@quiasma admin]$ sqlplus LOCALUSER/oracle@HIPOFISE1
 
SQL*Plus: Release 18.0.0.0.0 - Production on Tue Apr 13 04:05:36 2021
Version 18.13.0.0.0
 
Copyright (c) 1982, 2018, Oracle.  All rights reserved.
 
 
Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.13.0.0.0
 
SQL> SHOW USER;
USER is "LOCALUSER"
SQL>
SQL> conn LOCALUSER/oracle@TALAMO
ERROR:
ORA-01017: invalid username/password; logon denied
 
 
Warning: You are no longer connected to ORACLE.
SQL>

Obs: Este procedimento foi criado pelo senhor Ahmed Baraka (www.ahmedbaraka.com) e foi apenas reproduzido por mim em um laboratório pessoal para fins de aprendizado.

Leave a Comment

Your email address will not be published.