ORA-01031: недостаточно прав при выборе вида - PullRequest
29 голосов
/ 26 сентября 2008

Когда я пытаюсь выполнить представление, которое включает в себя таблицы из разных схем, выдается ORA-001031 Недостаточно прав. Эти таблицы имеют разрешение на выполнение для схемы, в которой было создано представление. Если я выполняю SQL-оператор представления, он работает. Чего мне не хватает?

Ответы [ 7 ]

35 голосов
/ 26 сентября 2008

Наконец я получил его на работу. Ответ Стива верен, но не для всех случаев. Это терпит неудачу, когда то представление выполняется из третьей схемы. Чтобы это работало, вы должны добавить опцию гранта:

GRANT SELECT ON [TABLE_NAME] TO [READ_USERNAME] WITH GRANT OPTION;

Таким образом, [READ_USERNAME] может также предоставить привилегию выбора для представления другой схеме

19 голосов
/ 26 сентября 2008

Как владелец таблицы, вам нужно предоставить доступ SELECT к базовым таблицам пользователю, для которого вы выполняете инструкцию SELECT.

grant SELECT on TABLE_NAME to READ_USERNAME;
4 голосов
/ 17 апреля 2010

Позвольте мне сделать резюме.

Когда вы создаете представление, содержащее объект других владельцев, эти другие владельцы должны предоставить «с опцией предоставления» владельцу представления. Таким образом, владелец представления может предоставлять другим пользователям или схемам ....

Пример: Пользователь_a является владельцем таблицы с именем mine_a User_b - владелец таблицы yours_b

Допустим, user_b хочет создать представление с объединением mine_a и yours_b

Чтобы представление работало нормально, user_a должен предоставить «Предоставить выбор на mine_a для user_b с параметром предоставления»

Тогда user_b может предоставить выбор в этом представлении всем.

4 голосов
/ 15 июля 2009

Q. Когда требуется опция «с предоставлением гранта»?

A. когда у вас есть представление, выполненное из третьей схемы.

Пример: схема DSDSW имеет вид с именем view_name

a) that view selects from a table in another schema  (FDR.balance)
b) a third shema  X_WORK  tries to select  from that view

Типичные гранты: предоставить выбор по dsdw.view_name для dsdw_select_role; предоставить dsdw_select_role для fdr;

Но: FDR получает выберите количество (*) из dsdw.view_name; ОШИБКА в строке 1: ORA-01031: недостаточно прав

выдать грант:

grant select on fdr.balance to dsdw with grant option;

сейчас fdr: выберите количество (*) из dsdw.view_name; 5 рядов

1 голос
/ 16 мая 2013

Если к представлению обращаются через хранимую процедуру, разрешения на выполнение недостаточно для доступа к представлению. Вы должны предоставить выбор явно.

просто введите это

предоставить все на публику;

1 голос
/ 26 сентября 2008

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

0 голосов
/ 20 марта 2014

Чтобы использовать представление, пользователь должен иметь соответствующие привилегии, но только для самого представления, а не для его базовых объектов. Однако если привилегии доступа для базовых объектов представления будут удалены, то у пользователя больше не будет доступа. Это происходит потому, что домен безопасности, который используется, когда пользователь запрашивает представление, относится к определителю представления. Если права на базовые объекты отозваны у определителя представления, то представление становится недействительным, и никто не сможет использовать представление. Следовательно, даже если пользователю был предоставлен доступ к представлению, он может не иметь возможности использовать представление, если права определителя были отозваны из базовых объектов представления.

Документация по Oracle http://docs.oracle.com/cd/B28359_01/network.111/b28531/authorization.htm#DBSEG98017

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...