【问题标题】:Cannot create webservices from Oracle APEX无法从 Oracle APEX 创建 Web 服务
【发布时间】:2021-06-06 08:58:06
【问题描述】:

我是 Oracle APEX 的新手,我正在尝试从 Oracle APEX 20.2 创建 REST 数据 Web 服务,同时创建以下 Web 服务是配置设置,

enter image description here

enter image description here

所以关于这个问题,我正在尝试执行 APEX ACL 脚本,但它显示以下错误,

DECLARE
  ACL_PATH  VARCHAR2(4000);
    ACL_ID    RAW(16);
  BEGIN
    -- Look for the ACL currently assigned to '*' and give APEX_040200
    -- the "connect" privilege if APEX_040200 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;

  -- Before checking the privilege, ensure that the ACL is valid
  -- (for example, does not contain stale references to dropped users).
  -- If it does, the following exception will be raised:
  --
  -- ORA-44416: Invalid ACL: Unresolved principal 'APEX_040200'
  -- ORA-06512: at "XDB.DBMS_XDBZ", line ...
  --
  SELECT SYS_OP_R2O(extractValue(P.RES, '/Resource/XMLRef')) INTO ACL_ID
  FROM XDB.XDB$ACL A, PATH_VIEW P
  WHERE extractValue(P.RES, '/Resource/XMLRef') = REF(A) AND
     EQUALS_PATH(P.RES, ACL_PATH) = 1;

 DBMS_XDBZ.ValidateACL(ACL_ID);
  IF DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE(ACL_PATH, 'APEX_040200', 
 'connect') IS NULL THEN 
  DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(ACL_PATH, 
 'APEX_040200', 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_040200', TRUE, 'connect');
   DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL('power_users.xml','*');
 END;
/
 COMMIT;

错误:(我在执行上述脚本时面临)

ORA-06550: line 8, column 33: PL/SQL: ORA-00942: table or view does not exist ORA-06512: at         "SYS.WWV_DBMS_SQL_APEX_200200", line 670 ORA-06550: line 8, column 3: PL/SQL: SQL Statement ignored    ORA-06550: line 24, column 7: PLS-00201: identifier 'DBMS_NETWORK_ACL_ADMIN' must be declared ORA-06550: line 24, column 4: PL/SQL: Statement ignored ORA-06550: line 33, column 3: PLS-00201: identifier 'DBMS_NETWORK_ACL_ADMIN' must be declared ORA-06550: line 33, column 3: PL/SQL: Statement ignored ORA-06550: line 36, column 3: PLS-00201: identifier 'DBMS_NETWORK_ACL_ADMIN' must be declared ORA-06550: line 36, column 3: PL/SQL: Statement ignored ORA-06512: at "SYS.DBMS_SYS_SQL", line 1658 ORA-06512: at "SYS.WWV_DBMS_SQL_APEX_200200", line 656 ORA-06512: at "APEX_200200.WWV_FLOW_DYNAMIC_EXEC", line 1768

所以当我检查 APEX 论坛时,基本上我们需要连接权限来创建 Web 服务,所以我的问题是如何在使用 apex.oracle.com 时获得连接权限,我正在使用 oracle apex 的测试架构,为此我请求谁获得连接权限,谁负责 DBA,或者如何解决这个问题。

提前致谢, 轭

【问题讨论】:

    标签: rest web-services plsql oracle-apex acl


    【解决方案1】:

    如果你想暴露 RESTful 服务,你不需要配置 ACL。需要 ACL 来从 invoke 数据库中的 的 restful 服务调用连接,例如从 pl/sql。 通常这些脚本是由 DBA 运行的,我怀疑你是否有权限运行它们。

    开始使用 RESTful 服务的最佳位置是安装示例服务并研究示例模块。您可以在浏览器中使用 GET 处理程序复制模板的 url 并查看结果。从那里开始开发自己的。 顺便说一句,ACL 的那个脚本有错误的 apex 用户。 APEX_040200 是 apex 4.2 的 apex 架构。那是一个相当旧的版本。 apex.oracle.com 的最新版本是 20.2。

    【讨论】:

    • 是的 Koen Lostrie 感谢您的快速回复,我可以提供任何用于创建 Web 服务的示例模块吗,即使我无法从 oracle apex 20.2 创建它,对于给我带来的不便,我是 oracle 的新手感到抱歉apex,我正在尝试创建基本的 emp 表,如果有任何基本或示例模块,请告诉我
    • 在您的工作区中登录 apex.oracle.com。转到 SQL Workshop > Restful 服务。使用 ORDS 注册您的模式(只需完成一次),并选中“安装示例服务”选项。如果您不选中该框,您仍然会在“Ords Restful Services”主页中看到“安装示例服务”按钮。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多