正在将 mod_plsql 应用程序迁移到 Oracle REST 数据服务

migrating mod_plsql application to Oracle REST Data Services

我在 MOS 文档 ID 1945619.1 上读到,从 12.1.3 Oracle HTTP Server (OHS) 开始,mod_plsql 功能已被弃用,不会包含在 12.2 Oracle HTTP Server 中。

对于未来,Oracle 建议转向 Oracle REST 数据服务(以前称为 Oracle APEX Listener)作为 mod_plsql 的替代方案。

我们的商店在生产中有很多 mod_plsql 个应用程序(即使用 jg HTP/HTF 包编写的应用程序)。由于我对 Oracle REST 数据服务一无所知,所以我想问您我们是否可以在不更改代码的情况下将旧应用程序迁移到这个新产品。

谢谢。

亲切的问候,克里斯蒂安

要克服的最大障碍是设置 Oracle Rest Services (ORS) 并保护它。完成此操作后,您的 Web 工具包应用程序将同样工作。 url 可能会略有变化,因此如果您使用完整路径而不是相对路径引用 URL,您可能需要修改代码。

我不确定 ORS 在 mod_rewrite、mod_proxy、具有多个 IP 地址的虚拟主机等方面是否像 Apache 一样强大...

我店的情况和你差不多。 我们还有一些非常大的基于 mod_plsql/htp 的应用程序,并且在某个时候必须迁移到 Oracle REST 数据服务。

我们已经花了很多时间测试不同的 ORDS 配置,我们的总体结论是:

  • 仅完全支持 APEX 应用程序
  • 关键功能仍然可用
  • 更难配置和维护
  • 性能略有下降
  • 一些 mod_plsql 配置选项不再存在或已更改

我们目前面临的最大问题(实际上阻止我们切换到 ORDS)是使用非 APEX(纯 HTF/HTP)应用程序时的一些限制。 我们已经提交了一些 SR,因为 ORDS 中的某些功能(例如文件上传和下载 API)仅在 运行 APEX 应用程序时可用。

Doug McMahon(Oracle 员工)有一个很棒的 Apache 开源模块。 Apache PL/SQL 网关模块 (mod_owa)

https://oss.oracle.com/projects/mod_owa/dist/documentation/modowa.htm

我正在生产环境中使用它,我强烈推荐它。它真的很快而且坚如磐石。

您需要进行一些编译,但是能够使用 Apache 2.4 和 mod_plsql.

是值得的

步骤:

  1. 下载 httpd 2.4.?来自 apache.org + 提取物
  2. 如果 Centos 6 或更低版本下载 apr 和 apr-util
  3. 使用 enable-so 配置,make 和 make install

    ./configure --enable-so --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr

  4. 下载mod_owa+解压

  5. 创建空目录。将 "apache24" 中的所有文件复制到新文件夹中。将所有文件从 "src" 复制到新文件夹

  6. 进入新文件夹并编辑modowa.mk <--重要添加$ORACLE_HOME,编辑APACHE_TOP

  7. 复制mod_owa.so到apache的模块

  8. 在 Apache 的 conf/ 目录中添加一个 modowa.conf。

示例modowa.conf:

loadModule owa_module modules/mod_owa.so

<Location /pls>
    Options        None
    SetHandler     owa_handler
    OwaUserid      user/pass
    OwaNLS         AMERICAN_AMERICA.AL32UTF8
    OwaPool        100
    OwaStart       "package.procedure"
    OwaDocProc     "wwv_flow_file_mgr.process_download"
    OwaDocTable    photos_upload BLOB_CONTENT
    OwaUploadMax   50M
    OwaCharset     "utf8"
    order          deny,allow
    allow          from all
    OwaReset       LAZY
    OwaCharsize    4
    OwaFlex        package.procedure
    OwaHttp        REST 
</Location>

在启动 httpd ORACLE_HOME 之前,需要设置 NLS_LANG(ORACLE_SID 也需要在本地设置)。它需要使用 libclntsh.so 访问 Oracle Home。 (Oracle 客户端即可)。

我只是在 /etc/ld.so.conf.d (+ ldconfig)

下添加了 oracle.conf(一行完整的 oracle home/lib 路径)

真正的可扩展性和比 OHS 更简洁的设置。

另一个开源替代方案是 tox