После обновления 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?


Ответы (0 шт):