热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

自己动手创建免安装版Oracle客户端(for9i/10g)-mysql教程

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

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

声明: 本文均为作者本人(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。

@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%\network"
xcopy "%ORA_FROM%\network\admin" "%ORACLIENT%\network\admin" /Q /S /I
xcopy "%ORA_FROM%\network\mesg" "%ORACLIENT%\network\mesg" /Q /S /I

xcopy "%ORA_FROM%\ocommon\nls\admin" "%ORACLIENT%\ocommon\nls\admin" /Q /S /I
xcopy "%ORA_FROM%\ocommon\nls\mesg" "%ORACLIENT%\ocommon\nls\mesg" /Q /S /I

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

xcopy "%ORA_FROM%\rdbms\mesg" "%ORACLIENT%\rdbms\mesg" /Q /S /I
xcopy "%ORA_FROM%\sqlplus\mesg" "%ORACLIENT%\sqlplus\mesg" /Q /S /I

xcopy "%ORA_FROM%\bin" "%ORACLIENT%\bin" /Q /S /I /EXCLUDE:exclude.txt
xcopy "%ORA_FROM%\oci\lib" "%ORACLIENT%\oci\lib" /Q /S /I
xcopy "%ORA_FROM%\oci\include" "%ORACLIENT%\oci\include" /Q /S /I

xcopy "%ORA_FROM%\jdbc\lib" "%ORACLIENT%\jdbc\lib" /Q /S /I
xcopy "%ORA_FROM%\jdbc\Readme.txt" "%ORACLIENT%\jdbc\" /Q /S /I

xcopy "%ORA_FROM%\precomp\admin" "%ORACLIENT%\precomp\admin" /Q /S /I
xcopy "%ORA_FROM%\precomp\mesg" "%ORACLIENT%\precomp\mesg" /Q /S /I
xcopy "%ORA_FROM%\precomp\lib" "%ORACLIENT%\precomp\lib" /Q /S /I
xcopy "%ORA_FROM%\precomp\public" "%ORACLIENT%\precomp\public" /Q /S /I

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

echo [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Oracle 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_MACHINE\SOFTWARE\ORACLE] >> %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_MACHINE\SOFTWARE\ORACLE\ALL_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_MACHINE\SOFTWARE\ORACLE\ALL_HOMES\ID0] >> %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_MACHINE\SOFTWARE\ORACLE\HOME0] >> %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%\readme.txt"
echo 本程序是Oracle 9.2 for windows的简化客户端版本。>> %ORACLIENT%\readme.txt
echo 带有最基础的一些功能: sqlplus(w), exp, imp, oci, pro*c, ocopy, tkprof, tnsping, odbc, jdbc>> %ORACLIENT%\readme.txt
echo 1. 将%ORACLIENT%目录移动到目标目录: %INSTALL_DIR", >> %ORACLIENT%\readme.txt
echo 2. 导入注册表oracleint.reg之后,将bin目录全路径添加到path之后,>> %ORACLIENT%\readme.txt
echo 3. 编辑%INSTALL_DIR%\network\admin\tnsnames.ora文件,添加适当的servicename>> %ORACLIENT%\readme.txt
echo 就可以正常使用.>> %ORACLIENT%\readme.txt>> %ORACLIENT%\readme.txt
echo 有问题,欢迎联系:iiihero@hotmail.com (iihero@CSDN)>> %ORACLIENT%\readme.txt

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

goto END

:SET_HELP
echo "Usage:"
echo "oraclient_dist -from  -to  -inst "
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_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. \ag
  6. \ldap
  7. \hs
  8. \ib
  9. \omts
  10. \scc
  11. \snmim
  12. \va
  13. \vm
  14. \vo
  15. \vs
  16. \xp

推荐阅读
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 随着Linux操作系统的广泛使用,确保用户账户及系统安全变得尤为重要。用户密码的复杂性直接关系到系统的整体安全性。本文将详细介绍如何在CentOS服务器上自定义密码规则,以增强系统的安全性。 ... [详细]
  • 服务器虚拟化存储设计,完美规划储存与资源,部署高性能虚拟化桌面
    规划部署虚拟桌面环境前,必须先估算目前所使用实体桌面环境的工作负载与IOPS性能,并慎选储存设备。唯有谨慎估算贴近实际的IOPS性能,才能 ... [详细]
  • 吴石访谈:腾讯安全科恩实验室如何引领物联网安全研究
    腾讯安全科恩实验室曾两次成功破解特斯拉自动驾驶系统,并远程控制汽车,展示了其在汽车安全领域的强大实力。近日,该实验室负责人吴石接受了InfoQ的专访,详细介绍了团队未来的重点方向——物联网安全。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 软件测试行业深度解析:迈向高薪的必经之路
    本文深入探讨了软件测试行业的发展现状及未来趋势,旨在帮助有志于在该领域取得高薪的技术人员明确职业方向和发展路径。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • 一家位于长沙的知名网络安全企业,现面向全国诚聘高级后端开发工程师,特别欢迎具有一线城市经验的技术精英回归故乡,共创辉煌。 ... [详细]
  • 本文介绍了如何使用Node.js通过两种不同的方法连接MongoDB数据库,包括使用MongoClient对象和连接字符串的方法。每种方法都有其特点和适用场景,适合不同需求的开发者。 ... [详细]
  • 本文提供了多种有效的方法来解决RPC(远程过程调用)服务器不可用的问题,包括通过修改注册表、使用SC命令以及利用故障恢复控制台等技术手段。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • 本文详细介绍了Oracle 11g中的创建表空间的方法,以及如何设置客户端和服务端的基本配置,包括用户管理、环境变量配置等。 ... [详细]
  • 对于初学者而言,搭建一个高效稳定的 Python 开发环境是入门的关键一步。本文将详细介绍如何利用 Anaconda 和 Jupyter Notebook 来构建一个既易于管理又功能强大的开发环境。 ... [详细]
  • 本文详细介绍了如何在Oracle VM VirtualBox中实现主机与虚拟机之间的数据交换,包括安装Guest Additions增强功能,以及如何利用这些功能进行文件传输、屏幕调整等操作。 ... [详细]
  • CRZ.im:一款极简的网址缩短服务及其安装指南
    本文介绍了一款名为CRZ.im的极简网址缩短服务,该服务采用PHP和SQLite开发,体积小巧,约10KB。本文还提供了详细的安装步骤,包括环境配置、域名解析及Nginx伪静态设置。 ... [详细]
author-avatar
难得有人待我好_212
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有