我用VC做了一个数据库应用,后台数据库用的是ORACLE 8i .本机运行当然正常。但我要在网络上用,如果其他机器没装ORACLE 8i的客户端,有什么办法。
说明:我的程序是有ORACLE提供的OCI(Oracle Call Interface)来调用数据库的,而没用ODBC、DAO、ADO。
注:1、我已知OCI用到了oracle 8i安装目录下BIN下共27个DLL文件。
    2、我已知OCI要用注册表中local_machine/software/oracle/下的内容
    3、请高手解释这些注册表文件的内容(这是我从一个已装了oracle的机子上复制下来的,我想把它用到其它未装oracle客户端的机子上,如何改)。如下:Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE]
"inst_loc"="C:\\Program Files\\Oracle\\Inventory"
"ORACLE_HOME"="D:\\oracle\\ora81"
"ORACLE_HOME_NAME"="OraHome81"
"API"="D:\\oracle\\ora81\\dbs"
"ORACLE_GROUP_NAME"="Oracle - OraHome81"
"NLS_LANG"="NA"
"OLEDB"="D:\\oracle\\ora81\\oledb\\mesg"
"VOBHOME2.0"="D:\\oracle\\ora81"
"OO4O"="D:\\oracle\\ora81\\oo4o\\mesg"[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ALL_HOMES]
"HOME_COUNTER"="1"
"DEFAULT_HOME"="OraHome81"
"LAST_HOME"="0"[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ALL_HOMES\ID0]
"NAME"="OraHome81"
"PATH"="D:\\oracle\\ora81"
"NLS_LANG"="NA"[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0]
"ID"="0"
"ORACLE_GROUP_NAME"="Oracle - OraHome81"
"ORACLE_HOME_NAME"="OraHome81"
"ORACLE_HOME"="D:\\oracle\\ora81"
"NLS_LANG"="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
"ORACLE_SID"="QIAODB"
"ORACLE_HOME_KEY"="Software\\ORACLE\\HOME0"
"SQLPATH"="D:\\oracle\\ora81\\dbs"
"ORACLE_BASE"="D:\\oracle"
"MSHELP_TOOLS"="D:\\oracle\\ora81\\MSHELP"
"RDBMS_CONTROL"="D:\\oracle\\ora81\\DATABASE"
"RDBMS_ARCHIVE"="D:\\oracle\\ora81\\DATABASE\\ARCHIVE"
"ORA_QIAODB_AUTOSTART"=hex(2):54,00,52,00,55,00,45,00,00,00
"ORA_QIAODB_PFILE"=hex(2):44,00,3a,00,5c,00,6f,00,72,00,61,00,63,00,6c,00,65,\
  00,5c,00,61,00,64,00,6d,00,69,00,6e,00,5c,00,51,00,49,00,41,00,4f,00,44,00,\
  42,00,5c,00,70,00,66,00,69,00,6c,00,65,00,5c,00,69,00,6e,00,69,00,74,00,2e,\
  00,6f,00,72,00,61,00,00,00
"ORA_QIAODB_SHUTDOWN"=hex(2):54,00,52,00,55,00,45,00,00,00
"ORA_QIAODB_SHUTDOWNTYPE"=hex(2):69,00,00,00
"ORA_QIAODB_SHUTDOWN_TIMEOUT"=hex(2):33,00,30,00,00,00
4、另外,客户机上要不要设置oracle监听程序,如何设置。如有哪位大高手能给个答案,太感动了。如需要加分,我绝对同意。

