我正在尝试使用DG4MSQL网关创建从Oracle 11g到SQL Server 2005的数据库链接。
创建db链接后,我无法使用JDBC驱动程序查询SQL Server系统视图(sys.services或sys.objects),但我能够使用JDBC驱动程序查询所有用户表。
如果我使用sqlplus,我可以查询所有表,包括系统表。由于我的项目是Java项目,我必然会使用JDBC驱动程序。
我做的另一个观察是,如果我使用DG4ODBC而不是DG4MSQL网关,那么我可以使用JDBC驱动程序查询所有SQL Server表,包括系统表。
如果有任何方法可以使用DG4MSQL和JDBC驱动程序查询SQL Server系统表,请告诉我吗?
答案 0 :(得分:0)
这个解释有点棘手
Oracle Gateway执行3种类型的操作:
对于JDBC,JDBC-ODBC桥使JDBC驱动程序与DG4ODBC中包含的驱动程序完美兼容。因此,JDBC plus DG4ODBC允许您执行上面的所有转换。
问题是DG4MSQL使用专有驱动程序,只有SQL转换可以桥接到JDBC。
作为您的问题的解决方案,您可以尝试基于远程SQL Server系统视图在Oracle架构上创建本地视图。根据您的要求,您甚至可以将它们创建为物化视图。
CREATE OR REPLACE VIEW sys_services
AS SELECT *
FROM sys.services@dblink;
然后查询sys_services
,而不是直接查询sys.services@dblink