в наших приложениях j2ee мы используем роль безопасного приложения. По сути, источник данных использует схему пользователя приложения для подключения к базе данных. у пользователя приложения есть только права на создание сеанса. триггер входа в базу данных скопирует набор атрибутов в локальный безопасный контекст. (IP-адрес, пользователь сеанса, идентификатор клиента, имя приложения). Приложения явно вызывают хранимую процедуру sec_mgr.set_role перед выполнением любых DML.
sec_mgr.set_role проверит атрибут локального контекста, авторизует IP-адрес, имя приложения и установит для этого сеанса важную роль на основе пользователя сеанса.
мы хотим применить ту же структуру к приложению APEX. Во-первых, мы меняем схему сопряжения на схему приложения, которая имеет только привилегию создания сеанса. затем мы помещаем код plsql, в котором sec_mgr.set_role вызывается в построителе приложений -> общие компоненты ---> редактировать атрибут безопасности ---> виртуальная частная база данных (VPD).
однако мы получили ошибку ORA-06565: невозможно выполнить SET ROLE из хранимой процедуры
sec_mgr.set_role определяется как право инициатора (AUTHID CURRENT_USER)
мне что-то не хватает в APEX, чтобы заставить его работать?
Спасибо