ORA-20001: Механизм печати недоступен. Oracle Apex 5 с BI Publisher 11.1.1.7

Я работаю над Apex 5, хочу запустить отчет bi publihser с apex. Я создал экземпляр в разделе "Управление экземпляром"> "Печать отчета по адресу". Адрес хоста: localhost Порт:7001 Сервер печати: /xmlpserver/convert

Теперь создан отчетный запрос, но когда я нажимаю "Test Report Query", появляется сообщение об ошибке ORA-20001: не удалось связаться с механизмом печати, поскольку указан неверный URL-адрес или необходимо указать URL-адрес прокси-сервера.

Моими компонентами конфигурирования BI являются Configure Components

    Oracle Enterprise Manager
        http://naeemshahzad-PC:7001/em
    Business Intelligence Enterprise Edition
        naeemshahzad-PC:9704/analytics
    Business Intelligence Publisher
        naeemshahzad-PC:9704/xmlpserver

Пожалуйста, помогите мне.

1 ответ

Причина этой ошибки:

ORA-20001: The printing engine could not be reached because either the URL specified is incorrect or a proxy URL needs to be specified.

потому что по умолчанию возможность взаимодействия с сетевыми сервисами отключена в Oracle Database 12c, Поэтому, если вы работаете Oracle Application Express 5.0 с Oracle Database 12c, вы должны использовать новый DBMS_NETWORK_ACL_ADMIN пакет для предоставления привилегий подключения любому хосту для APEX_050000 Пользователь базы данных.

Поэтому вы должны предоставить право подключения к APEX_050000

Решение:

Подключитесь к базе данных, где Oracle Application Express установлен как SYS указав SYSDBA роль. (подключиться к sqlplus с помощью sys как пользователь sysdba)

Затем запустите следующий plsql:

DECLARE
  ACL_PATH  VARCHAR2(4000);
BEGIN
  -- Look for the ACL currently assigned to '*' and give APEX_050000
  -- the "connect" privilege if APEX_050000 does not have the privilege yet.

  SELECT ACL INTO ACL_PATH FROM DBA_NETWORK_ACLS
   WHERE HOST = '*' AND LOWER_PORT IS NULL AND UPPER_PORT IS NULL;

  IF DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE(ACL_PATH, 'APEX_050000',
     'connect') IS NULL THEN
      DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(ACL_PATH,
     'APEX_050000', TRUE, 'connect');
  END IF;

EXCEPTION
  -- When no ACL has been assigned to '*'.
  WHEN NO_DATA_FOUND THEN
  DBMS_NETWORK_ACL_ADMIN.CREATE_ACL('power_users.xml',
    'ACL that lets power users to connect to everywhere',
    'APEX_050000', TRUE, 'connect');
  DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL('power_users.xml','*');
END;
/
COMMIT;

после этого запуска:

DECLARE
  ACL_PATH  VARCHAR2(4000);
BEGIN
  -- Look for the ACL currently assigned to 'localhost' and give APEX_050000
  -- the "connect" privilege if APEX_040200 does not have the privilege yet.
  SELECT ACL INTO ACL_PATH FROM DBA_NETWORK_ACLS
   WHERE HOST = 'localhost' AND LOWER_PORT IS NULL AND UPPER_PORT IS NULL;

  IF DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE(ACL_PATH, 'APEX_050000',
     'connect') IS NULL THEN
      DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(ACL_PATH,
     'APEX_050000', TRUE, 'connect');
  END IF;

EXCEPTION
  -- When no ACL has been assigned to 'localhost'.
  WHEN NO_DATA_FOUND THEN
  DBMS_NETWORK_ACL_ADMIN.CREATE_ACL('local-access-users.xml',
    'ACL that lets users to connect to localhost',
    'APEX_050000', TRUE, 'connect');
  DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL('local-access-users.xml','localhost');
END;
/
COMMIT;

Другое решение - проверить:

manage instance> instance settings> print server host address

Возможно, вы просто изменили IP-адрес.

Другие вопросы по тегам