Ich habe gerade oracle11g installiert und es fehlte das Scott-Schema. Also versuche ich es selbst zu generieren. Ich habe das SQL-Skript des Schemas "Scott" erhalten, aber wenn ich versuche, die Abfrage "Benutzer Scott erstellen, der vom Tiger identifiziert wurde" auszuführen. Es wird der folgende Fehler angezeigt:
ORA-65096: Ungültiger allgemeiner Benutzer- oder Rollenname in Oracle.
Grundsätzlich erlaubt es mir nicht, einen Benutzer "Scott" zu erstellen. Warum ist das so und wie kann ich mein Problem beheben?
11g
, du solltest dran sein12c
.Antworten:
ACHTUNG
Das Festlegen von undokumentierten Parametern wie diesem (wie durch den führenden Unterstrich angegeben) sollte nur unter Anleitung des Oracle-Supports erfolgen. Das Ändern solcher Parameter ohne diese Anleitung kann Ihren Supportvertrag ungültig machen. Tun Sie dies also auf eigenes Risiko.
Wenn Sie festlegen
"_ORACLE_SCRIPT"=true
, werden einige Änderungen am Datenwörterbuch vorgenommen, wobei die Spalte ORACLE_MAINTAINED auf 'Y' gesetzt ist. Diese Benutzer und Objekte werden von einigen DBA-Skripten fälschlicherweise ausgeschlossen. Und sie sind möglicherweise in einigen Systemskripten falsch enthalten.Wenn Sie mit den oben genannten Risiken einverstanden sind und keine normalen Benutzer auf die richtige Weise erstellen möchten, verwenden Sie die folgende Antwort.
Bevor Sie den Benutzer erstellen, führen Sie Folgendes aus:
Ich habe die Antwort hier gefunden
quelle
Nein, Sie haben Oracle 12c installiert . Dieser Fehler konnte nur aktiviert sein
12c
und kann nicht aktiviert sein11g
.Überprüfen Sie Ihre Datenbankversion immer mit bis zu 4 Dezimalstellen:
Die Oracle 12c-Containerdatenbank mit mehreren Mandanten verfügt über:
Sie müssen die Datenbank als Containerdatenbank erstellt haben . Während Sie versuchen, einen Benutzer im Container zu erstellen, dh CDB $ ROOT , sollten Sie den Benutzer jedoch in der PLUGGABLE-Datenbank erstellen .
Sie dürfen keine anwendungsbezogenen Objekte im Container erstellen, der Container enthält die Metadaten für die steckbaren Datenbanken. Sie sollten die steckbare Datenbank für Ihre allgemeinen Datenbankoperationen verwenden. Andernfalls erstellen Sie es nicht als Container und verwenden Sie keine Mandantenfähigkeit . Ab 12cR2 können Sie jedoch ohnehin keine Nicht-Container-Datenbank erstellen.
Und höchstwahrscheinlich wurden die Beispielschemata bereits installiert. Sie müssen sie nur in der steckbaren Datenbank entsperren .
Wenn Sie beispielsweise eine steckbare Datenbank erstellt haben als
pdborcl
:So zeigen Sie die PDBs an und stellen vom Root-Container aus eine Verbindung zu einer steckbaren Datenbank her:
Ich empfehle, die obligatorischen Schritte für Oracle 12c nach der Installation zu lesen
Hinweis : Antworten, die vorschlagen, den
_ORACLE_SCRIPT
versteckten Parameter auf true zu setzen, sind in einem Produktionssystem gefährlich und können auch Ihren Supportvertrag ungültig machen. Beachten Sie, dass Sie ohne Rücksprache mit dem Oracle-Support KEINE versteckten Parameter verwenden dürfen .quelle
In Oracle 12c und höher gibt es zwei Arten von Datenbanken:
Wenn Sie einen Benutzer erstellen möchten, haben Sie zwei Möglichkeiten:
Sie können einen "Container-Benutzer" oder "Common User" erstellen.
Gemeinsame Benutzer gehören zu CBDs sowie zu aktuellen und zukünftigen PDBs. Dies bedeutet, dass sie Operationen in Container-DBs oder steckbaren DBs gemäß den zugewiesenen Berechtigungen ausführen können.
create user c##username identified by password;
Sie können einen "steckbaren Benutzer" oder "lokalen Benutzer" erstellen.
Lokale Benutzer gehören nur zu einem einzelnen PDB. Diese Benutzer erhalten möglicherweise Administratorrechte, jedoch nur für den PDB, in dem sie vorhanden sind. Dazu sollten Sie sich wie folgt mit steckbaren Daten verbinden:
alter session set container = nameofyourpluggabledatabase;
und dort können Sie Benutzer wie gewohnt erstellen:
create user username identified by password;
Vergessen Sie nicht, die zu verwendenden Tabellenbereiche anzugeben. Dies kann beim Import / Export Ihrer DBs hilfreich sein. Weitere Informationen hierzu finden Sie unter https://docs.oracle.com/database/121/SQLRF/statements_8003.htm#SQLRF01503
quelle
Erstellen Sie eine Benutzerabhängigkeit von den Datenbankverbindungstools
quelle
Möglicherweise ist es sicherer
"_ORACLE_SCRIPT"=true
,"_common_user_prefix"
vonC##
einer leeren Zeichenfolge zu wechseln . Wenn es null ist, kann ein beliebiger Name für einen normalen Benutzer verwendet werden. Gefunden dort .Während Sie diesen Wert ändern, tritt möglicherweise ein anderes Problem auf - ORA-02095 - Der Parameter kann nicht geändert werden. Dieser Parameter kann je nach Konfiguration ( Quelle ) auf verschiedene Arten behoben werden .
Also für mich hat das funktioniert:
quelle
Sitzungssatz ändern "_ORACLE_SCRIPT" = true;
Benutzer sec_admin erstellen, identifiziert durch "Chutinhbk123 @!";
quelle