Я только что установил oracle11g, и в нем отсутствовала схема Скотта. Поэтому я пытаюсь создать его сам. Я получил sql-скрипт схемы «Скотт», но когда я пытаюсь запустить запрос «создать пользователя Скотта, идентифицированного тигром;» он отображает следующую ошибку:
ORA-65096: недопустимое имя обычного пользователя или роли в Oracle.
По сути, это не позволяет мне создать пользователя «Скотт». Почему это так и как я могу решить свою проблему?
11g
, ты должен быть включен12c
.Ответы:
В 99,9% случаев ошибка
ORA-65096: invalid common user or role name
означает, что вы вошли в CDB, тогда как вы должны войти в PDB.Но если вы настаиваете на неправильном создании пользователей, выполните следующие действия.
ОПАСНОСТЬ
Установка недокументированных параметров, подобных этому (обозначенных ведущим подчеркиванием), должна выполняться только под руководством службы поддержки Oracle. Изменение таких параметров без таких указаний может привести к аннулированию вашего контракта на поддержку. Так что делайте это на свой страх и риск.
В частности, если вы установили
"_ORACLE_SCRIPT"=true
, некоторые изменения словаря данных будут сделаны с столбцом ORACLE_MAINTAINED, установленным на «Y». Эти пользователи и объекты будут неправильно исключены из некоторых сценариев DBA. И они могут быть некорректно включены в некоторые системные скрипты.Если вы согласны с вышеуказанными рисками и не хотите правильно создавать обычных пользователей, используйте ответ ниже.
Перед созданием пользователя запустите:
Я нашел ответ здесь
источник
Нет, вы установили Oracle 12c . Эта ошибка может быть только включенной
12c
и не может быть включенной11g
.Всегда проверяйте версию вашей базы данных до 4 знаков после запятой:
Многопользовательская контейнерная база данных Oracle 12c содержит :
Вы должны были создать базу данных как базу данных контейнера . Пока вы пытаетесь создать пользователя в контейнере, то есть CDB $ ROOT , однако вы должны создать пользователя в базе данных PLUGGABLE .
Вы не должны создавать объекты, связанные с приложением, в контейнере, контейнер содержит метаданные для подключаемых баз данных. Вы должны использовать подключаемую базу данных для общих операций с базой данных. В противном случае не создавайте его как контейнер и не используйте мультитенантность . Однако начиная с версии 12cR2 вы все равно не можете создать неконтейнерную базу данных.
И, скорее всего, образцы схем могли быть уже установлены, вам просто нужно разблокировать их в подключаемой базе данных.
Например, если вы создали подключаемую базу данных как
pdborcl
:Чтобы отобразить PDB и подключиться к подключаемой базе данных из корневого контейнера:
Предлагаю прочитать, Обязательные шаги после установки Oracle 12c
Примечание : ответы, предлагающие использовать
_ORACLE_SCRIPT
скрытый параметр для установки значения true, опасны для производственной системы и могут также сделать недействительным ваш контракт на поддержку. Осторожно, без консультации со службой поддержки Oracle НЕ используйте скрытые параметры .источник
В Oracle 12c и выше у нас есть два типа баз данных:
Если вы хотите создать пользователя, у вас есть две возможности:
Вы можете создать «пользователя контейнера», также известного как «обычный пользователь».
Обычные пользователи принадлежат к CBD, а также к текущим и будущим PDB. Это означает, что они могут выполнять операции в БД контейнера или подключаемых БД в соответствии с назначенными привилегиями.
create user c##username identified by password;
Вы можете создать «подключаемого пользователя», также известного как «локальный пользователь».
Локальные пользователи принадлежат только к одной PDB. Этим пользователям могут быть предоставлены административные привилегии, но только для той PDB, внутри которой они существуют. Для этого вы должны подключиться к подключаемому datable следующим образом:
alter session set container = nameofyourpluggabledatabase;
и там вы можете создать пользователя, как обычно:
create user username identified by password;
Не забудьте указать используемые табличные пространства, это может быть полезно во время импорта / экспорта ваших баз данных. См. Дополнительную информацию об этом https://docs.oracle.com/database/121/SQLRF/statements_8003.htm#SQLRF01503
источник
источник
Создание зависимости пользователя от инструментов подключения к базе данных
источник
Может быть, более безопасной альтернативой
"_ORACLE_SCRIPT"=true
является изменение"_common_user_prefix"
сC##
пустой строкой. Когда он нулевой - для обычного пользователя можно использовать любое имя. Нашел там .Во время изменения этого значения вы можете столкнуться с другой проблемой - ORA-02095 - параметр не может быть изменен, который можно исправить несколькими способами, в зависимости от вашей конфигурации ( источника ).
Итак, для меня сработало следующее:
источник