4

我正在尝试使用 DG4MSQL 网关创建从 Oracle 11g 到 SQL Server 2005 的数据库链接。

创建数据库链接后,我无法使用 JDBC 驱动程序查询 SQL Server 系统视图(sys.services 或 sys.objects),但我能够使用 JDBC 驱动程序查询所有用户表。

如果我使用 sqlplus,我可以查询所有表,包括系统表。由于我的项目是Java项目,所以必然要使用JDBC驱动。

我所做的另一项观察是,如果我使用 DG4ODBC 而不是 DG4MSQL 网关,那么我可以使用 JDBC 驱动程序查询所有 SQL Server 表,包括系统表。

请让我知道是否有任何方法可以使用 DG4MSQL 和 JDBC 驱动程序查询 SQL Server 系统表?

4

1 回答 1

1

这个有点难以解释

Oracle 网关执行 3 种类型的操作:

  • SQL 翻译(当您查询常规表、视图等时)
  • 数据字典翻译(当您查询系统视图时)
  • 数据类型转换(例如 Microsoft 的日期到 Oracle 的日期)

对于 JDBC,JDBC-ODBC 桥使 JDBC 驱动程序与 DG4ODBC 中包含的驱动程序完美兼容。因此,JDBC 加 DG4ODBC 允许您执行上述所有转换。

问题是 DG4MSQL 使用专有驱动程序,只有 SQL 转换可以桥接到 JDBC。

作为您的问题的解决方案,您可以尝试根据远程 SQL 服务器系统视图在 Oracle 架构上创建本地视图。根据您的要求,您甚至可以将它们创建为物化视图。

CREATE OR REPLACE VIEW sys_services 
AS SELECT * 
FROM sys.services@dblink;

然后查询sys_services而不是直接查询sys.services@dblink

于 2013-07-10T15:39:03.783 回答