Ответ 1
Перед созданием пользователя запустите:
alter session set "_ORACLE_SCRIPT"=true;
Я просто установил oracle11g, и ему не хватало схемы Скотта. Поэтому я пытаюсь создать его сам. Я получил скрипт sql схемы "Скотт", но когда я пытаюсь запустить запрос "создать пользователя Скотта, идентифицированного тигром"; он отображает следующую ошибку:
ORA-65096: неверный общий пользователь или имя роли в oracle.
В принципе, это не позволяет мне создать пользователя "Скотт". Почему это и как я могу исправить свою проблему?
Перед созданием пользователя запустите:
alter session set "_ORACLE_SCRIPT"=true;
Я только что установил oracle11g
ORA-65096: неверный общий пользователь или имя роли в oracle
Нет, вы установили Oracle 12c. Эта ошибка может быть только на 12c
и не может быть на 11g
.
Всегда проверяйте версию своей базы данных до 4 знаков после запятой:
SELECT banner FROM v$version WHERE ROWNUM = 1;
Вы должны создать базу данных в виде базы данных контейнера. Хотя вы пытаетесь создать пользователя в контейнере, то есть CDB $ ROOT, однако вы должны создать пользователя в базе данных PLUGGABLE.
Вы не должны создавать объекты в контейнере, контейнер содержит метаданные для подключаемых баз данных. Вы должны использовать подключаемую базу данных для общих операций с базой данных. Кроме того, не создавайте его в качестве контейнера, а не используйте многопользовательский договор.
И, скорее всего, образцы схем могли быть уже установлены, вам просто нужно разблокировать их в подключаемой базе данных.
Например, если вы создали подключаемую базу данных в виде pdborcl
:
sqlplus SYS/[email protected] AS SYSDBA
SQL> ALTER USER scott ACCOUNT UNLOCK IDENTIFIED BY tiger;
sqlplus scott/[email protected]
SQL> show user;
USER is "SCOTT"
Я предлагаю прочитать, Oracle 12c Post Installation Обязательные шаги
В оракуле 12c и выше у нас есть два типа баз данных:
контейнер (CDB)
подключаемая база данных (PDB).
Если вы хотите создать пользователя, у вас есть две возможности:
Общие пользователи относятся к CBD, а также к текущим и будущим PDB. Это означает, что он может выполнять операцию в контейнере или подключаемом устройстве в соответствии с назначенными привилегиями.
create user c##username identified by password;
Локальные пользователи - это просто база данных, которая принадлежит только одному PDB. У этого пользователя могут быть привилегии администратора, но это относится только к этому PDB. для этого вам следует подключаться к подключаемым данным, подобным этому
alter session set container = nameofyourpluggabledatabase;
и там, вы можете создать пользователя, как обычно
create user username identified by password;
Не забывайте упоминать табличное пространство, оно может быть полезно при импорте. см. это для получения дополнительной информации об этом https://docs.oracle.com/database/121/SQLRF/statements_8003.htm#SQLRF01503
Если вы столкнулись с точно такой же ошибкой, сделайте следующее:
1) Откройте CMD типа sqlplus и нажмите Enter
2) Подключиться из системного логина
3) Выполнить команду: изменить набор сеансов "_ORACLE_SCRIPT" = true;
4) Для создания другой пользовательской команды запуска: СОЗДАТЬ ИМЯ ПОЛЬЗОВАТЕЛЯ ИДЕНТИФИЦИРОВАНО ПО ПАРОЛУ;
Затем вы можете добавить пользователя и роли.
Создавать зависимость пользователя от инструментов подключения базы данных
sql plus
SQL> connect as sysdba;
Enter user-name: sysdba
Enter password:
Connected.
SQL> ALTER USER hr account unlock identified by hr;
User altered
then create user on sql plus and sql developer
Если вы столкнулись с точно такой же ошибкой, сделайте следующее:
1) Откройте CMD типа sqlplus и нажмите Enter
2) Подключиться из системного логина
3) Выполнить команду: изменить набор сеансов "_ORACLE_SCRIPT" = true;
4) Для создания другой пользовательской команды запуска: СОЗДАТЬ ИМЯ ПОЛЬЗОВАТЕЛЯ ИДЕНТИФИЦИРОВАНО ПО ПАРОЛУ;
Затем вы можете добавить пользователя и роли.