0

0

自己动手创建免安装版Oracle客户端(for 9i/10g)

php中文网

php中文网

发布时间:2016-06-07 15:02:14

|

9733人浏览过

|

来源于php中文网

原创

声明: 本文均为作者本人(iihero@csdn)探索学习oracle数据库过程当中的经验总结,其方法或过程只能用于开发和学习,不能将其用于商业产品发布,违者后果自负。 Oracle数据库的客户端向来以“肥大”著称,即使是它的instant client,也不算瘦。个人以为,虽然i

声明: 本文均为作者本人(iihero@csdn)探索学习oracle数据库过程当中的经验总结,其方法或过程只能用于开发和学习,不能将其用于商业产品发布,违者后果自负。

 

Unreal Images
Unreal Images

免费的AI图片库

下载

Oracle数据库的客户端向来以“肥大”著称,即使是它的instant client,也不算瘦。个人以为,虽然instant client发布并使用了有一段时间,但是比起它的原装产品来说,稳定性和安全性肯定有些差距。所以,我宁可自己手动extract一些有用的包,为开发所用,也不愿意去单独折腾个instant client来配置。

 

这里就以9i为例,在你安装完一份Oracle服务器版或Oracle客户端,在安装的目标目录会有一份完整的目录列表。有很多很多都是用不着的文件。

 

我们通常要用的功能也就是:

1. sqlplus命令行,imp, exp, tnsping, sqlldr (用于管理)

2. oci接口库,pro*c库,jdbc, odbc (甚或oledb)等 (用于开发)

有了这些功能,基本上可以做很多事情了。

 

制作原理:

1. 抽取相关目录,发布到一个新目录。

2. 生成注册表文件到这个新目录。

3. 将这个新目录复制或移动到新机器的新目录里边,就可以注册使用了。

 

下边是我编写的一个发布的批处理脚本oraclient_dist.bat,以及过滤文件exclude.txt

exclude.txt 文件要与oraclient_dist.bat文件位于同一目录当中

其命令格式是:

oraclient_dist.bat -from d:/oracle/ora92 -to e:/dist -inst d://ora92client

意思是从源:d:/oracle/ora92目录下边提取免安装包到目录e:/dist里头,最终安装目录定制在d:/ora92client。

 

@echo off
rem
rem Copyright (c) 2005 ~ 2009, iihero@CSDN
rem
rem This script will ship an Simple Oracle client from an 
rem    installed Oracle9i/10g server or client package.
rem 
rem Any issues, please notify me: iiihero@hotmail.com
rem This script only can be used for learning/researching on oracle db.
rem 

setlocal

:LOOP
    set arg=%1
    if %arg%! == ! goto END_LOOP
    if %arg%! == -help! goto SET_HELP
    if %arg%! == -h! goto SET_HELP
    if %arg%! == -from! goto SET_FROM
    if %arg%! == -to! goto SET_TO
    if %arg%! == -inst! goto SET_INST
    goto LOOP

:SET_FROM
    shift
    set ORA_FROM=%1
    shift
    goto LOOP

:SET_TO    
    shift
    set ORA_TO=%1
    shift
    goto LOOP
:SET_INST
    shift
    set INSTALL_DIR=%1
    shift
    goto LOOP
    
:END_LOOP

echo ORA_FROM = %ORA_FROM%
if %ORA_FROM%! == ! set ORA_FROM=%ORACLE_HOME%
if %ORA_FROM%! == ! goto ERROR_RUNTIME
if %ORA_TO%! == ! goto SET_HELP
if not exist %ORA_TO% goto SET_HELP
if %INSTALL_DIR%! == ! goto SET_HELP

mkdir %ORA_TO%oracle
set ORACLIENT="%ORA_TO%oracle"
echo "Begin distribute files into %ORACLIENT%"

mkdir "%ORACLIENT%
etwork"
xcopy "%ORA_FROM%
etworkdmin" "%ORACLIENT%
etworkdmin" /Q /S /I
xcopy "%ORA_FROM%
etworkmesg" "%ORACLIENT%
etworkmesg" /Q /S /I

xcopy "%ORA_FROM%ocommon
lsdmin" "%ORACLIENT%ocommon
lsdmin" /Q /S /I
xcopy "%ORA_FROM%ocommon
lsmesg" "%ORACLIENT%ocommon
lsmesg" /Q /S /I

xcopy "%ORA_FROM%odbc" "%ORACLIENT%odbc" /Q /S /I
xcopy "%ORA_FROM%oracore" "%ORACLIENT%oracore" /Q /S /I

xcopy "%ORA_FROM%
dbmsmesg" "%ORACLIENT%
dbmsmesg" /Q /S /I
xcopy "%ORA_FROM%sqlplusmesg" "%ORACLIENT%sqlplusmesg" /Q /S /I

xcopy "%ORA_FROM%in" "%ORACLIENT%in" /Q /S /I /EXCLUDE:exclude.txt
xcopy "%ORA_FROM%ocilib" "%ORACLIENT%ocilib" /Q /S /I
xcopy "%ORA_FROM%ociinclude" "%ORACLIENT%ociinclude" /Q /S /I

xcopy "%ORA_FROM%jdbclib" "%ORACLIENT%jdbclib" /Q /S /I
xcopy "%ORA_FROM%jdbcReadme.txt" "%ORACLIENT%jdbc" /Q /S /I

xcopy "%ORA_FROM%precompdmin" "%ORACLIENT%precompdmin" /Q /S /I
xcopy "%ORA_FROM%precompmesg" "%ORACLIENT%precompmesg" /Q /S /I
xcopy "%ORA_FROM%precomplib" "%ORACLIENT%precomplib" /Q /S /I
xcopy "%ORA_FROM%precomppublic" "%ORACLIENT%precomppublic" /Q /S /I

