Я пытаюсь вставить в отредактированное представление (представление1 - определенное в таблице table1) в процедуре (определенной в пакете A в пользователе U1) при вызове из другого пакета B (определенного в пользователе U2). Это ошибка с недостаточными привилегиями.
Это в среде Oracle 12c. Table1 и view1 принадлежат пользователю U1. В представление 1 вставлена процедура в пакете А, принадлежащая пользователю 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) Все проверяется в той же редакции
Я ожидаю, что вставка произойдет в представление 1, поскольку роль назначена пользователю U2. Но этого не происходит, выдает ошибку "недостаточно привилегий". Но когда я явно предоставляю вставку в этот view1 пользователю U2, это работает. Означает ли это, что доступа только через роли недостаточно, если пакет A имеет права вызывающего?