中国教育在线 中国教育网 加入收藏 设为首页

oracle认证:ODBC体系结构解剖

http://itpx.eol.cn  来源:  作者:帮考网  2011-07-12    

  oracle认证:ODBC体系结构解剖,由于微软和Oracle公司都提供了Oracle数据库的ODBC驱动,Oracle为自己写的ODBC驱动功能更细腻一些,支持的API也更全一些,因此,这里集中介绍它所实现的ODBC驱动。

  下边是Oracle ODBC的框架结构图:

  从图里边可以看出,Oracle的ODBC驱动是依赖于OCI的客户端库的,至此,应该可以推断它的效率不至于太低。OCI Client和Oracle DB server之间通过tns服务作为桥梁,因此要用上ODBC,还得为Oracle数据库服务器配置一个db service name,这个使用net manager或者net assistant都可以完成,甚至直接修改tnsnames.ora文件也可以。

  从图中可以看出,ODM即ODBC驱动管理器是由MS提供的(ODBC本身就是由微软牵头制定的, ODBC32.DLL),Oracle只不过实现了ODM中规定的一些API而已(在动态库SQora32.dll中)。要运行ODBC程序,这两个动态库不能少。但是ODBC32.dll显然是显示调用dlopen来加载sqora32.dll的。因为它在初始化时并不知道加载哪个驱动。

  再看看依赖关系图,确实可以看出SQORA32.dll依赖于OCI.DLL

  同时,我们不能忽略了另一个动态库:sqoras32.dll它只实现了一个API:ConfigDSN,即用于配置ODBC数据源DSN.

  再看看注册表中ODBC的相应项,内容如下:

  Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Oracle in OraClient10g_home1]

  “APILevel”=“1”

  “CPTimeout”=“60”

  “ConnectFunctions”=“YYY”

  “Driver”=“d:\\Oracle\\product\\10.1.0\\Client_1\\BIN\\SQORA32.DLL”

  “DriverODBCVer”=“03.51”

  “FileUsage”=“0”

  “Setup”=“d:\\Oracle\\product\\10.1.0\\Client_1\\BIN\\SQORAS32.DLL”

  “SQLLevel”=“1”可是bt的Oracle并不在c:\windows或winnt下的odbc.ini或者odbcinst.ini中保存初始化的驱动注册信息,而是直接写在注册表中。可能它是不想让用户随意改动吧。

  如果你把上述注册表中的内容写到odbc.ini或者odbcinst.ini里,同时清掉这几个注册表项,驱动将不能正确工作。

  所以,提醒重作机器的人,可以在重作机器之前,保存Oracle相应的注册表项,包括ODBC注册表项。

推荐给好友    我要收藏    我要纠错    分享到

免责声明:

① 凡本站注明“稿件来源:中国教育在线”的所有文字、图片和音视频稿件,版权均属本网所有,任何媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发表。已经本站协议授权的媒体、网站,在下载使用时必须注明“稿件来源:中国教育在线”,违者本站将依法追究责任。

② 本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。

内容推荐
eol.cn简介 | 联系方式 | 网站声明 | 京ICP证140769号 | 京ICP备12045350号 | 京公网安备 11010802020236号
版权所有 北京中教双元科技集团有限公司 EOL Corporation
Mail to: webmaster@eol.cn