设为首页 收藏本站
查看: 615|回复: 0

[经验分享] 自己动手创建免安装版Oracle客户端(for 9i/10g)

[复制链接]
YunVN网友  发表于 2016-8-17 06:19:32 |阅读模式
  声明: 本文均为作者本人(iihero@CSDN)探索学习Oracle数据库过程当中的经验总结,其方法或过程只能用于开发和学习,不能将其用于商业产品发布,违者后果自负。
  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。
  批处理脚本的内容如下(其实,将这个脚本稍加修改就可以应用到oracle10g当中):
  @echo offremrem Copyright (c) 2005 ~ 2009, iihero@CSDNremrem 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.comrem This script only can be used for learning/researching on oracle db.rem setlocal:LOOPset arg=%1if %arg%! == ! goto END_LOOPif %arg%! == -help! goto SET_HELPif %arg%! == -h! goto SET_HELPif %arg%! == -from! goto SET_FROMif %arg%! == -to! goto SET_TOif %arg%! == -inst! goto SET_INSTgoto LOOP:SET_FROMshiftset ORA_FROM=%1shiftgoto LOOP:SET_TO    shiftset ORA_TO=%1shiftgoto LOOP:SET_INSTshiftset INSTALL_DIR=%1shiftgoto LOOP:END_LOOPecho ORA_FROM = %ORA_FROM%if %ORA_FROM%! == ! set ORA_FROM=%ORACLE_HOME%if %ORA_FROM%! == ! goto ERROR_RUNTIMEif %ORA_TO%! == ! goto SET_HELPif not exist %ORA_TO% goto SET_HELPif %INSTALL_DIR%! == ! goto SET_HELPmkdir %ORA_TO%\oracleset ORACLIENT="%ORA_TO%\oracle"echo "Begin distribute files into %ORACLIENT%"mkdir "%ORACLIENT%\network"xcopy "%ORA_FROM%\network\admin" "%ORACLIENT%\network\admin" /Q /S /Ixcopy "%ORA_FROM%\network\mesg" "%ORACLIENT%\network\mesg" /Q /S /Ixcopy "%ORA_FROM%\ocommon\nls\admin" "%ORACLIENT%\ocommon\nls\admin" /Q /S /Ixcopy "%ORA_FROM%\ocommon\nls\mesg" "%ORACLIENT%\ocommon\nls\mesg" /Q /S /Ixcopy "%ORA_FROM%\odbc" "%ORACLIENT%\odbc" /Q /S /Ixcopy "%ORA_FROM%\oracore" "%ORACLIENT%\oracore" /Q /S /Ixcopy "%ORA_FROM%\rdbms\mesg" "%ORACLIENT%\rdbms\mesg" /Q /S /Ixcopy "%ORA_FROM%\sqlplus\mesg" "%ORACLIENT%\sqlplus\mesg" /Q /S /Ixcopy "%ORA_FROM%\bin" "%ORACLIENT%\bin" /Q /S /I /EXCLUDE:exclude.txtxcopy "%ORA_FROM%\oci\lib" "%ORACLIENT%\oci\lib" /Q /S /Ixcopy "%ORA_FROM%\oci\include" "%ORACLIENT%\oci\include" /Q /S /Ixcopy "%ORA_FROM%\jdbc\lib" "%ORACLIENT%\jdbc\lib" /Q /S /Ixcopy "%ORA_FROM%\jdbc\Readme.txt" "%ORACLIENT%\jdbc\" /Q /S /Ixcopy "%ORA_FROM%\precomp\admin" "%ORACLIENT%\precomp\admin" /Q /S /Ixcopy "%ORA_FROM%\precomp\mesg" "%ORACLIENT%\precomp\mesg" /Q /S /Ixcopy "%ORA_FROM%\precomp\lib" "%ORACLIENT%\precomp\lib" /Q /S /Ixcopy "%ORA_FROM%\precomp\public" "%ORACLIENT%\precomp\public" /Q /S /Iecho "Begin register entry into %ORACLIENT%\oraclient.reg"echo Windows Registry Editor Version 5.00 >> %ORACLIENT%\oraclient.regecho [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Oracle in OraHome] >> %ORACLIENT%\oraclient.regecho "APILevel"="1" >> %ORACLIENT%\oraclient.regecho "CPTimeout"="60" >> %ORACLIENT%\oraclient.regecho "ConnectFunctions"="YYY" >> %ORACLIENT%\oraclient.regecho "Driver"="%INSTALL_DIR%\\BIN\\SQORA32.DLL" >> %ORACLIENT%\oraclient.regecho "DriverODBCVer"="03.51" >> %ORACLIENT%\oraclient.regecho "FileUsage"="0" >> %ORACLIENT%\oraclient.regecho "Setup"="%INSTALL_DIR%\\BIN\\SQORAS32.DLL" >> %ORACLIENT%\oraclient.regecho "SQLLevel"="1" >> %ORACLIENT%\oraclient.regecho [HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE] >> %ORACLIENT%\oraclient.regecho "ORACLE_HOME"="%INSTALL_DIR%" >> %ORACLIENT%\oraclient.regecho "ORACLE_HOME_NAME"="OraHome" >> %ORACLIENT%\oraclient.regecho "NLS_LANG"="NA" >> %ORACLIENT%\oraclient.regecho [HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ALL_HOMES] >> %ORACLIENT%\oraclient.regecho "HOME_COUNTER"="1" >> %ORACLIENT%\oraclient.regecho "DEFAULT_HOME"="OraHome" >> %ORACLIENT%\oraclient.regecho "LAST_HOME"="0" >> %ORACLIENT%\oraclient.regecho [HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ALL_HOMES\ID0] >> %ORACLIENT%\oraclient.regecho "NAME"="OraHome" >> %ORACLIENT%\oraclient.regecho "PATH"="%INSTALL_DIR%" >> %ORACLIENT%\oraclient.regecho "NLS_LANG"="NA" >> %ORACLIENT%\oraclient.regecho [HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0] >> %ORACLIENT%\oraclient.regecho "ID"="0" >> %ORACLIENT%\oraclient.regecho "ORACLE_GROUP_NAME"="Oracle - OraHome" >> %ORACLIENT%\oraclient.regecho "ORACLE_HOME_NAME"="OraHome" >> %ORACLIENT%\oraclient.regecho "ORACLE_HOME"="%INSTALL_DIR%" >> %ORACLIENT%\oraclient.regecho "NLS_LANG"="SIMPLIFIED CHINESE_CHINA.ZHS16GBK" >> %ORACLIENT%\oraclient.regecho "ORACLE_HOME_KEY"="Software\\ORACLE\\HOME0" >> %ORACLIENT%\oraclient.regecho "Begin genrating readme file for Oracle client into %ORACLIENT%\readme.txt"echo 本程序是Oracle 9.2 for windows的简化客户端版本。>> %ORACLIENT%\readme.txtecho 带有最基础的一些功能: sqlplus(w), exp, imp, oci, pro*c, ocopy, tkprof, tnsping, odbc, jdbc>> %ORACLIENT%\readme.txtecho 1. 将%ORACLIENT%目录移动到目标目录: %INSTALL_DIR", >> %ORACLIENT%\readme.txtecho 2. 导入注册表oracleint.reg之后,将bin目录全路径添加到path之后,>> %ORACLIENT%\readme.txtecho 3. 编辑%INSTALL_DIR%\network\admin\tnsnames.ora文件,添加适当的servicename>> %ORACLIENT%\readme.txtecho 就可以正常使用.>> %ORACLIENT%\readme.txt>> %ORACLIENT%\readme.txtecho 有问题,欢迎联系:iiihero@hotmail.com (iihero@CSDN)>> %ORACLIENT%\readme.txtecho "Successfully distribute oracle client into %ORACLIENT%!!!"goto END:SET_HELPecho "Usage:"echo "oraclient_dist -from <ORACLE_HOME> -to <TargetDir> -inst <InstallDir>"echo "eg:  oraclient_dist -from d:\oracle\ora92 -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_RUNTIMEecho "Please set ORACLE_HOME or use as the help":ENDendlocal
  exclude.txt文件内容如下:
  .bat.bmp\COREJAVA\OracleNet\ag\ldap\hs\ib\omts\scc\snmim\va\vm\vo\vs\xp
  最终你还可以将目标目录压缩,也就30来M,最终使用时,参见发布后生成的readme.txt文件。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-258689-1-1.html 上篇帖子: 问题: Oracle Database 10g 未在当前操作系统中经过认证 下篇帖子: Oracle 9i & 10g编程艺术-深入数据库体系结构——前言(转)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表