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"