После обновления APEX Listener на ORDS из интерфейса веб-приложения пропал доступ к PLSQL процедуре: ошибка ORDS-22001 NotAutorizedOrNotFound
У нас система с установленным Oracle Apex, версия 4.2.4.00.08. Сделали обновление с APEX Listener на ORDS последней версии 20.4.3, все вроде корректно стало, станицы приложения открываются и сам функционал тоже нормально работает.
Но есть небольшой баг: для скачивания excel-отчетов с нашего приложения используются JS-функции, которые через AJAX обращаются к БД и получают данные в виде разметки, записывают эту разметку в excel-файл. Саму разметку формирует оракловая процедура printreport(). До обновления это все работало, а после - при срабатывании этого куска кода:
$.ajax({
url: "printreport",
type: "POST",
data: {
shema: shema, //схема в которой лежит процедура
proc_name: proc_name, // Название процедуры
params: params,
filename: filename //имя выходного файла
},
success: function(data) {
pre_loader.hide();
data = $.parseJSON(data);
if (data.status === 'error') {
alert(data.message);
}
if (data.status === 'good') {
// $('#' + proc_name).dialog('close');
$('#report').dialog('close');
window.location.href = data.href;
}
}
});
в консоли выдается ошибка, что процедура printreport() не найдена:
{ "code": "NotAuthorizedOrNotFound", "title": "Procedure not authorized or not found", "message": "The procedure named printreport could not be accessed or found", "o:errorCode": "ORDS-22001", "cause": "The procedure may not be declared, or the user executing this request may not have been granted execute privilege on the procedure, or a function specified by security.requestValidationFunction configuration property has prevented access", "action": "Check the spelling of the procedure, check that the execute privilege has been granted to the caller and check the configured security.requestValidationFunction function", "type": "tag:oracle.com,2020:error/NotAuthorizedOrNotFound", "instance": "tag:oracle.com,2020:ecid/_32uDI_D5c4UKDBekjwjbg" }
При этом сама процедура есть и она нормально запускается/отрабатывает из workshop'а.
Возможно, это из-за нового пользователя ORDS_PUBLIC_USER (может быть ему не хватет каких-то привилегий/разрешений). Ранее взаимодействие с APEX'ом было через пользователя APEX_PUBLIC_USER.
Пробовали выполнять такой alter:
alter user ORDS_PUBLIC_USER grant connect through APEX_PUBLIC_USER;
Но это, к сожалению, ничего не поменяло. Подскажите, пожалуйста, кто сталкивался с подобной проблемой, в чем загвоздка? Как можно решить проблему доступа к процедуре из кода обработчика на JS?