我用VB做C/S程序,需要把ORACLE客户端打包,按照网上文章的说法做后不成功,网上文章的做法是:
1 把ORACLE客户端的一些目录拷贝
2 把注册表中的ORACLE项用installshield导到目标机上,修改几个键值
3 改tnsnames.ora中的设置
可我照做后,运行VB程序连接数据库,提示:provider cannot be found,it may not be properly installed.
请有过成功打包ORACLE客户端的高手们帮助我,谢谢。

解决方案 »

  1.   

    在这个客户端执行sqlplus连接数据库是否成功?如果不成功说明是oracle客户端没有被正确设置。
    你可以到youngcow.net上下载个免安装的oracle客户端试试。
      

  2.   

    如果是在client安装了Oracle,就不要进行打包的.
      

  3.   

    把注册表的oracle健值全部删除,然后只安装oracle客户端,测试连接成功以后,按照上遍说的那三条作就可以了:
    1、复制oracle客户端目录到目标机相同的目录下
    2、导出只安装了oracle客户端机子的注册表中的oracle键值,导入到目标机
    3、根据用户oracle服务器安装的地址和实例,修改tnsnames.ora
      

  4.   

    从youngcow.net上下载的免安装的oracle客户端里面有说明文件指示具体怎样操作。
      

  5.   

    是不一定能成功,我以前测试过,对于pb是可以简单的通过的,
    对于vb,vc连接方式就报lz
    的错,我怀疑是某些DLL,没有注册,但暂时找不到要注册那些东西
      

  6.   

    就是oledb那种方式不行,不知道pb用的什么方式,
    可以简单的搞定
      

  7.   

    在安装了Oracle客户端程序后,在Oracle安装目录下有如下目录和文件是连接Oracle数据库服务器所必需的:(最好保持目录层次关系结构)
    Oracle\BIN目录以及下面的所有DLL文件,并且保证应用程序可以找到该目录,即该目录为系统目录或者PATH目录。
    Oracle\OCOMMON\NLS\ADMIN目录以及其下所有文件
    Oracle\OCOMMON\NLS\MESG目录以及其下所有文件
    Oracle\NETWORK\tnsnames.ora
    Oracle\ORACORE\Mesg以及其下所有MSB文件 添加如下注册表:
    =====================================================================
    [HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE]
    "ORACLE_HOME"="E:\\oracle" //安装时确定的Oracle客户端安装主目录
    "ORACLE_HOME_NAME"="server" //Oracle主目录名称
    "NLS_LANG"="NA"[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ALL_HOMES]
    "HOME_COUNTER"="1"//主目录个数
    "DEFAULT_HOME"="Oracle815"//缺省的主目录名称
    "LAST_HOME"="0"[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ALL_HOMES\ID0]
    "NAME"="Oracle815"//第一个主目录名称
    "PATH"="E:\\oracle" //Oracle安装目录
    "NLS_LANG"="NA"[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0]
    "ORACLE_HOME_NAME"="Oracle815"//主目录名称
    "ORACLE_HOME"="E:\\oracle"//Oracle安装目录
    "NLS_LANG"="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"//语言
    "ORACLE_HOME_KEY"="Software\\ORACLE\\HOME0"//主目录信息存放位置
    "ORACLE_BASE"="E:\\oracle" //Oracle安装目录
    "TNS_ADMIN"="E:\\oracle\\NETWORK\\tnsnames.ora"//tnsnames.ora存放的位置,如果将该文件放在“E:\oracle\NETWORK\”目录下,则“TNS_ADMIN”赋值为“E:\\oracle\\NETWORK\\tnsnames.ora”注意:注册表项以你从安装客户端机器上导出的为准,根据上面的例子自己去掉多余的,
    bin文件中的dll有一些可能是多余的,你可以自己尝试找出来。清单我就不罗嗦了。
      

  8.   

    youngcow.net上的免安装的oracle 9.2客户端只是oracel基本的客户端。
    如果需要使用oracle提供的ODBC驱动,还需要在bin目录下包含sqora32.dll、sqoras32.dll、sqresus.dll,此外在注册表HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers下增加"Oracle in OraHome"="Installed"。
    如果需要使用oracle提供的oledb驱动,需要在bin目录下包含OraOLEDB.dll、OraOLEDB.tlb、OraOLEDBgmr.dll、OraOLEDBpus.dll、OraOLEDBrfc.dll、OraOLEDBrmc.dll、OraOLEDBrst.dll、OraOLEDBus.dll、OraOLEDButl.dll、OraOLEDBzhs.dll,并在注册表中增加下面内容(假设ORACLE_HOME=D:\oracle\oracle920):
    [HKEY_CLASSES_ROOT\CLSID\{3F63C36E-51A3-11D2-BB7D-00C04FA30080}]
    @="OraOLEDB.Oracle"
    "OLEDB_SERVICES"=dword:ffffffff[HKEY_CLASSES_ROOT\CLSID\{3F63C36E-51A3-11D2-BB7D-00C04FA30080}\ExtendedErrors]
    @="Extended Error Lookup Service"[HKEY_CLASSES_ROOT\CLSID\{3F63C36E-51A3-11D2-BB7D-00C04FA30080}\ExtendedErrors\{3FC8E6E4-53FF-11D2-BB7D-00C04FA30080}]
    @="Oracle OLE DB Error Lookup"[HKEY_CLASSES_ROOT\CLSID\{3F63C36E-51A3-11D2-BB7D-00C04FA30080}\InprocServer32]
    @="D:\\oracle\\oracle920\\bin\\OraOLEDB.DLL"
    "ThreadingModel"="Both"[HKEY_CLASSES_ROOT\CLSID\{3F63C36E-51A3-11D2-BB7D-00C04FA30080}\OLE DB Provider]
    @="Oracle Provider for OLE DB"[HKEY_CLASSES_ROOT\CLSID\{3F63C36E-51A3-11D2-BB7D-00C04FA30080}\ProgID]
    @="OraOLEDB.Oracle.1"[HKEY_CLASSES_ROOT\CLSID\{3F63C36E-51A3-11D2-BB7D-00C04FA30080}\TypeLib]
    @="{0BB9AFD1-51A1-11D2-BB7D-00C04FA30080}"[HKEY_CLASSES_ROOT\CLSID\{3F63C36E-51A3-11D2-BB7D-00C04FA30080}\VersionIndependentProgID]
    @="OraOLEDB.Oracle"[HKEY_CLASSES_ROOT\OraOLEDB.ErrorLookup]
    @="Oracle OLE DB Error Lookup"[HKEY_CLASSES_ROOT\OraOLEDB.ErrorLookup\CLSID]
    @="{3FC8E6E4-53FF-11D2-BB7D-00C04FA30080}"[HKEY_CLASSES_ROOT\OraOLEDB.ErrorLookup\CurVer]
    @="OraOLEDB.ErrorLookup.1"[HKEY_CLASSES_ROOT\OraOLEDB.ErrorLookup.1]
    @="Oracle OLE DB Error Lookup"[HKEY_CLASSES_ROOT\OraOLEDB.ErrorLookup.1\CLSID]
    @="{3FC8E6E4-53FF-11D2-BB7D-00C04FA30080}"[HKEY_CLASSES_ROOT\OraOLEDB.Oracle]
    @="Oracle Provider for OLE DB"[HKEY_CLASSES_ROOT\OraOLEDB.Oracle\CLSID]
    @="{3F63C36E-51A3-11D2-BB7D-00C04FA30080}"[HKEY_CLASSES_ROOT\OraOLEDB.Oracle\CurVer]
    @="OraOLEDB.Oracle.1"[HKEY_CLASSES_ROOT\OraOLEDB.Oracle.1]
    @="Oracle Provider for OLE DB"[HKEY_CLASSES_ROOT\OraOLEDB.Oracle.1\CLSID]
    @="{3F63C36E-51A3-11D2-BB7D-00C04FA30080}"
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{3F63C36E-51A3-11D2-BB7D-00C04FA30080}]
    @="OraOLEDB.Oracle"
    "OLEDB_SERVICES"=dword:ffffffff[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{3F63C36E-51A3-11D2-BB7D-00C04FA30080}\ExtendedErrors]
    @="Extended Error Lookup Service"[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{3F63C36E-51A3-11D2-BB7D-00C04FA30080}\ExtendedErrors\{3FC8E6E4-53FF-11D2-BB7D-00C04FA30080}]
    @="Oracle OLE DB Error Lookup"[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{3F63C36E-51A3-11D2-BB7D-00C04FA30080}\InprocServer32]
    @="D:\\oracle\\oracle920\\bin\\OraOLEDB.DLL"
    "ThreadingModel"="Both"[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{3F63C36E-51A3-11D2-BB7D-00C04FA30080}\OLE DB Provider]
    @="Oracle Provider for OLE DB"[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{3F63C36E-51A3-11D2-BB7D-00C04FA30080}\ProgID]
    @="OraOLEDB.Oracle.1"[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{3F63C36E-51A3-11D2-BB7D-00C04FA30080}\TypeLib]
    @="{0BB9AFD1-51A1-11D2-BB7D-00C04FA30080}"[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{3F63C36E-51A3-11D2-BB7D-00C04FA30080}\VersionIndependentProgID]
    @="OraOLEDB.Oracle"[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\OraOLEDB.ErrorLookup]
    @="Oracle OLE DB Error Lookup"[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\OraOLEDB.ErrorLookup\CLSID]
    @="{3FC8E6E4-53FF-11D2-BB7D-00C04FA30080}"[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\OraOLEDB.ErrorLookup\CurVer]
    @="OraOLEDB.ErrorLookup.1"[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\OraOLEDB.ErrorLookup.1]
    @="Oracle OLE DB Error Lookup"[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\OraOLEDB.ErrorLookup.1\CLSID]
    @="{3FC8E6E4-53FF-11D2-BB7D-00C04FA30080}"[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\OraOLEDB.Oracle]
    @="Oracle Provider for OLE DB"[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\OraOLEDB.Oracle\CLSID]
    @="{3F63C36E-51A3-11D2-BB7D-00C04FA30080}"[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\OraOLEDB.Oracle\CurVer]
    @="OraOLEDB.Oracle.1"[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\OraOLEDB.Oracle.1]
    @="Oracle Provider for OLE DB"[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\OraOLEDB.Oracle.1\CLSID]
    @="{3F63C36E-51A3-11D2-BB7D-00C04FA30080}"[HKEY_CLASSES_ROOT\CLSID\{3FC8E6E4-53FF-11D2-BB7D-00C04FA30080}]
    @="Oracle OLE DB Error Lookup"[HKEY_CLASSES_ROOT\CLSID\{3FC8E6E4-53FF-11D2-BB7D-00C04FA30080}\InprocServer32]
    @="D:\\oracle\\oracle920\\bin\\OraOLEDB.DLL"
    "ThreadingModel"="Both"[HKEY_CLASSES_ROOT\CLSID\{3FC8E6E4-53FF-11D2-BB7D-00C04FA30080}\ProdID]
    @="OraOLEDB.ErrorLookup.1"[HKEY_CLASSES_ROOT\CLSID\{3FC8E6E4-53FF-11D2-BB7D-00C04FA30080}\VersionIndependentProgID]
    @="OraOLEDB.ErrorLookup.1"[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{3FC8E6E4-53FF-11D2-BB7D-00C04FA30080}]
    @="Oracle OLE DB Error Lookup"[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{3FC8E6E4-53FF-11D2-BB7D-00C04FA30080}\InprocServer32]
    @="D:\\oracle\\oracle920\\bin\\OraOLEDB.DLL"
    "ThreadingModel"="Both"[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{3FC8E6E4-53FF-11D2-BB7D-00C04FA30080}\ProdID]
    @="OraOLEDB.ErrorLookup.1"[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{3FC8E6E4-53FF-11D2-BB7D-00C04FA30080}\VersionIndependentProgID]
    @="OraOLEDB.ErrorLookup.1"[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\OLEDB]
    "CacheType"="Memory"
    "ChunkSize"="100"
    "DistribTX"="1"
    "FetchSize"="100"
    "OSAuthent"="0"
    "PLSQLRSet"="0"
    "PwdChgDlg"="1"
    "SchRstLng"="10000"
    "UserDefFn"="0"
    "DisableRetClause"="1"
    "VCharNull"="1"
    "TraceCategory"="0"
    "TraceFileName"="c:\\OraOLEDB.trc"
    "TraceLevel"="0"
    "TraceOption"="0"
      

  9.   

    注册bin目录下的OraOLEDB.dll文件regsvr32 c:\OraOLEDB.dll
      

  10.   

    你可以从oracle.com下载使用oracle 10g instant client,支持9i
    不过不是安装包,使用起来还是有点麻烦.如果你想要安装包,可以到www.irisbay.com下载
      

  11.   

    Oracle Instant Client 虹湾安装版Oracle Instant Client 10.2.0.1  可以免费分发的Oracle小巧客户端
    可连接8.1.7以上的Oracle数据库
    可安装于从未安装过Oracle的机器
    可以支持delphi,VB或PB开发的应用程序
    可以支持PL/SQL Developer安装内容:
    0. 复制文件
    1. 设置环境变量ORACLE_HOME, NLS_LANG, TNS_ADMIN
    2. 将安装目录加入PATH
    3. 生成默认的TNSNAMES.ORA安装制作: www.irisbay.com  2005.12.7内容来源 http://www.oracle.com/technology/software/tech/oci/instantclient/
      

  12.   

    我想把ORACLE客户端打包进installshield做成的安装程序中,想把ORACLE目录总安装在C:\下,但我不知在installshield中怎么做?我只能做到在系统盘根目录下增加一个文件夹,但若系统未装在c:\而是D盘或其他盘,则会失败,因为我的注册表中的ORACLE的项值都是指向c:\oracle的,怎么才能让oracle目录一定安装在c:\下呢?
      

  13.   

    Oracle Instant Client 10.2.0.1 好用。BTW: 这个包安装后会有个88M的dll文件,真是让俺开了眼!
      

  14.   

    我在instllshield V10中已可把ORACLE固定安装到c:\根目录下,但在修改系统环境变量时,我用的是导入的方法,即导入一个现成的.reg文件,选择 do not overwrite the registry data,但安装后发现它仍把目标机上的原来的系统环境变量给覆盖掉了,奇怪啊,为什么呢?我想把目标机器上的系统环境变量中加入c:\oracle\ora81\bin; ,怎么办?