2

我的工作使用 Oracle 10G 并计划安装 Apex。同时,我下载了 Oracle XE 并自学了 APEX;但是,我只能访问我在 XE 数据库中创建的用户/表空间。我想做的是使用 XE 的 Apex 来访问我工作的生产数据库中的用户/表空间。

我的同事说这应该是可能的,因为我的工作站已连接到服务器,并且应该有一种方法可以配置从我的 XE 的 Apex 到 10g 的数据库的访问,例如通过设置适当的 DAD。

我在 Apex 用户界面中看不到任何允许这样做的内容。我已经阅读了 Apex 文档的每一个字,但没有注册任何内容。

XE 使用嵌入式 PL/SQL 网关,而 10/11G 使用 Apex 侦听器或带有 mod_plsql 插件的 HTTP 服务器。

谢谢,

马修·莫伊森

4

1 回答 1

3

在我们无法访问托管要处理的数据的实际数据库之前,我已经这样做了,除了标准端口 1521 侦听器访问。当时的 Apex 对组织来说还很新,以至于 DBA 也有一个关于将他们的数据库服务器用作 Web 服务器网关的巫术禁忌。您可以使用安装了 APEX 作为“中间层”或应用服务器的数据库实例,步骤如下:

  1. 在您的 10g 数据库上设置一个可通过 dblink 远程访问的帐户。
  2. 在安装了 XE 的工作站上设置 dblinks 到 10g 数据库表,使用 (1) 中设置的 10g 数据库的帐户和连接信息。请注意,您可能必须更新 TNS 名称文件或在 dblink 本身中明确指出您的主机/网络设置。
  3. 为了在编码您的 apex 项目时简单明了,请为您的所有 dblinked 对象设置同义词(即 table1 为 table1@dblink),这样您就不会直接在您的 apex 代码中引用 dblinks。如果您坚持这一点,以后进行更改会更容易。

就是这样。一个附带条件是,您需要知道 LOB 在使用 dblink 时无法与 APEX 驱动的 DML 操作的开箱即用功能一起使用。这可能随着最新版本而改变。您可能考虑的一种解决方法是尝试使用存储过程,该过程将您的 LOB 数据作为输入参数传递,该参数将为您执行 DML 操作。

否则,这种方法效果很好。我实现这个模型的地方有几个生产级应用程序、一个测试层和一个开发层,它们都使用与实际数据源分开托管 APEX 的服务器。我们使用 Oracle Standard Edition One(用于支持),但 Oracle XE 应该也能正常工作,因为 APEX 是两个 Oracle 版本之间的共同平台。

于 2012-12-05T21:27:57.890 回答