echo "Begin register entry into %ORACLIENT%oraclient.reg"
echo Windows Registry Editor Version 5.00 >> %ORACLIENT%oraclient.reg

echo [HKEY_LOCAL_MACHINESOFTWAREODBCODBCINST.INIOracle in OraHome] >> %ORACLIENT%oraclient.reg
echo "APILevel"="1" >> %ORACLIENT%oraclient.reg
echo "CPTimeout"="60" >> %ORACLIENT%oraclient.reg
echo "ConnectFunctions"="YYY" >> %ORACLIENT%oraclient.reg
echo "Driver"="%INSTALL_DIR%\BIN\SQORA32.DLL" >> %ORACLIENT%oraclient.reg
echo "DriverODBCVer"="03.51" >> %ORACLIENT%oraclient.reg
echo "FileUsage"="0" >> %ORACLIENT%oraclient.reg
echo "Setup"="%INSTALL_DIR%\BIN\SQORAS32.DLL" >> %ORACLIENT%oraclient.reg
echo "SQLLevel"="1" >> %ORACLIENT%oraclient.reg

echo [HKEY_LOCAL_MACHINESOFTWAREORACLE] >> %ORACLIENT%oraclient.reg
echo "ORACLE_HOME"="%INSTALL_DIR%" >> %ORACLIENT%oraclient.reg
echo "ORACLE_HOME_NAME"="OraHome" >> %ORACLIENT%oraclient.reg
echo "NLS_LANG"="NA" >> %ORACLIENT%oraclient.reg

echo [HKEY_LOCAL_MACHINESOFTWAREORACLEALL_HOMES] >> %ORACLIENT%oraclient.reg
echo "HOME_COUNTER"="1" >> %ORACLIENT%oraclient.reg
echo "DEFAULT_HOME"="OraHome" >> %ORACLIENT%oraclient.reg
echo "LAST_HOME"="0" >> %ORACLIENT%oraclient.reg

echo [HKEY_LOCAL_MACHINESOFTWAREORACLEALL_HOMESID0] >> %ORACLIENT%oraclient.reg
echo "NAME"="OraHome" >> %ORACLIENT%oraclient.reg
echo "PATH"="%INSTALL_DIR%" >> %ORACLIENT%oraclient.reg
echo "NLS_LANG"="NA" >> %ORACLIENT%oraclient.reg

echo [HKEY_LOCAL_MACHINESOFTWAREORACLEHOME0] >> %ORACLIENT%oraclient.reg
echo "ID"="0" >> %ORACLIENT%oraclient.reg
echo "ORACLE_GROUP_NAME"="Oracle - OraHome" >> %ORACLIENT%oraclient.reg
echo "ORACLE_HOME_NAME"="OraHome" >> %ORACLIENT%oraclient.reg
echo "ORACLE_HOME"="%INSTALL_DIR%" >> %ORACLIENT%oraclient.reg
echo "NLS_LANG"="SIMPLIFIED CHINESE_CHINA.ZHS16GBK" >> %ORACLIENT%oraclient.reg
echo "ORACLE_HOME_KEY"="Software\ORACLE\HOME0" >> %ORACLIENT%oraclient.reg

echo "Begin genrating readme file for Oracle client into %ORACLIENT%
eadme.txt"
echo 本程序是Oracle 9.2 for windows的简化客户端版本。>> %ORACLIENT%
eadme.txt
echo 带有最基础的一些功能: sqlplus(w), exp, imp, oci, pro*c, ocopy, tkprof, tnsping, odbc, jdbc>> %ORACLIENT%
eadme.txt
echo 1. 将%ORACLIENT%目录移动到目标目录: %INSTALL_DIR", >> %ORACLIENT%
eadme.txt
echo 2. 导入注册表oracleint.reg之后,将bin目录全路径添加到path之后,>> %ORACLIENT%
eadme.txt
echo 3. 编辑%INSTALL_DIR%
etworkdmin	nsnames.ora文件,添加适当的servicename>> %ORACLIENT%
eadme.txt
echo 就可以正常使用.>> %ORACLIENT%
eadme.txt>> %ORACLIENT%
eadme.txt
echo 有问题,欢迎联系:iiihero@hotmail.com (iihero@CSDN)>> %ORACLIENT%
eadme.txt

echo "Successfully distribute oracle client into %ORACLIENT%!!!"

goto END

:SET_HELP
echo "Usage:"
echo "oraclient_dist -from <ORACLE_HOME> -to <TargetDir> -inst <InstallDir>"
echo "eg:  oraclient_dist -from d:oracleora92 -to f:income -inst d:\ora92"
echo "InstallDir format: d:\ora92 (there should be 2 '' in the path)"
echo "Thanks!   iiihero@hotmail.com (iihero@CSDN) "
goto END

:ERROR_RUNTIME
echo "Please set ORACLE_HOME or use as the help"

:END
endlocal



最终你还可以将目标目录压缩,也就30来M,最终使用时,参见发布后生成的readme.txt文件。

 

exclude.txt文件内容如下:

C-sharp代码 

  1. .bat  
  2. .bmp  
  3. COREJAVA  
  4. OracleNet  
  5. g  
  6. ldap  
  7. hs  
  8. ib  
  9. omts  
  10. scc  
  11. snmim  
  12. a  
  13. m  
  14. o  
  15. s  
  16. xp  

 

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

463

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

135

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

64

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

20

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

26

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

29

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

14

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

524

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

53

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Django 教程
Django 教程

共28课时 | 4.4万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.6万人学习

C# 教程
C# 教程

共94课时 | 9.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号