Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oracle Database12c ORA 01918 e erro de conexão


Como você configurou seu banco de dados? Você marcou a opção para Pluggable database ? Se sim, certifique-se de fazer login no PDB e não CDB .

Leia Oracle 12c Post Installation Mandatory Etapas .

Por padrão, pre-installed usuários como SCOTT , HR etc. reside no container database e não no pluggable database .

tnsnames.ora

Edite seu arquivo tnsnames.ora para adicionar os detalhes do PDB. Por exemplo,
PDBORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = pdborcl)
    )
  )

Abra todos os PDBs

Para abrir todos/os PDBs específicos imediatamente após o logon, crie um APÓS A INICIALIZAÇÃO gatilho de nível de sistema no CDB.

Desde então, os PDBs não são abertos através de uma inicialização de CDB. Vamos ver :
SHUTDOWN IMMEDIATE;
STARTUP;

SQL> SELECT name, open_mode FROM v$pdbs;

NAME                           OPEN_MODE
------------------------------ ----------
PDB$SEED                       READ ONLY
PDBP6                          MOUNTED

Então, para ter todos os PDBs abertos automaticamente, faça o seguinte:

Faça, “SQLPLUS / AS SYSDBA ”, e depois execute:
CREATE OR REPLACE TRIGGER open_pdbs 
  AFTER STARTUP ON DATABASE 
BEGIN 
   EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN'; 
END open_pdbs;
/

Ele cria um gatilho de nível de sistema após a inicialização no CDB.

SQLPLUS / AS SYSDBA

O mal-entendido mais comum é sobre o uso do “SQLPLUS / AS SYSDBA”.

Como marcamos a opção de criar um único CDB , o comando “SQLPLUS / AS SYSDBA” sempre fará login no CDB. Normalmente, os desenvolvedores costumavam desbloquear a conta “SCOTT” diretamente após o login como SYSDBA. Mas aqui está o truque:

"SCOTT" e outros esquemas de amostra estão no PDB e não no CDB . Então, você precisa fazer login como sysdba no PDB.
sqlplus SYS/[email protected] AS SYSDBA

SQL> ALTER USER scott ACCOUNT UNLOCK IDENTIFIED BY tiger;

sqlplus scott/[email protected]

SQL> show user;
USER is "SCOTT"