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/example@sqldat.com AS SYSDBA
SQL> ALTER USER scott ACCOUNT UNLOCK IDENTIFIED BY tiger;
sqlplus scott/example@sqldat.com
SQL> show user;
USER is "SCOTT"