Tenho banco de dados oracle Oracle Database 12c Enterprise Edition 12.2.0.1.0, e criei um banco de dados plugável chamado DEVDB para usá-lo no desenvolvimento de aplicações web, criei usando o Database Configuration Assistant, durante o processo de criação criei um usuário/senha para conectar a esse banco de dados, modifiquei o arquivo tnsnames.ora adicionando isto:
DEVDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = devdb)
)
)
Usando o DBeaver ou o desenvolvedor SQL, posso me conectar ao PDB com sucesso, como você pode ver na imagem:
mas quando tento me conectar ao banco de dados tentando isso na linha de comando do sqlplus:
sql> conn user/password@DEVDB
Eu recebi a seguinte mensagem de erro:
ERROR:
ORA-12154: TNS:could not resolve the connect identifier specified
Warning: You are no longer connected to ORACLE.
Este é show pdbs
o resultado do comando:
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCLPDB READ WRITE NO
4 DEVDB READ WRITE NO
Eu recarreguei lsnrctl
muitas vezes e tentei novamente, mas recebo o mesmo erro.
Eu gostaria de poder conectar o PDB da linha de comando sqlplus e entender a causa desse erro
Alguma ajuda por favor??
O banco de dados conectável (PDB) está online?
Conecte-se ao banco de dados do contêiner ao qual você anexou o PDB. Emita este comando SQL:
show pdbs;
Isso deve listar todos os seus bancos de dados plugáveis (incluindo o PDB de semente) e em que estado eles estão.Você pode iniciar o banco de dados DevDB por meio deste comando:
alter pluggable database DEVDB open;
Se isso funcionar e o banco de dados abrir e ficar online, você pode dizer ao Oracle para "lembrar" desse estado por meio de:
alter pluggable database DEVDB save state;
Se, no entanto, o banco de dados não ficar online por meio do comando alter...open, verifique se
select * from PDB_PLUG_IN_VIOLATIONS;
há possíveis problemas.Pelas suas edições, vejo que o PDB está ativo e disponível. Tente se conectar ao DEVDB de outro computador?
Quando você se conecta ao contêiner, você pode alternar seu contexto para o PDB via
alter session set container = DEVDB;
Em meus ambientes Oracle 12, não tenho os PDBs listados explicitamente no arquivo TNSNames do servidor (apenas o banco de dados do contêiner). Em PCs clientes, listo o PDB no arquivo TNSNAMES.
No servidor, eu uso a variável de ambiente ORACLE_SID e não uso o @service, então:
Set ORACLE_SID=DEVDB
e entãosqlplus user/pwd
(Mas isso é em ambiente Windows.)