Je viens d'installer oracle11g, et il manquait le schéma Scott. J'essaye donc de le générer moi-même. J'ai eu le script sql du schéma "Scott", mais quand j'essaye d'exécuter la requête "créer l'utilisateur Scott identifié par tiger;" il affiche l'erreur suivante:
ORA-65096: nom d'utilisateur ou de rôle commun non valide dans oracle.
Fondamentalement, cela ne me permet pas de créer un utilisateur "Scott". Pourquoi cela et comment puis-je résoudre mon problème?
11g
, vous devriez l'être12c
.Réponses:
99,9% du temps, l'erreur
ORA-65096: invalid common user or role name
signifie que vous êtes connecté à la CDB alors que vous devez être connecté à une PDB.Mais si vous insistez pour créer des utilisateurs dans le mauvais sens, suivez les étapes ci-dessous.
DANGER
La définition de paramètres non documentés comme celui-ci (comme indiqué par le trait de soulignement principal) ne doit être effectuée que sous la direction d'Oracle Support. La modification de ces paramètres sans ces conseils peut invalider votre contrat de support. Alors faites-le à vos risques et périls.
Plus précisément, si vous définissez
"_ORACLE_SCRIPT"=true
, certaines modifications du dictionnaire de données seront apportées avec la colonne ORACLE_MAINTAINED définie sur «Y». Ces utilisateurs et objets seront exclus à tort de certains scripts DBA. Et ils peuvent être incorrectement inclus dans certains scripts système.Si vous êtes d'accord avec les risques ci-dessus et que vous ne souhaitez pas créer des utilisateurs communs de la bonne manière, utilisez la réponse ci-dessous.
Avant de créer l'utilisateur, exécutez:
J'ai trouvé la réponse ici
la source
Non, vous avez installé Oracle 12c . Cette erreur ne peut être que activée
12c
et ne peut pas l'être11g
.Vérifiez toujours la version de votre base de données jusqu'à 4 décimales:
La base de données de conteneurs multi-locataires Oracle 12c comprend:
Vous devez avoir créé la base de données en tant que base de données conteneur . Pendant que vous essayez de créer un utilisateur dans le conteneur, c'est-à-dire CDB $ ROOT , vous devez cependant créer l'utilisateur dans la base de données PLUGGABLE .
Vous n'êtes pas censé créer des objets liés à l'application dans le conteneur, le conteneur contient les métadonnées des bases de données enfichables. Vous devez utiliser la base de données enfichable pour vos opérations générales sur la base de données. Sinon, ne le créez pas en tant que conteneur et n'utilisez pas la multi-location . Cependant, à partir de 12cR2, vous ne pouvez pas créer de base de données sans conteneur de toute façon.
Et très probablement, les exemples de schémas ont peut-être déjà été installés, il vous suffit de les déverrouiller dans la base de données enfichable.
Par exemple, si vous avez créé une base de données enfichable en tant que
pdborcl
:Pour afficher les PDB et vous connecter à une base de données enfichable à partir du conteneur racine:
Je suggère de lire les étapes obligatoires de la post-installation d'Oracle 12c
Remarque : les réponses suggérant d'utiliser le
_ORACLE_SCRIPT
paramètre hidden pour définir sur true sont dangereuses dans un système de production et peuvent également invalider votre contrat de support. Attention, sans consulter le support Oracle, n'utilisez PAS de paramètres cachés .la source
Dans Oracle 12c et supérieur, nous avons deux types de bases de données:
Si vous souhaitez créer un utilisateur, vous avez deux possibilités:
Vous pouvez créer un "utilisateur conteneur" aka "utilisateur commun".
Les utilisateurs courants appartiennent aux CBD ainsi qu'aux PDB actuels et futurs. Cela signifie qu'ils peuvent effectuer des opérations dans des DB de conteneur ou des DB enfichables selon les privilèges attribués.
create user c##username identified by password;
Vous pouvez créer un "utilisateur enfichable" aka "utilisateur local".
Les utilisateurs locaux n'appartiennent qu'à un seul PDB. Ces utilisateurs peuvent avoir des privilèges administratifs, mais uniquement pour la PDB dans laquelle ils existent. Pour cela, vous devez vous connecter à un datable enfichable comme ça:
alter session set container = nameofyourpluggabledatabase;
et là, vous pouvez créer un utilisateur comme d'habitude:
create user username identified by password;
N'oubliez pas de spécifier le ou les tablespace (s) à utiliser, cela peut être utile lors de l'import / export de vos bases de données. Voir ceci pour plus d'informations à ce sujet https://docs.oracle.com/database/121/SQLRF/statements_8003.htm#SQLRF01503
la source
la source
Créer une dépendance utilisateur sur les outils de connexion à la base de données
la source
Peut-être, une alternative plus sûre à
"_ORACLE_SCRIPT"=true
est de passer"_common_user_prefix"
deC##
à une chaîne vide. Lorsqu'il est nul - n'importe quel nom peut être utilisé pour un utilisateur commun. Trouvé là-bas .Lors de la modification de cette valeur, vous pouvez être confronté à un autre problème - ORA-02095 - le paramètre ne peut pas être modifié, qui peut être corrigé de plusieurs manières, en fonction de votre configuration ( source ).
Donc pour moi cela a fonctionné:
la source