一、问题的提出
目前的很多数据库应用程序是使用ORACLE数据库开发的client/server模式。众所周知,使用此种模式需要在终端上安装ORACLE客户端软件。应用程序可以使用InstallShield软件打包成安装程序,由用户自行安装。但ORACLE客户端软件一般需要有经验的开发人员通过人机交互的方法安装,安装完成后还需在Net8中配置服务名。这样当软件发布时,可能需要在不同地点的成千上万个终端上安装ORACLE客户端,让费了大量的人力及时间。
如何能在不需要人员干预的情况自动完成ORACLE客户端的安装及配置工作,是否能将此工作集成到应用程序的安装中去?
答案是肯定的,下面逐步阐述实现的过程。
二、实现步骤
1、共享ORACLE安装程序
可将ORACLE安装程序放置到一台应用服务器的光驱或拷贝到应用服务器的一个目录下并共享,在这里我们假定服务器名称为softserver,放置路径为oracle。
2、编写响应文件自动安装ORACLE客户端
ORACLE的缺省的安装模式为人机交互方式。即运行ORACLE安装盘上的setup.exe后,按照安装程序的提示一步一步的选择完成安装。ORACLE同时也提供了自动安装(非人机交互)方式。此种模式的前提是必须写一个响应文件。关于此种方式的说明可以在ORACLE安装盘中找到,文件名为doc\Output\advance.htm。在response目录下有一些响应文件的模板,可以根据需要将模板修改成适合自己的响应文件。
在这里我们举一个只安装Net8的例子,文件名定为\\softserver\oracle\net8.rsp,内容如下:
[General]
RESPONSEFILE_VERSION=1.7.0
[SESSION]
#products.jar文件所在的路径(在ORACLE安装盘中)
FROM_LOCATION="\\softserver\oracle\stage\products.jar"
#ORACLE安装目录
ORACLE_HOME="C:\oracle\ora81"
#ORACLE安装目录的别名
ORACLE_HOME_NAME="ora8"
#顶级安装方式,这里选择客户端
TOPLEVEL_COMPONENT={"oracle.client","8.1.7.0.0"}
#是否显示动画,缺省为false
SHOW_SPLASH_SCREEN=false
#是否显示欢迎界面,缺省为false
SHOW_WELCOME_PAGE=false
#是否显示安装过程界面,缺省为true
SHOW_INSTALL_PROGRESS_PAGE=false
#是否显示需求信息,缺省为true
SHOW_REQUIRED_CONFIG_TOOL_PAGE=false
#
#ORACLE客户端选项
#
[oracle.client_8.1.7.0.0]
#语言,这里用英语,简体中文
COMPONENT_LANGUAGES={"en","zh_CN"}
#安装方式(缺省、定制、最小),这里用定制
INSTALL_TYPE="Custom"
#要安装的产品列表,这里选择Net8
DEPENDENCY_LIST={ "oracle.networking.netcltprod","8.1.7.0.0"}
#
#Net8产品
#
[oracle.networking.netcltprod_8.1.7.0.0]
DEPENDENCY_LIST={ "oracle.networking.netclt","8.1.7.0.0"}
#
# Net8配置助手
#
[oracle.networking.netca_8.1.7.0.0]
#是否在安装后启动Net8配置助手,缺省为true
b_launchNETCA=false
此时,如果我们在命令行执行命令:
\\softserver\oracle\setup ?responsefile \\softserver\oracle\net8.rsp ?silent
则安装程序在后台自动安装,过一段时间(十多分钟,视机器配置和网络速度而定)后,我们可以在程序菜单中看到ORACLE的菜单,里面只有Net8,安装路径为C:\oracle\ora81。
3、编写Net8配置文件
最简单的方法是用Net8 Assistant来生成,配置好所需的服务后,到ORACLE安装目录的network\ADMIN路径下找到tnsnames.ora文件即可,文件格式为:
# TNSNAMES.ORA Network Configuration File: c:\Oracle\Ora81\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.
ORA8 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.40.50.87)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = bigsun)
)
)
将此文件拷贝到\\softserver\oracle\目录中去。
4、编写执行程序
可以使用各种方式编写可执行程序、VB程序等执行以下功能:
a)自动安装Net8
\\softserver\oracle\setup ?responsefile \\softserver\oracle\net8.rsp ?silent
b)拷贝Net8配置文件配置服务命名
copy \\softserver\oracle\tnsnames.ora c:\oracle\ora81\network\ADMIN
5、将可执行程序打包到安装程序中
以InstallShield为例,在Custom Actions中添加新动作后,在File Name栏选择上一步中编写的执行程序。
此时,我们的目的已经达到。这样,在进行应用程序的安装时,ORACLE客户端软件的安装及配置工作将隐式的同时进行。安装工作完成后,应用程序就可以直接运行,而无须安装或配置ORACLE客户端。