如何编程获得Oracle客户端的版本?

粉蒸排骨 2007-01-10 01:04:04
我需要编个小程序来检查目标环境满足应用要求,其中一项就是Oracle客户端的版本。
请问如何编程实现?比如在C/C++、Delphi中?有这样的OCI函数吗?


千恩万谢!!!
...全文
818 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
粉蒸排骨 2007-02-07
  • 打赏
  • 举报
回复
问题解决了,我使用了自己的解决方案:
1.通过注册表获取OCI.DLL文件的路径,注意10g和以前的注册表结构不同;
2.然后通过File Version Info API读取oci.dll文件的版本信息;

感谢各位!
ymzapple 2007-01-18
  • 打赏
  • 举报
回复
学习
gangjh 2007-01-18
  • 打赏
  • 举报
回复
Oracle自带的Client安装包很大,
我曾经精简过,只留下必要的dll以及支持文件,
不排除别人也怎么做.
zgh2003 2007-01-17
  • 打赏
  • 举报
回复
一般的客户端都自带了sqlplus,不需要强制客户安装啊;如果客户端只是通过oci与服务器进行连接的话,那都是肯定有应用程序在支持,既然有应用程序在支持,你还用写程序来校验客户端版本吗?或者说通过oci进行的连接都是在程序里写死的,那还不得改应用程序来支持与服务器端的连接。另外一种情况就是,如果客户端都是通过tnsname来与服务器端进行连接,这样的客户端一般都有sqlplus,如果没有的话,我认为可以考虑通过约束规则来要求用户必须安装符合需求的客户端版本,而不是通过程序来检测或约束,如果真想通过程序的完善来达到服务的目的,在客户第一次登录时,强行下载最新的客户端来安装。

以上是个人见解 :)
粉蒸排骨 2007-01-16
  • 打赏
  • 举报
回复
to zgh2003(世纪飞扬):为什么不存在呢?现在就是存在啊。不能强制要求客户安装SQLPLUS啊。
ymzapple 2007-01-16
  • 打赏
  • 举报
回复
学习!!!
zgh2003 2007-01-16
  • 打赏
  • 举报
回复
如果真是只是运行oci的话,应该就不存在楼主提的需求了.
gangjh 2007-01-16
  • 打赏
  • 举报
回复
運行oci的系統不一定會裝sqlplus
zgh2003 2007-01-16
  • 打赏
  • 举报
回复
你试试通过运行终端的SQLPLUS /NOLOG命令看看能不能读取这个版本号.当然不同版本的终端可能运行的命令有所区别,这点你得注意一下.
粉蒸排骨 2007-01-15
  • 打赏
  • 举报
回复
to zgh2003(世纪飞扬):谢谢!这个键我也搜到过,不过这是MTSRecoveryService的版本号啊?不是每个客户端都会安装的。
zgh2003 2007-01-13
  • 打赏
  • 举报
回复
我搜到的9i在注册表中的位置,hkey_local_machine/software/oracle/oraclemtsrecoveryservice/setup/current version/version/
但我装的是服器版,你查查只装客户端的有没有.
qiyousyc 2007-01-12
  • 打赏
  • 举报
回复
查找一下oci,在9i中,还真没有OCIClientVersion这个。看来,你的问题只能通过读客户端的注册表实现了。
粉蒸排骨 2007-01-12
  • 打赏
  • 举报
回复
to qiyousyc(沈阳棋友):
全程搜索了注册表,没有发现明确的版本号键值。
粉蒸排骨 2007-01-11
  • 打赏
  • 举报
回复
感谢gangjh(阿飛),终于看到了“官方”的方法。可是好像10g才有这个函数吧?
我的客户运行着不同版本的Oracle客户端,7/8i/9i/10g都可能有,我要求他们至少8i。这就是我需要做这个小程序的原因。
gangjh 2007-01-11
  • 打赏
  • 举报
回复
#include "ociap.h"
函數
/*----------------------- OCIClientVersion ------------------------------*/
void OCIClientVersion(sword *major_version,
sword *minor_version,
sword *update_num,
sword *patch_num,
sword *port_update_num);
/*----------------------- End OCIClientVersion --------------------------*/

tgm78 2007-01-10
  • 打赏
  • 举报
回复
目前可能做不到哦
看是可以的。

在你的client端,用sqlplus连接,前面显示你的client端的版本,后面显示server端的版本
givenchy 2007-01-10
  • 打赏
  • 举报
回复
可以查看注册表吧
givenchy 2007-01-10
  • 打赏
  • 举报
回复
帮顶
tgm78 2007-01-10
  • 打赏
  • 举报
回复
获取client端的版本?
粉蒸排骨 2007-01-10
  • 打赏
  • 举报
回复
感谢mengqifeng(追逐)!!!

可是你给的是判断服务器版本的方法吧?
加载更多回复(3)

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