Estou lutando para me conectar a um banco de dados conectável para o qual criei usuários locais.
Eu tenho um Oracle 21c XE na minha máquina. O CDB é XE. Eu loguei no SID=XE com sys como sysdba. Lá criei um PDB da seguinte forma:
create pluggable database GRE
admin user manager identified by manager
roles = (dba)
file_name_convert = ('C:\ORADATA\XE\PDBSEED', 'C:\ORADATA\XE\GRE')
;
ALTER PLUGGABLE DATABASE GRE OPEN;
Então mudei para o banco de dados conectável:
alter session set container = GRE;
select sys_context('USERENV', 'CON_NAME') from dual;
SYS_CONTEXT('USERENV','CON_NAME')
GRE
Em seguida, criei um usuário e atribuí funções e privilégios:
-- USER SQL
CREATE USER "user1" IDENTIFIED BY "user1"
DEFAULT TABLESPACE "DATA"
TEMPORARY TABLESPACE "TEMP" container=current;
-- QUOTAS
ALTER USER "user1" QUOTA UNLIMITED ON "DATA";
-- ROLES
GRANT "CONNECT" TO "user1" ;
GRANT "RESOURCE" TO "user1" ;
ALTER USER "user1" DEFAULT ROLE "CONNECT","RESOURCE";
-- SYSTEM PRIVILEGES
GRANT DROP ANY MATERIALIZED VIEW TO "user1" ;
GRANT CREATE ANY SYNONYM TO "user1" ;
GRANT DROP ANY SYNONYM TO "user1" ;
GRANT DROP ANY VIEW TO "user1" ;
GRANT CREATE ANY VIEW TO "user1" ;
GRANT CREATE ANY MATERIALIZED VIEW TO "user1" ;
Esta é a saída de lsnrctl status
:
Services Übersicht...
Dienst "541e76d5c7264140b887e5606a1a0486" hat 1 Instanzen.
Instanz "xe", Status READY, hat 2 Handler für diesen Dienst...
Dienst "CLRExtProc" hat 1 Instanzen.
Instanz "CLRExtProc", Status UNKNOWN, hat 1 Handler für diesen Dienst...
Dienst "XE" hat 1 Instanzen.
Instanz "xe", Status READY, hat 2 Handler für diesen Dienst...
Dienst "XEXDB" hat 1 Instanzen.
Instanz "xe", Status READY, hat 1 Handler für diesen Dienst...
Dienst "gre" hat 1 Instanzen.
Instanz "xe", Status READY, hat 2 Handler für diesen Dienst...
Der Befehl wurde erfolgreich ausgeführt.
Pode-se ver que o PDB gre
está disponível.
Quando tento conectar ao PDB usando o usuário local, o login é negado com ORA-01017.
Tentei descobrir como lidar com PDBs e usuários locais, mas não consigo entender como fazer isso funcionar. Talvez eu tenha entendido errado o conceito e precise usar usuários comuns e conectar-se ao CDB primeiro e, a partir daí, alternar para o PDB?