解决方案 »

  1.   

    说说你的不用安装oracle客户端而访问oracle服务器的方法吧!
      

  2.   

    ??????--------------------------------------------
    1、复制oracle安装目录下/bin/下27个DLL文件
    2、改写客户机的注册表
    3、设置监听程序。
    -------------------------------------------
      

  3.   

    这个方法太复杂, 不如用java 写一个中间件好了。 相信您这么NB的人定能写出来
      

  4.   

    各位朋友,小弟近日正在学习oracle,由于授课教师水平很戳,所以学习没有多大进展,本人想请各位朋友帮我找一些oracle的电子文档或幻灯片,以助我学习提高,小弟感激不尽.来信请发:
    [email protected]
      

  5.   

    1.在安装了Oracle客户端程序后,在Oracle安装目录下有如下目录和文件是连接Oracle数据库服务器所必需的:(最好保持目录层次关系结构)
    2.Oracle\BIN目录以及下面的27个DLL文件,并且保证应用程序可以找到该目录,即该目录为系统目录或者PATH目录。
    3.Oracle\OCOMMON\NLS\ADMIN目录以及其下所有文件
    4.Oracle\OCOMMON\NLS\MESG目录以及其下所有文件
    5.Oracle\NETWORK\ADMIN\tnsnames.ora
    6.Oracle\ORACORE\Mesg以及其下所有MSB文件 7.导入注册表到客户机:
    REGEDIT4
    [HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE]
    "inst_loc"="C:\\Program Files\\Oracle\\Inventory"
    "ORACLE_HOME"="D:\\oracle\\ora81"
    "ORACLE_HOME_NAME"="OraHome81"
    "API"="D:\\oracle\\ora81\\dbs"
    "ORACLE_GROUP_NAME"="Oracle - OraHome81"
    "NLS_LANG"="NA"
    "OLEDB"="D:\\oracle\\ora81\\oledb\\mesg"
    "VOBHOME2.0"="D:\\oracle\\ora81"
    "OO4O"="D:\\oracle\\ora81\\oo4o\\mesg"[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ALL_HOMES]
    "HOME_COUNTER"="1"
    "DEFAULT_HOME"="OraHome81"
    "LAST_HOME"="0"[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ALL_HOMES\ID0]
    "NAME"="OraHome81"
    "PATH"="D:\\oracle\\ora81"
    "NLS_LANG"="NA"[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0]
    "ID"="0"
    "ORACLE_GROUP_NAME"="Oracle - OraHome81"
    "ORACLE_HOME_NAME"="OraHome81"
    "ORACLE_HOME"="D:\\oracle\\ora81"
    "NLS_LANG"="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
    "ORACLE_SID"="QIAODB"
    "ORACLE_HOME_KEY"="Software\\ORACLE\\HOME0"
    "SQLPATH"="D:\\oracle\\ora81\\dbs"
    "ORACLE_BASE"="D:\\oracle"
    "MSHELP_TOOLS"="D:\\oracle\\ora81\\MSHELP"
    "RDBMS_CONTROL"="D:\\oracle\\ora81\\DATABASE"
    "RDBMS_ARCHIVE"="D:\\oracle\\ora81\\DATABASE\\ARCHIVE"
      

  6.   

    补充一下:请注意注册表中的路径与目标机的实标路径一致。
    如有不明,我的MAIL:[email protected]
      

  7.   

    这个帖子我帮你结了,并发分也给你了,提交了faq
      

  8.   

    不装Oracle客户端怎么运行编译好的exe
     
    问:不装Oracle客户端怎么运行编译好的可执行文件?答:
    --摘自《PB8.0进阶篇》 
    在安装了Oracle客户端程序后,在Oracle安装目录下有如下目录和文件是连接Oracle数据库服务器所必需的:(最好保持目录层次关系结构)
    Oracle\BIN目录以及下面的所有DLL文件,并且保证应用程序可以找到该目录,即该目录为系统目录或者PATH目录。
    Oracle\OCOMMON\NLS\ADMIN目录以及其下所有文件
    Oracle\OCOMMON\NLS\MESG目录以及其下所有文件
    Oracle\NETWORK\tnsnames.ora
    Oracle\ORACORE\Mesg以及其下所有MSB文件 PowerBuilder程序需要:PBO8480.DLL、PBVM80.DLL、PBDWE80.DLL、libjcc.dll 添加如下注册表:
    =====================================================================
    [HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE]
    "ORACLE_HOME"="E:\\oracle" //安装时确定的Oracle客户端安装主目录
    "ORACLE_HOME_NAME"="iSuites" //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”
    =====================================================================
      

  9.   

    不安装Oracle客户连接Oracle 8的方法请将以下文件拷贝到运行文件所在目录 一、ODBC动态库 :ctl3d32.dll msvcrt40.dll odbc16gt.dll odbc32.dll odbc32gt.dll odbccp32.dll odbccr32.dll odbcint.dll 二、建立EXTRA子目录,将MSVCRT.DLL文件拷贝到该子目录下EXTRA\MSVCRT.DLL 三、ORACLE动态库及配置文件 Tnsnames.ora CORE35O.DLL NASNSNT.DLL NAUNTSNT.DLL NCRNT.DLL Nlnt.dll NLSRTL32.DLL Nnfdnt.dll NNFNNT.DLL NSNT.DLL NTNT.DLL NTTNT.DLL CIW32.DLL Ora73.dll OTRACE73.DLL Sqlnet.ora Sqltnsnt.dll CORE35.DLL 四、PB动态库 pbvm70.dll pbdwe70.dll Pbo7370.dll PBO8470.DLL pbodb70.dll libjcc.dll  liulee(流方-琢磨Notes中...)
    Oracle的客户端不安装让pb连上,我记得以前有帖子的,你可以搜索一下。
    具体步骤。
    1.先在某机器上安装好客户端(最好安装在c盘);
    2.复制此客户端oracle目录下的所有文件作为独立的oracle安装文件;
    3.搜索注册表,找到 HKey_Local_machine\software\oracle,把此项目及分支全部导出。
    4.打包好你的pb程序,并独立打包好oracle客户端和注册表导出文件。
    5.到干净的客户端,解开两个包,导入注册表文件,然后加入路径支持:
      path=%path%;"c:\Ora817\bin"
    这样处理,应该没有问题,因为我就是这样快速处理了几十个机器。若不想搞注册表,你可以在程序中自己写注册表,构成Oracle客户端必要的注册表支持,至于路径,手工添加应该不难。至于Oracle客户端那些文件不需要,这个不好说,你可以把那些bin目录下的所有exe删除,Oracle Document删除(7x兆)至于定义Oracle服务,找到 Ora817\net80\admin\TnsName.ora,参照格式,程序中生成一个也不麻烦。
      

  10.   

    csdn.net/develop/read_article.asp?id=8435
    Client端不安裝Oracle的方法廣東中山   謝殿宏2001/04/03 前言:曾在網上見到許多人問Client端不安裝Oracle而使PB程序連上後臺Oracle資料庫的方法,本人從事pb+oracle開發已有些時日,每次都得安裝Oracle的Client端程式,而我面對的Client端則有幾百個之多,工作量可以想象何其大,所以就在這方面動了下腦筋,經過反復試驗,終於搞定. 開發環境:    前臺:Pb6.5+win95+Oracle 7.3.4 Client    後臺:Redhat Linux 6.2+Oracle 8.1.6 有關Oracle資料庫別名的配置:(%Oracle_homes% 表示Oracle的安裝目錄)  當在SQL NetEasy Configuration中配置Oracle資料庫別名時,與SQL Server 7和ODBC不同的是  Oracle並沒有把資料庫別名資訊寫入註冊表中,而是寫入了一個文本文件之中:  %Oracle_homes%\network\admin\tnsnames.ora,(此文件與同目錄下的sqlnet.ora一起使用),當運行pb程序的時候,實際上在讀取這兩文件中的數據庫配置信息. 應用程序運行所需要的文件: 
     
     檔案名稱
     
     文件來源
      
     Pbvm60.dll
     
     C:\program files\Sybase\share  必不可少
      
     Pbdwe60.dll
     
     C:\program files\Sybase\share  必不可少
      
     Pbo7360.dll
     
     C:\program files\Sybase\share  必不可少
      
     Ociw32.dll
     
     %Oracle_homes%\bin  必不可少
      
     Core35o.dll
     
     %Oracle_homes%\bin  必不可少
      
     Nlsrtl32.dll
     
     %Oracle_homes%\bin  必不可少
      
     Core35.dll
     
     %Oracle_homes%\bin  必不可少
      
     Ora73.dll
     
     %Oracle_homes%\bin  必不可少
      
     Ncrnt.dll
     
     %Oracle_homes%\bin  必不可少
      
     Nnfnnt.dll
     
     %Oracle_homes%\bin  必不可少
      
     Nnfdnt.dll
     
     %Oracle_homes%\bin  必不可少
      
     Ntnt.dll
     
     %Oracle_homes%\bin  必不可少
      
     Otrace73.dll
     
     %Oracle_homes%\bin  必不可少
      
     Nlnt.dll
     
     %Oracle_homes%\bin  必不可少
      
     Nasnsnt.dll
     
     %Oracle_homes%\bin  必不可少
      
     Nsnt.dll
     
     %Oracle_homes%\bin  必不可少
      
     Sqltnsnt.dll
     
     %Oracle_homes%\bin  必不可少
      
     Nttnt.dll
     
     %Oracle_homes%\bin  必不可少
      
     Ntnnt.dll
     
     %Oracle_homes%\bin  必不可少
      
     Tnsnames.ora
     
     %Oracle_homes%\network\admin  必不可少
      
     Sqlnet.ora
     
     %Oracle_homes%\network\admin  必不可少
      
     Lx*.nlb
     
     %Oracle_homes%\nlsrtl32\data  共有414個文件,其中,Lx3*.nlb(63個文件)不需要,其餘351個文件是必不可少的,全部文件大小不超過2M, 
     
     測試環境:     我找了一台新電腦,裝上Win98,建立一個新目錄:C:\test,將上述文件copy到此目錄下,    再修改註冊表:\\HKEY_LOCAL_MACHINE\SOFTWARE下的內容    在SOFTWARE下新增一個子鍵:ORACLE    選擇ORACLE,在對應右窗格內新增兩個串值:    NLSRTL32     其值爲:C:\TEST    NLS_LANG  其值爲:TRADITIONAL CHINESE_TAIWAN.ZHT16BIG5     其中,NLSRTL32是爲*.NLB文件指明搜索路徑,NLS_LANG則是指明ORACLE的符集,我  測試時用的是繁體中文.     其後我又找了兩台未裝ORACLE的電腦測試,屢試不爽. 說明:若是PB7或ORACLE8,上述文件請對照更改,有一些dll文件是位於C:\windows\system下,如:netbios.dll等是Windows自有的,所以未列入,實際作業時請酌情考慮. 借助工具:Sax Setup 6.0    Sax Setup是一個相當簡單易用的安裝打包工具,它有一個最大的特點就是能偵測出應用程序運行時所需要的dll文件,但不能偵測出其他類型的文件,且要註冊版本才行.Sax Setup 6.0 的註冊碼:3160-3194666-18 後記:以上過程,我花了近4天的時間,希望能為pb+oracle的開發者有所幫助,但請各位轉貼時,   注明出處,尊重作者勞動,以上內容如有不正確的地方也請來信指出,多多交流.
      

  11.   

    WO KAO:
    安装oracle客户端其实就是干这些事情呀!
    ;copy必须的文件也就是你们上面说的那些文件
    ;根据COPY文件的路径写注册表
    我还以为是你们自己用语言写一个自己的客户端(在自己的应用程序中)呢??????
      

  12.   

    没想到我涉足oracle才一个星期,发出的第一个贴子就有这么多人关心,不由惭愧,只得仔细地审核一下了,发现漏了一点,即OCI要用到的27个DLL没列出,使不少朋友来信问我,浪费了大家的宝贵时间,为节约我和大家的时间,一并答复如下:
    这27个DLL是(我在ORACLE 8i下用VC在调试模式得到的,其他版本可能略有出入):oci.dll
    oraclient8.dll
    oracommon8.dll
    oracore8.dll
    orageneric8.dll
    oraldapclnt8.dll
    oran8.dll
    ORANCDS8.DLL
    orancrypt8.dll
    oranhost8.dll
    oranl8.dll
    oranldap8.dll
    ORANLS8.DLL
    oranms.dll
    oranmsp.dll
    orannds8.dll
    orannzsbb8.dll
    oranoname8.dll
    oranro8.dll
    orantcp8.dll
    orantns8.dll
    ORAPLS8.DLL
    ORASLAX8.dll
    ORASQL8.DLL
    oratrace8.dll
    oravsn8.dll
    orawtc8.dll
      

  13.   

    在www.51delphi.com上有,是delphi的组件
      

  14.   

    不用任何dll,只要有tcp/ip就可
      

  15.   

    我用ADO连接的,以上方法我花了3天都实验了
    没有一个可以解决的
    提示:未找到OLE提供者,请确认提供者已安装
      

  16.   

    此方法配合C++的OCI接口可做成超高速的数据库访问程序。
    在 X:\oracle\ora81\oci 目录下是OCI的C++编程接口,一般提供了Borland C++和Visual C++两种,如要其它的,可向oracle公司咨询。