一、为什么制作oracle oledb最小化安装包?
首先数据库接口采用ADO,原因如下:
1、采用oci开发接口比较复杂,且更换到其它数据库(如mysql)时,改动会比较大
2、采用ODBC的话,需要在操作系统上做额外配置
provider采用OraOLEDB.Oralce,原因如下:
使用MSDAORA(微软的oracle驱动)一样需要安装oracle客户端,且不支持blob和clob类型字段读写,无法读取数据库里面的位图文件
二、制作过程
从如下地址下载
oledb for oracle的安装包
http://www.oracle.com/technology/software/tech/windows/ole_db/htdocs/utilsoft.htm
如果连接失效,则google搜索“oledb for oracle”
我下载的文件名是ODAC101040.exe,里面除了oledb for oracle以外,还有很多其它的东西
不过可以在安装过程中选择只安装oledb for oralce
安装完成后,提取根目录下的如下几个子目录:
bin
nls
oracore
如果需要使用tnsnames.ora配置别名的话,还需要保留network目录
network目录下,可只保留一个admin子目录
admin子目录里,可以只有一个tnsnames.ora文件
nls和oracore这两个目录没有仔细研究哪些是必须的,全部保留了。
好像是一些语言、时区相关的配置.
bin目录下,可以只保留oracle.key(这个文件记录了注册表中的路径)和所有dll文件
然后再查看OraOLEDB10.dll所依赖的dll,删除其它的
或者是逐个尝试删除,影响正常使用的dll就把恢复。
经过以上几步,得到的文件就只剩下40多M了
再从注册表(一般是在HKLM/software/oracle)导出oracle.key中记录的路径的节点,存为oracle.reg文件
三、安装过程
将上述几个目录拷贝到一个文件夹下,如c:/oracle
将c:/oracle/bin添加到环境变量path里面
添加环境变量nls_lang为SIMPLIFIED CHINESE_CHINA.ZHS16GBK以支持中文
添加环境变量oracle_home为c:/oracle
双击oracle.reg导入注册表
使用regedit打开注册表,找到oracle.key中所记录的路径对应的节点
更改其中ORACLE_HOME和OLEDB两个键值中的路径为c:/oracle和c:/oracle/oledb/mesg
使用regsvr32注册OraOLEDB10.dll
附录:
bin目录下保留的文件列表
msvcr71.dll
oracle.key
oraclient10.dll
oracommon10.dll
ORACORE10.DLL
orageneric10.dll
orahasgen10.dll
oraldapclnt10.dll
oran10.dll
ORANCDS10.DLL
orancrypt10.dll
oranhost10.dll
oranl10.dll
oranldap10.dll
ORANLS10.DLL
orannzsbb10.dll
oranro10.dll
orantcp10.dll
orantns10.dll
oraocr10.dll
oraocrb10.dll
OraOLEDB10.dll
OraOLEDB10us.dll
OraOLEDBgmr10.dll
OraOLEDBpus10.dll
OraOLEDBrst10.dll
OraOLEDButl10.dll
ORAPLP10.DLL
ORAPLS10.DLL
ORASLAX10.DLL
ORASNLS10.DLL
ORASQL10.DLL
ORAUNLS10.DLL
orauts.dll
oravsn10.dll
ORAXML10.DLL
为了支持使用oci的程序,如plsql developer,可以添加如下两个文件
oci.dll
oraociei10.dll
为了使用oracle自带的命令行工具sqlplus,添加如下两个文件
Orasqlplusic10.dll
sqlplus.exe