自动完成Oracle客户端的安装及其配置
一、问题的提出
目前的很多数据库应用程序是使用ORACLE数据库开发的client/server模式。众所周
知,使用此种模式需要在终端上安装ORACLE客户端软件。应用程序可以使用InstallShield软件打包成安装程序,由用户自行安装。但
ORACLE客户端软件一般需要有经验的开发人员通过人机交互的方法安装,安装完成后还需在Net8中配置服务名。这样当软件发布时,可能需要在不同地点
的成千上万个终端上安装ORACLE客户端,让费了大量的人力及时间。
如何能在不需要人员干预的情况自动完成ORACLE客户端的安
装及配置工作,是否能将此工作集成到应用程序的安装中去?
答案是肯定的,下面逐步阐述实现的过程。
二、实现步骤
1、共享ORACLE安装程序
可将ORACLE安装程序放置到一台应用服务器的光驱或拷贝到应用服务器的一个目
录下并共享,在这里我们假定服务器名称为softserver,放置路径为oracle。
2、编写响应文件自动安装ORACLE客户
端
ORACLE的缺省的安装模式为人机交互方式。即运行ORACLE安装盘上的setup.exe后,按照安装程序的提示一步一步的
选择完成安装。ORACLE同时也提供了自动安装(非人机交互)方式。此种模式的前提是必须写一个响应文件。关于此种方式的说明可以在ORACLE安装盘
中找到,文件名为docOutputadvance.htm。在response目录下有一些响应文件的模板,可以根据需要将模板修改成适合自己的响应文
件。
在这里我们举一个只安装Net8的例子,文件名定为\softserveroracle
et8.rsp,内容如下:
[General]
RESPONSEFILE_VERSION=1.7.0
[SESSION]
#products.jar文件所在的路径(在ORACLE安装盘中)
from_LOCATION="\softserveroraclestageproducts.jar"
#ORACLE安装目
录
ORACLE_HOME="C:oracleora81"
#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
#是否显示需求信息,缺
相关文档:
一个使用ibatis对数据库增删改查的例子:
这里用的开发环境是:Eclipse3.2+mysql5.0.20,ibatis包是ibatis-common-2.jar,
ibatis-dao-2.jar,ibatis-sqlmap-2.jar,mysql包是mysql-connector-java-5.0.3-bin.jar.
步骤:
1.创建数据库:
create database itcast;
use itcast;
创建表:
create table stu ......
insert into
select * into t_dest from t_src; -- 要求目标表不存在
insert into t_dest(a, b) select a, b from t_src; -- 要求目标表已存在
动态SQL
execute immediate ......
Oracle的trunc 函数一般用来 对日期和时间进行截取。
1、数字处理 。截取
select trunc(5.75),trunc(5.75,1),trunc(5.75,-1),trunc(556.234,-2) from dual;
输出:
TRUNC(5.75) TRUNC(5.75,1) TRUNC(5.75,-1) TRUNC(556.234,-2)
----------- ------------- -------------- ----- ......
CREATE OR REPLACE TYPE ty_str_array IS TABLE OF VARCHAR2 (4000);
CREATE OR REPLACE FUNCTION fn_split (p_str IN VARCHAR2, p_delimiter IN VARCHAR2)
RETURN ty_str_split
IS
j INT := 0;
i INT := 1;
len INT := 0;
&nbs ......
select a.constraint_name, a.table_name, b.constraint_name
from user_constraints a, user_constraints b
where a.constraint_type = 'R'
and b.constraint_type = 'P'
and a.r_constraint_name = b.constraint_name
P 代表主键
R 代表外键 ......