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.