Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle Database12c ORA 01918 ed errore di connessione

Come hai configurato il tuo database? Hai selezionato l'opzione per Pluggable database ? Se sì, assicurati di accedere a PDB e non CDB .

Si prega di leggere Oracle 12c Post installazione obbligatoria Passi .

Per impostazione predefinita, pre-installed agli utenti piace SCOTT , HR ecc. risiedono in container database e non in pluggable database .

tnsnames.ora

Modifica il tuo file tnsnames.ora per aggiungere i dettagli PDB. Ad esempio,

PDBORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = pdborcl)
    )
  )

Apri tutti i PDB

Per aprire tutti/specifici PDB subito dopo l'accesso, crea un AFTER STARTUP trigger a livello di sistema in CDB.

Poiché, i PDB non sono aperti tramite un avvio CDB. Vediamo :

SHUTDOWN IMMEDIATE;
STARTUP;

SQL> SELECT name, open_mode FROM v$pdbs;

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

Quindi, per avere tutti i PDB aperti automaticamente, fai questo :

Fare, "SQLPLUS / AS SYSDBA ”, e quindi eseguire :

CREATE OR REPLACE TRIGGER open_pdbs 
  AFTER STARTUP ON DATABASE 
BEGIN 
   EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN'; 
END open_pdbs;
/

Crea un trigger a livello di sistema dopo l'avvio in CDB.

SQLPLUS/AS SYSDBA

Il malinteso più comune riguarda l'utilizzo di "SQLPLUS / AS SYSDBA".

Poiché abbiamo selezionato l'opzione per creare un singolo CDB , il comando "SQLPLUS / AS SYSDBA" accederà sempre a CDB. Di solito gli sviluppatori sbloccavano l'account "SCOTT" direttamente dopo aver effettuato l'accesso come SYSDBA. Ma ecco il trucco :

"SCOTT" e altri schemi di esempio si trovano nel PDB e non nel CDB . Quindi, devi accedere come sysdba in 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"