Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle Database12c ORA 01918 et erreur de connexion

Comment as-tu configuré ta base de données ? Avez-vous coché l'option pour Pluggable database ? Si oui, assurez-vous de vous connecter à PDB et non CDB .

Veuillez lire Oracle 12c Post Installation Obligatoire Étapes .

Par défaut, pre-installed des utilisateurs comme SCOTT , HR etc. réside dans container database et non dans la pluggable database .

tnsnames.ora

Modifiez votre fichier tnsnames.ora pour ajouter les détails de l'APB. Par exemple,

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

Ouvrir tous les PDB

Pour ouvrir tous/des PDB spécifiques immédiatement après la connexion, créez un APRÈS LE DÉMARRAGE déclencheur au niveau du système dans CDB.

Depuis, les PDB ne sont pas ouverts via un démarrage CDB. Voyons :

SHUTDOWN IMMEDIATE;
STARTUP;

SQL> SELECT name, open_mode FROM v$pdbs;

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

Donc, pour que tous les PDB s'ouvrent automatiquement, faites ceci :

Faites "SQLPLUS / AS SYSDBA ”, puis exécutez :

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

Il crée un déclencheur au niveau du système après le démarrage dans CDB.

SQLPLUS / AS SYSDBA

Le malentendu le plus courant concerne l'utilisation de "SQLPLUS / AS SYSDBA".

Depuis que nous avons coché l'option de création d'un seul CDB , la commande "SQLPLUS / AS SYSDBA" se connectera toujours à CDB. Habituellement, les développeurs avaient l'habitude de déverrouiller le compte "SCOTT" directement après s'être connecté en tant que SYSDBA. Mais voici l'astuce :

"SCOTT" et d'autres exemples de schémas sont dans la PDB et non dans la CDB . Donc, vous devez vous connecter en tant que sysdba dans 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"