sql >> Base de Datos >  >> RDS >> Oracle

Oracle Database12c ORA 01918 y error de conexión

¿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"