Я пытаюсь вставить в отредактированное представление (view1 - определенное в таблице table1) процедуру (определенную в пакете A в пользовательском U1) при вызове из другого пакета B (определенного в пользовательском U2). Это ошибки с недостаточными привилегиями.
Это в среде Oracle 12c. Table1 и view1 принадлежат пользователю U1. Существует вставка в view1 с помощью процедуры в пакете A, принадлежащей пользователю U1. Пакет B (в U2) вызывает эту процедуру для выполнения вставки.
1) В U2 создан синоним для U1.view1 (проверено в all_synonyms)
2) Существует роль (R1), которая имеет право на вставку для view1 (проверено в ROLE_TAB_PRIVS)
3) Роль R1 была назначена пользователю U2 (проверено в DBA_ROLE_PRIVS)
4) Роль R1 является ролью по умолчанию
5) Пакет B является определителем прав, а пакет A - правами вызывающего
5) Все проверено в одной редакции
Я ожидаю, что вставка произойдет в view1, поскольку роль назначена пользователю U2. Но это не происходит, это ошибки с «недостаточными привилегиями».
Но когда я предоставляю вставку в это представление1 пользователю U2 явно, тогда это работает. Означает ли это, что доступ только через роли недостаточен, если пакет A имеет права вызывающего?