【问题标题】:File uploads in a non-Apex PL/SQL application migrated to ORDS迁移到 ORDS 的非 Apex PL/SQL 应用程序中的文件上传
【发布时间】:2018-02-12 13:50:32
【问题描述】:

Oracle 官方文档 1982130.1 描述了当前阻止我们从 mod_plsql 迁移到 ORDS 的缺失特性:

将非 Apex PL/SQL 应用程序从 Oracle HTTP Server 迁移到 Oracle REST 数据服务 (ORDS) 2.0.9。运行 PL/SQL 时 使用 Oracle REST 数据服务的应用程序,出现以下错误 消息:“ORA-20888:必须提供 p_application_id”错误 catalina.out 与该参数的值无关。

其他人如何将非 Apex 应用程序从 mod-plsql 迁移到 ORDS?

【问题讨论】:

  • 升级到最新的 ords ,17.4。并解决了这个问题
  • @KrisRice 哇,这是个好消息,令人惊讶。在Oracle官方支持通知我这个问题在最新版本的ORDS中仍然存在后,我写了这个问题。你已经测试了吗?
  • 我编码了它;)。我会在几秒钟内给你一个更长的“答案”。
  • 重要问题。你在这个数据库中有顶点吗?基于此,我的答案有所不同。

标签: oracle plsql oracle-ords


【解决方案1】:

ORDS 18.3+ 更改了逻辑以使非顶点更容易。这是流程图中的新逻辑,希望它易于理解。

在 18.3 之前及以下版本中,这里是如何完成相同的操作 >

现在的问题是,有一个 hacky 解决方法可以让它工作,那就是假装 apex 太旧而无法使用该代码路径。 (是的,我会解决这个问题)

在连接池文件中配置的db用户中,创建这个视图。该代码检查是否安装了 apex 4+ 以使用它。这个视图是如何检查的,所以强制 ords 到东西顶点是旧的将使用普通的 'ol DOC 表路径。

create view apex_release as
  select '1.0.0.0' VERSION_NO from dual;

url-mapping.xml

<?xml version="1.0" encoding="UTF-8"?>
<pool-config xmlns="http://xmlns.oracle.com/apex/pool-config">
   <pool base-path="/klrice" name="klrice" />
</pool-config>

conf/klrice.xml

该参数名为 apex.docTable 并且此默认为“FLOWS_FILES.WWV_FLOW_FILE_OBJECTS$”

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
  <entry key="db.username">klrice</entry>
  <entry key="db.password">klrice</entry>
  <entry key="apex.docTable">klrice.MYDOCTABLE</entry>
</properties>

我的桌子

KLRICE@xe?? >CREATE TABLE MYDOCTABLE (
  2    NAME               VARCHAR(256)   UNIQUE NOT NULL, 
  3    MIME_TYPE          VARCHAR(128), 
  4    DOC_SIZE           NUMBER, 
  5    DAD_CHARSET        VARCHAR(128), 
  6    LAST_UPDATED       DATE, 
  7    CONTENT_TYPE       VARCHAR(128), 
  8    CONTENT            LONG RAW, 
  9*   BLOB_CONTENT       BLOB );

被调用后:

  1* select BLOB_CONTENT from MYDOCTABLE
KLRICE@xe?? >/

BLOB_CONTENT                                                                    
--------------------------------------------------------------------------------
89504E470D0A1A0A0000000D49484452000000C8000000C80806000000AD58AE9E00000001735247

【讨论】:

  • 感谢您的广泛反馈和几个问题:我的应用程序没有使用 apex,但是安装与不安装 apex 有区别吗?最新版本中实际发生了什么变化,或者这以前也有可能吗?是否真的所有关于 apex_release 视图欺骗 ORDS 相信没有可用的 apex?
  • 这在之前是可能的,正如你所看到的非常不明显。这周我正在正确地修复它,如果设置了新的参数 owa.docTable 它直接没有解决方法。
  • 所以它会在 ORDS 的次要更新中“很快”推出?
  • 期待。谢谢!
  • 是的,在 18.3 中,这已经过大修以更好地发挥作用。这很快就会到来。我将在博客中介绍这些变化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-22
  • 2012-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-25
  • 2015-06-17
相关资源
最近更新 更多