2013-04-20 2 views
5

Когда я пытаюсь создать представление, включающее разные таблицы, я получаю следующую ошибку: Ошибка в строке 1: ORA-01031 Недостаточно привилегий.ORA-01031 Недостаточно привилегий при СОЗДАНИИ ПРОСМОТРА?

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

ORA-01031: insufficient privileges when selecting view

Пожалуйста, дайте мне знать, как я новичок здесь.

Мой запрос выглядит следующим образом:

ОРИГИНАЛ Вопрос: Создайте представление, чтобы выбрать идентификатор сотрудника, имя сотрудника, дату проката, и номер отдела.

МОЕ РЕШЕНИЕ:

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

У вас есть привилегия 'create view'? У вас есть таблица 'emp', или вы обращаетесь к ней в другой схеме (например, в схеме« HR »)? Если это в другой схеме, есть ли у вас 'select' priv против нее через роль или напрямую? –

+0

Спасибо за ваш ответ. Да, я запускаю запросы на своем компьютере с установленным Oracle 11g. Итак, я мой собственный администратор базы данных, но так как я новичок, я не уверен, что происходит не так. – Tan

+0

И да, я создал таблицу emp. – Tan

ответ

3

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

GRANT CREATE VIEW TO <dbusername>; 

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

2

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

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

0

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

0

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

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

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

Снимок командной строки: Я приложил.

И, наконец, я выполнил и создал своё мнение: Я приложил

+0

Ничего не приложено – Vemonus

+0

@Dhruv Можете ли вы прикрепить свое приложение? – John

Смежные вопросы