我用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监听程序,如何设置。如有哪位大高手能给个答案,太感动了。如需要加分,我绝对同意。
说明:我的程序是有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监听程序,如何设置。如有哪位大高手能给个答案,太感动了。如需要加分,我绝对同意。
解决方案 »
- 关于kill数据库进程的问题
- 关于Oracle SQL请教
- eclipse中连接oracle的问题
- plsql中的number問題
- 两个9i安装方面的问题!
- 请教oracle数据库在什么情况下会自动做checkpoint?
- linux as 3 装oralce 10 G 出错,Checking for openmotif-2.1.30-11; found Not found.
- 有哪位高手谁知道在pro*c中怎样把数据插入oracle中blob类型的字段中?
- 在Linux安装oracle 9i的过程中遇到无法显示中文
- oracle中是否有连结并访问其他种类数据库的方法?我搜索过好像没有明确的解决方法,欢迎大家指教!
- 请问在ORACLE中如何在删除表的同时级联删除相关的视图
- 请问给位高手——各大数据库之间的差异?
1、复制oracle安装目录下/bin/下27个DLL文件
2、改写客户机的注册表
3、设置监听程序。
-------------------------------------------
[email protected]
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"
如有不明,我的MAIL:[email protected]
问:不装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”
=====================================================================
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,参照格式,程序中生成一个也不麻烦。
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的開發者有所幫助,但請各位轉貼時, 注明出處,尊重作者勞動,以上內容如有不正確的地方也請來信指出,多多交流.
安装oracle客户端其实就是干这些事情呀!
;copy必须的文件也就是你们上面说的那些文件
;根据COPY文件的路径写注册表
我还以为是你们自己用语言写一个自己的客户端(在自己的应用程序中)呢??????
这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
没有一个可以解决的
提示:未找到OLE提供者,请确认提供者已安装
在 X:\oracle\ora81\oci 目录下是OCI的C++编程接口,一般提供了Borland C++和Visual C++两种,如要其它的,可向oracle公司咨询。