Ora-01031 недостаточные привилегии при создании представления?

когда я пытаюсь создать представление, включающее разные таблицы, я получаю следующую ошибку: Ошибка в строке 1: ORA-01031 недостаточные привилегии.

может ли кто-нибудь сказать мне, в чем может быть проблема. Я попытался следовать другому сообщению stackoverflow, упомянутому здесь, но это относится к различные схемы.

ORA-01031: недостаточно привилегий при выборе view

пожалуйста, дайте мне знать, как я здесь.

Мой Запрос это так:

исходный вопрос: создайте представление для выбора идентификатора сотрудника, имени сотрудника, даты найма и номера отдела.

МОЕ РЕШЕНИЕ:

CREATE VIEW SIMPVIEW AS
SELECT EMPNO, ENAME, HIREDATE,DEPTNO
FROM EMP;

4 ответов


тогда, вероятно, у вас может не быть привилегий для выполнения в схеме базы данных... Войдите в учетную запись SYSDBA и введите команду

GRANT CREATE VIEW TO <dbusername>;

здесь <dbusername> следует заменить именем пользователя, которому вы хотите предоставить доступ к


вы можете проверить, если пользователь имеет VIEW создание привилегий с помощью select * from session_privs.

обратите внимание, что для создания представления пользователь, который его создает, должен быть предоставлен SELECT права на все используемые объекты, а также упомянул CREATE VIEW привилегии. Вы также можете проверить это, запросив USER_TAB_PRIVS С пользователем получаю ошибку.


вы должны предоставить пользователю право выбора любой таблицы. Затем представление будет успешно скомпилировано. Нет необходимости явно предоставлять пользователю select для всех объектов.


когда я хотел выполнить вышеуказанный запрос в SQL developer, я столкнулся с проблемами, поскольку у меня не было достаточно прав для создания представления или другой схемы объекта oracle, такой как триггер, пакеты, процедуры и т. д. Я нашел ошибку, т. е. "ошибка в строке 1: Ora-01031 недостаточные привилегии". Итак, мне нужны были все привилегии, чтобы практиковать все эти запросы и программы. Я предпринял следующие шаги, чтобы решить свою проблему:

  1. как я вошел в систему как имя пользователя "Скотт", так что мое имя это "Скотт", а не "Дхрув". Моя амбиция состояла в том, чтобы предоставить все привилегии мне, т. е. пользователю "scott".
  2. для этого мне нужно ввести в базу данных как DBA. Теперь вопрос в том! Как войти в систему как DBA. Для этого я открыл командную строку и вошел в базу данных как sysdba, выполнив следующие шаги:

a) в окне запуска я набрал cmd, чтобы открыть командную строку. Я набрал: sqlplus / nolog, что означает, что я вошел в систему без предоставления необходимых учетных данных.
си) Я аутентифицировал себя для моих базовых O / S и вошел в базу данных как DBA. Для этого я набрал в командной строке: connect / as sysdba; c) я оценил, кто является пользователем DBA в моей базе данных, если он существует. Для этого я набрал: выберите имя из V$database; д) Здесь мы идем после этой команды. Наконец, я предоставил себе (scott) для создания представления в SQL developer, введя команду: grant create view to scott; e) наконец, я предоставил себе все привилегии, набрав: предоставьте все привилегии Скотту;

снимок командной строки: я прикрепил.

наконец, я выполнил и создал свой вид: я прикрепил