Si vous obtenez l’erreur ORA-65096 après une commande CREATE USER c’est que vous êtes sur une instance oracle 12c multinenant et que vous tentez de créer un user local dans le root container. Le multitenant de la 12c intègre une nouvelle différenciation entre les users dits "communs" et les users dits "locaux". Le local user est celui qui est créé sous une pluggable database (PDB) et dont les privilèges sont limités à cette PDB alors que le common user est celui créé sous le container root et dont les privilèges peuvent s’appliquer sur toutes les PDBs.
Voici un exemple pour bien comprendre :
Disons que j’ai besoin de créer un user AHMED dans ma base de données 12c multitenant. En 11g ou avec une base non-multitenant je n’ai qu’à me connecter en sys et exécuter une commande de type CREATE USER mais si j’agis de la même manière sur ma base multitenant voilà ce que j’obtiens :
Voici un exemple pour bien comprendre :
Disons que j’ai besoin de créer un user AHMED dans ma base de données 12c multitenant. En 11g ou avec une base non-multitenant je n’ai qu’à me connecter en sys et exécuter une commande de type CREATE USER mais si j’agis de la même manière sur ma base multitenant voilà ce que j’obtiens :
C:\Ahmed\Scripts\sqlplus>sqlplus / as sysdba SQL*Plus: Release 12.1.0.2.0 Production on Jeu. Juil. 23 09:21:41 2015 Copyright (c) 1982, 2014, Oracle. All rights reserved. Connecté : Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options SQL> show user USER est "SYS" SQL> create user ahmed identified by "ahmed#1" container=current; create user ahmed identified by "ahmed#1" container=current * ERROR at line 1: ORA-65049: creation of local user or role is not allowed in CDB$ROOT SQL> create user ahmed identified by "ahmed#1" container=all; create user ahmed identified by "ahmed#1" container=all * ERROR at line 1: ORA-65096: invalid common user or role name
J’obtiens un message d’erreur qui me dit qu’il m’est impossible de créer un local user ou un role sous le container root. En effet, si j’affiche le nom du container je m’aperçois que je suis bien sous le ROOT :
SQL> show con_name CON_NAME ------------------------------ CDB$ROOT
Si je souhaite créer un user pour une PDB en particulier alors je dois me connecter à cette PDB et créér un user qui sera local :
SQL> alter session set container=PDB1; Session altered. SQL> show con_name CON_NAME -------------------- PDB1 SQL> create user ahmed identified by "ahmed#1"; User created.
Cette fois-ci mon user AHMED a bien été créé.
Si j’avais voulu créé un common user c’est-à-dire un user se trouvant dans le container ROOT, j’aurais dû préfixer le nom du user par c## :
Si j’avais voulu créé un common user c’est-à-dire un user se trouvant dans le container ROOT, j’aurais dû préfixer le nom du user par c## :
SQL> show user USER est "SYS" SQL> sho con_name CON_NAME ---------------------- CDB$ROOT SQL> create user c##ahmed identified by "ahmed#1"; User created.
Ce dernier sujet est parfaitement du cours oracle database 12c,
RépondreSupprimerUn sujet très important qui n'a jamais été traité au niveau Performance et Tuning, c'est
AMELIORATION DES REQEUTES SQL avec --> les materialized views, que vous n'avez jamais traité dans un context professionnel ?
merci quand même pour tous les autres sujets !
Hello Ahmed... Et disons que que je suis borné (en fait juste DBA), et que j'ai pas envie de changé ma norme sur des user (genre compte de service, ou d'admin qui tournent sur des versions antérieures..)
RépondreSupprimeralter session set "_ORACLE_SCRIPT"=true;
create user ahmed identified by "ahmed#1";
User created.
Bon ok.. c'est mal d'utilisé des paramètres cachés.
bonjour la communauté thanks a lot , it is very helpful
RépondreSupprimerbonjour j ai tous essayer et reste le meme probleme
RépondreSupprimerMerci beaucoup, mes étapes ont donc été sur SQL Plus :
RépondreSupprimer1) login : SYSTEM
2) mdp : ��
Connecté !
3) alter session set "_ORACLE_SCRIPT"=true;
Session modifiée !
4) create user test identified by test;
Utilisateur créé !
merci
Supprimermerciii
RépondreSupprimer