Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Проблема с доступом к таблице другой схемы из пакета/процедуры  [new]
Ayl
Member

Откуда: Санкт-Петербург
Сообщений: 33
Всем привет!

Столкнулся с проблемой.
Сервер Oracle 11.2

В БД 2 схемы.
Моя рабочая и промышленная, из которой нужно выгрузить данные.
Для всех таблиц промышленной схемы выданы права на SELECT для моей схемы.
В моей схеме созданы синонимы для этих таблиц.
Есть запрос, выбирающий нужную информацию. В нем соединение 7 таблиц.
Запрос засунут в пакет в цикл FOR.
Месяц назад эта конструкция прекрасно работала.

Вчера нужно было выгрузить данные, но вместо этого я получил ошибку - неизвестный идентификатор (без уточнения, только одинокое двоеточие).
Локализовал.
Проверил запрос.
Выяснил, что из чистого SQL, блока PL/SQL и процедуры с правами вызываемого запрос работает.
Из процедуры с правами создателя ругается на таблицу.

Проверил права - прямая выдача SELECT для таблицы на мою схему. На всякий случай сделал revoke/grant. Пересоздал синоним.
Не помогло.
Сделал в запросе прямое обращение к таблице (схема.таблица). Также не помогло.

Теперь вот сижу и ничего не понимаю.
Что может быть и как с этим бороться? Может, у кого-нибудь было подобное?
Можно, конечно, использовать права вызываемого, но хотелось бы обойтись без этого.
10 июн 15, 23:39    [17757809]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с доступом к таблице другой схемы из пакета/процедуры  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18484
Ayl
Вчера нужно было выгрузить данные, но вместо этого я получил ошибку - неизвестный идентификатор (без уточнения, только одинокое двоеточие).
...
Из процедуры с правами создателя ругается на таблицу.
Т.е. ошибка именно компиляции?
Ну дык приведи код и полный текст ошибки
Ayl
Локализовал.
Проверил запрос.
Выяснил, что из чистого SQL, блока PL/SQL и процедуры с правами вызываемого запрос работает.
Вот это все-таки очень похоже на права, выданные через роль
Все-таки проверь что все таблицы/представления/последовательности/функции доступны напрямую
select table_schema, table_name, privilege from all_tab_privs
where grantee=user and table_schema='<владелец>' and privilege in ('SELECT', 'EXECUTE');
11 июн 15, 02:24    [17758042]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с доступом к таблице другой схемы из пакета/процедуры  [new]
Ayl
Member

Откуда: Санкт-Петербург
Сообщений: 33
Вячеслав Любомудров
Ayl
Вчера нужно было выгрузить данные, но вместо этого я получил ошибку - неизвестный идентификатор (без уточнения, только одинокое двоеточие).
...
Из процедуры с правами создателя ругается на таблицу.
Т.е. ошибка именно компиляции?
Ну дык приведи код и полный текст ошибки

Ошибка времени выполнения.
К сожалению, рабочее место изолировано от интернета. Да и недоступно в настоящий момент.

Вячеслав Любомудров
Ayl
Локализовал.
Проверил запрос.
Выяснил, что из чистого SQL, блока PL/SQL и процедуры с правами вызываемого запрос работает.
Вот это все-таки очень похоже на права, выданные через роль
Все-таки проверь что все таблицы/представления/последовательности/функции доступны напрямую
select table_schema, table_name, privilege from all_tab_privs
where grantee=user and table_schema='<владелец>' and privilege in ('SELECT', 'EXECUTE');

Очень похоже.
Но я это проверял, более того, повторил выдачу гранта.
Сам запрос выглядит так:
select
  ...,
  con.ctr_type,
  ...
from
  doc_documents$t doc
     ...
     left join con_contractors$t con on (con.ctr_id = doc.doc_ctr_id)
     ...
where
  ...


Если закоментировать эти 2 строки с упоминанием con, то все работает.

Индексы или левое соединение не могут как-нибудь "гадить"?
11 июн 15, 03:05    [17758054]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с доступом к таблице другой схемы из пакета/процедуры  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18484
Ayl
Вячеслав Любомудров
пропущено...
Т.е. ошибка именно компиляции?
Ну дык приведи код и полный текст ошибки

Ошибка времени выполнения.
Тогда это Dynamic SQL

Ну и что кажет select table_schema, privilege from all_tab_privs where grantee=user and table_name=upper('con_contractors$t') ?
11 июн 15, 03:36    [17758058]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с доступом к таблице другой схемы из пакета/процедуры  [new]
инвокер правый
Guest
Вячеслав Любомудров
Ошибка времени выполнения.
Тогда это Dynamic SQL[/quot]не обязательно.
11 июн 15, 09:09    [17758272]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с доступом к таблице другой схемы из пакета/процедуры  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18484
Там явно сказано
автор
с правами вызываемого запрос работает.
Из процедуры с правами создателя ругается на таблицу.
11 июн 15, 09:31    [17758350]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с доступом к таблице другой схемы из пакета/процедуры  [new]
ArtNick
Member

Откуда:
Сообщений: 1227
Ayl
В БД 2 схемы.
Моя рабочая и промышленная, из которой нужно выгрузить данные.
Для всех таблиц промышленной схемы выданы права на SELECT для моей схемы.
В моей схеме созданы синонимы для этих таблиц.
Есть запрос, выбирающий нужную информацию. В нем соединение 7 таблиц.
Запрос засунут в пакет в цикл FOR.

Как то все сложно у тебя.
Попробуй упростить, начни с того что замени в запросе синонимы на таблицы. Ну и текст выполняемого запроса и код ошибки в студию
11 июн 15, 09:33    [17758360]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с доступом к таблице другой схемы из пакета/процедуры  [new]
Ayl
Member

Откуда: Санкт-Петербург
Сообщений: 33
ArtNick
Ayl
В БД 2 схемы.
Моя рабочая и промышленная, из которой нужно выгрузить данные.
Для всех таблиц промышленной схемы выданы права на SELECT для моей схемы.
В моей схеме созданы синонимы для этих таблиц.
Есть запрос, выбирающий нужную информацию. В нем соединение 7 таблиц.
Запрос засунут в пакет в цикл FOR.

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


Ну про цикл я может немного непонятно написал.
Имеется в виду, что цикл сделан по данному запросу:
for r in (select ...)

синоним на таблицу менял - не помогает.

Текст и код - не раньше понедельника смогу дать - режимный объект.
11 июн 15, 10:46    [17758742]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с доступом к таблице другой схемы из пакета/процедуры  [new]
ArtNick
Member

Откуда:
Сообщений: 1227
[quot Ayl]
ArtNick
пропущено...

синоним на таблицу менял - не помогает.


Зачем синоним, лишняя прокладка между продом и тестом.
11 июн 15, 11:14    [17758947]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с доступом к таблице другой схемы из пакета/процедуры  [new]
Ayl
Member

Откуда: Санкт-Петербург
Сообщений: 33
ArtNick,

имел в виду, что заменял обращение через синоним на прямое обращение к таблице (схема.таблица).
11 июн 15, 13:50    [17760156]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить