¿Cómo configuraste tu base de datos? ¿Marcó la opción para Pluggable database
? ? En caso afirmativo, asegúrese de iniciar sesión en PDB
y no CDB
.
Lea Obligatorio después de la instalación de Oracle 12c Pasos .
Por defecto, pre-installed
usuarios como SCOTT
, HR
etc. reside en container database
y no en pluggable database
.
tnsnames.ora
Edite su archivo tnsnames.ora para agregar los detalles de PDB. Por ejemplo,
PDBORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = pdborcl)
)
)
Abrir todos los PDB
Para abrir todos los PDB específicos inmediatamente después de iniciar sesión, cree un DESPUÉS DEL INICIO disparador de nivel de sistema en CDB.
Dado que los PDB no se abren a través de un inicio de CDB. Veamos:
SHUTDOWN IMMEDIATE;
STARTUP;
SQL> SELECT name, open_mode FROM v$pdbs;
NAME OPEN_MODE
------------------------------ ----------
PDB$SEED READ ONLY
PDBP6 MOUNTED
Entonces, para que todos los PDB se abran automáticamente, haga esto:
Haga, “SQLPLUS / AS SYSDBA
”, y luego ejecute:
CREATE OR REPLACE TRIGGER open_pdbs
AFTER STARTUP ON DATABASE
BEGIN
EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN';
END open_pdbs;
/
Crea un activador de nivel de sistema posterior al inicio en CDB.
SQLPLUS/AS SYSDBA
El malentendido más común es sobre el uso de "SQLPLUS / AS SYSDBA".
Ya que hemos marcado la opción de crear un único CDB , el comando "SQLPLUS / AS SYSDBA" siempre iniciará sesión en CDB. Por lo general, los desarrolladores solían desbloquear la cuenta "SCOTT" directamente después de iniciar sesión como SYSDBA. Pero aquí está el truco:
“SCOTT” y otros esquemas de muestra están en el PDB y no en el CDB . Por lo tanto, debe iniciar sesión como sysdba en 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"