powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Ошибка привилегий
5 сообщений из 5, страница 1 из 1
Ошибка привилегий
    #40106721
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть в пакете процедура mypack.aliments
Запускаю по system и получаю ошибку: ORA-01031: привилегий недостаточно (на строке inner join spr.b).

При этом если просто выполнить запрос под system:
select a.*
from test.a a
inner join spr.b b on b.id_a = a.id;
Все работает.

Каких привилегий не хватает (понимаю, что references on spr.b to system)?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
procedure  aliments(cur out sys_refcursor) 
is
  begin
    open cur for
      select a.*
        from test.a a 
     inner join spr.b b on b.id_a =  a.id;
  end;
...
Рейтинг: 0 / 0
Ошибка привилегий
    #40106738
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подправил процедуру в пакете:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
procedure  aliments(cur out sys_refcursor) 
is
  begin
    open cur for
      select a.*, b.*
        from test.a a 
     inner join spr.b b on b.id_a =  a.id;
  end;



Все решилось:
Код: plsql
1.
grant references, select on spr.b to test;


Но вопрос, почему надо select явно давать привилегии, хотя запрос обычный проходит.
...
Рейтинг: 0 / 0
Ошибка привилегий
    #40106740
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnet,

как вариант
права даны через роль
в FAQ-есть пример

.....
stax
...
Рейтинг: 0 / 0
Ошибка привилегий
    #40106741
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax, права кому даны явно через роль - system'у?
...
Рейтинг: 0 / 0
Ошибка привилегий
    #40106748
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnet,

процедура выполняется (по умолчанию) с правами владельца

https://www.sql.ru/forum/212946/top-populyarnyh-voprosov#3248256
7. Вопрос. Почему в своем pl/sql-коде (представлении/процедуре/триггере/пакете) не удается использовать чужой объект - выдается ошибка ORA-00942 table or view does not exist - хотя в sql-запросе или в анонимном pl/sql/блоке все нормально, обращение к объекту другого пользователя проходит без проблем?
Ответ. Скорее всего на чужой объект есть привилегия, выданная только через роль. Для использования объектов другого пользователя или системных привелегий в своих процедурах/триггерах и т.д., а также в job-ах необходимо дать на них привилегию напрямую, не через роль.
.....
stax
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Ошибка привилегий
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]