Właśnie zainstalowałem oracle11g i brakowało mu schematu Scotta. Więc próbuję go wygenerować samodzielnie. Mam skrypt sql schematu „Scott”, ale kiedy próbuję uruchomić zapytanie „utwórz użytkownika Scott identyfikowanego przez tygrysa”; wyświetla następujący błąd:
ORA-65096: niepoprawna wspólna nazwa użytkownika lub roli w oracle.
Zasadniczo nie pozwala mi na utworzenie użytkownika „Scott”. Dlaczego tak jest i jak mogę rozwiązać problem?
11g
, powinieneś być włączony12c
.Odpowiedzi:
W 99,9% przypadków błąd
ORA-65096: invalid common user or role name
oznacza, że jesteś zalogowany do CDB, kiedy powinieneś być zalogowany do PDB.Jeśli jednak nalegasz na tworzenie użytkowników w niewłaściwy sposób, wykonaj poniższe czynności.
ZAGROŻENIE
Ustawianie nieudokumentowanych parametrów w ten sposób (na co wskazuje wiodący znak podkreślenia) powinno być wykonywane tylko pod nadzorem Oracle Support. Zmiana takich parametrów bez takich wskazówek może unieważnić umowę serwisową. Więc zrób to na własne ryzyko.
W szczególności, jeśli ustawisz
"_ORACLE_SCRIPT"=true
, niektóre zmiany w słowniku danych zostaną wprowadzone przy kolumnie ORACLE_MAINTAINED ustawionej na „Y”. Ci użytkownicy i obiekty zostaną niepoprawnie wykluczeni z niektórych skryptów DBA. I mogą być nieprawidłowo zawarte w niektórych skryptach systemowych.Jeśli nie masz nic przeciwko powyższemu ryzyku i nie chcesz tworzyć wspólnych użytkowników we właściwy sposób, użyj poniższej odpowiedzi.
Przed utworzeniem użytkownika uruchom:
Tutaj znalazłem odpowiedź
źródło
Nie, zainstalowałeś Oracle 12c . Ten błąd może być tylko włączony
12c
i nie może być włączony11g
.Zawsze sprawdzaj wersję bazy danych do 4 miejsc po przecinku:
Baza danych Oracle 12c dla wielu dzierżawców zawiera:
Baza danych musi być utworzona jako baza danych kontenerów . Podczas gdy próbujesz stworzyć użytkownika w kontenerze, czyli CDB $ ROOT , powinieneś jednak utworzyć go w bazie PLUGGABLE .
Nie należy tworzyć obiektów związanych z aplikacjami w kontenerze, kontener przechowuje metadane dla podłączanych baz danych. Podstawową bazę danych należy używać do wykonywania ogólnych operacji na bazie danych. W przeciwnym razie nie twórz go jako kontenera i nie używaj wielu dzierżawców . Jednak po 12cR2 i tak nie można utworzyć bazy danych niebędącej kontenerem.
I najprawdopodobniej przykładowe schematy mogły być już zainstalowane, wystarczy je odblokować w podłączanej bazie danych.
Na przykład, jeśli utworzyłeś podłączalną bazę danych jako
pdborcl
:Aby wyświetlić pliki PDB i połączyć się z podłączaną bazą danych z kontenera głównego:
Proponuję przeczytać artykuł Oracle 12c Obowiązkowe kroki po instalacji
Uwaga : odpowiedzi sugerujące użycie
_ORACLE_SCRIPT
ukrytego parametru do ustawienia wartości true są niebezpieczne w systemie produkcyjnym i mogą również unieważnić umowę serwisową. Uwaga, bez konsultacji z pomocą techniczną Oracle NIE używaj ukrytych parametrów .źródło
W Oracle 12c i nowszych mamy dwa typy baz danych:
Jeśli chcesz stworzyć użytkownika, masz dwie możliwości:
Możesz utworzyć „użytkownika kontenera”, czyli „zwykłego użytkownika”.
Zwykli użytkownicy należą do CBD, a także do obecnych i przyszłych PDB. Oznacza to, że mogą wykonywać operacje w kontenerowych bazach danych lub podłączalnych bazach danych zgodnie z przypisanymi uprawnieniami.
create user c##username identified by password;
Możesz utworzyć „podłączalnego użytkownika”, czyli „użytkownika lokalnego”.
Użytkownicy lokalni należą tylko do jednego PDB. Tym użytkownikom można nadać uprawnienia administracyjne, ale tylko dla tego PDB, w którym istnieją. W tym celu powinieneś połączyć się z wtykowym datable w ten sposób:
alter session set container = nameofyourpluggabledatabase;
i tam możesz stworzyć użytkownika jak zwykle:
create user username identified by password;
Nie zapomnij określić przestrzeni tabel, które mają być używane, może to być przydatne podczas importu / eksportu twoich DB. Zobacz to, aby uzyskać więcej informacji na ten temat https://docs.oracle.com/database/121/SQLRF/statements_8003.htm#SQLRF01503
źródło
źródło
Utwórz zależność użytkownika od narzędzi łączenia bazy danych
źródło
Być może bezpieczniejszą alternatywą
"_ORACLE_SCRIPT"=true
jest zmiana"_common_user_prefix"
zC##
na pusty ciąg. Gdy ma wartość null - dla zwykłego użytkownika można użyć dowolnej nazwy. Znaleziono tam .Podczas zmiany tej wartości może pojawić się inny problem - ORA-02095 - parametr nie może być modyfikowany, co można naprawić na kilka sposobów w zależności od konfiguracji ( źródła ).
Więc dla mnie działało, że:
źródło