【问题标题】:Get the 'compatible' version of Oracle Database using JDBC APIs使用 JDBC API 获取“兼容”版本的 Oracle 数据库
【发布时间】:2022-01-01 14:14:09
【问题描述】:

我想通过一些 JDBC API 了解 Oracle 数据库的“兼容”版本。基本上,我对 init 参数 'compatible' 的值感兴趣。

例如,如果我要连接到 Oracle 数据库 19c,那么我想知道 19c 数据库支持的兼容性设置。 (说)如果它兼容处理 Oracle 12.1.0.2 功能,那么我想通过一些现成的 API 在我的 JDBC 代码中知道这一点,这样我就可以避免查询 v$parameter 之类的视图来获取 '兼容'参数。

我期待一个班级java.sql.DatabaseMetaData 有这样的设施。但是我没有找到java.sql.DatabaseMetaData下定义的任何相关方法。 getDatabaseMajorVersiongetDatabaseProductVersion 方法似乎返回了我不感兴趣的软件发布版本。如果您知道任何 API 或技术来找到它,请不胜感激。

【问题讨论】:

    标签: java oracle jdbc


    【解决方案1】:

    我怀疑是否存在,因为参数的含义高度依赖于特定的数据库引擎,并且很难抽象出来。如果有的话,我可以想象 Oracle 的 oracle.jdbc.OracleDatabaseMetaData 类通过 oracle.jdbc.AdditionalDatabaseMetaData interface 实现了一些查询初始化参数的功能,但这不是 Oracle 迄今为止选择构建的扩展之一。

    在您的示例中,compatible 设置为 12.1.0.2 的 19c 数据库将支持 99% 的新 19c 功能。唯一不起作用的是任何改变磁盘上数据文件格式的东西。这样的特性往往很少——绝大多数新功能都是在更高级别的堆栈上实现的。这与 SQL Server 上的兼容性级别设置的含义根本不同。 getDatabaseMajorVersiongetDatabaseProductVersion 根据 compatible 参数的设置返回信息当然没有意义,因为这会误导绝大多数特定于版本的问题。

    【讨论】:

      猜你喜欢
      • 2011-04-24
      • 1970-01-01
      • 1970-01-01
      • 2016-01-10
      • 1970-01-01
      • 2017-12-19
      • 2013-06-06
      • 2021-07-11
      • 1970-01-01
      相关资源
      最近更新 更多