ORA-20001:无法访问打印引擎。带有BI Publisher 11.1.1.7的Oracle Apex 5

时间:2016-06-29 15:23:13

标签: bi-publisher oracle-apex-5

我正在研究Apex 5,希望用顶点运行bi publihser报告。 我在管理实例>报告打印顶点中创建了实例 主机地址:localhost 端口:7001 打印服务器:/ xmlpserver / convert

现在创建报告查询但是当我点击"测试报告查询" 它告诉我错误 ORA-20001:无法访问打印引擎,因为指定的URL不正确或需要指定代理URL。

我的BI配置组件是 配置组件

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

请帮帮我。

2 个答案:

答案 0 :(得分: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角色。 (通过sys连接到sqlplus作为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;

答案 1 :(得分:0)

另一种解决方法是检查:

manage instance> instance settings> print server host address

也许您只是更改了IP地址。