前言:
oracle安装一般采用GUI下交互模式进行,下面介绍linux系统下非交互模式静默安装
准备工作:
操作系统版本:
CentOS 6.4Final x86_64
数据库版本:
Oracle11g Release 11.2.0.2.0(R2)
所用安装包:
linux.x64_11gR2_database_1of2.zip
linux.x64_11gR2_database_2of2.zipunzip linux.x64_11gR2_database_1of2.zip && unzip linux.x64_11gR2_database_2of2.zip
//解压安装包文件
find database/ -name "db_install.rsp" | xargs -i cp {} .
chown oracle:oinstall db_install.rsp
//拷贝安装软件配置应答文件db_install.rsp到当前目录,修改其文件从属,后面会用到
groupadd oinstall
groupadd dba
//增加oinstall和dba用户组
useradd -m -g oinstall -G dba oracle
//创建用户oracle,创建用户家目录/home/oracle,将其添加到oinstall和dba用户组
echo "oracle:password" | chpasswd
//修改oracle用户密码为password
mkdir -p /home/oracle/ora11g
//创建oracle安装路径(根目录) /home/oracle/ora11g
chown -R oracle:oinstall /home/oracle/ora11g
//修改oracle根目录下所有文件所属用户为oracle,所属用户组为oinstall
chmod -R 775 /home/oracle/ora11g
//修改oracle根目录下所有文件读写权限
//oracle安装文件构成类似如上图
cat >> /etc/sysctl.conf <
fs.file-max = 6815744
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.shmmni = 4096
kernel.sem = 250 32000 100 142
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
EOF
//修改linux系统内核文件,添加相关配置优化参数,参数含义可自行搜索并根据实际系统需要进行配置,修改此类系统配置文件前需要做好备份工作,下同。
cat >> /etc/security/limits.conf <
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
EOF
//同上,修改配置文件添加oracle相关项,注意备份
cat >> /etc/profile <
if [ $SHELL = "/bin/ksh" ];then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
EOF
//修改系统全局用户登录初始化环境,调整用户oracle处于不同shell环境下进程并发数
cat >> /home/oracle/.bash_profile <
export TMPDIR=$TMP //临时文件目录
export ORACLE_HOSTNAME=$(hostname) //oracle主机名
export ORACLE_BASE=/home/oracle/ora11g //oracle根目录
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1 //oracle家目录
export ORACLE_SID=orcl //实例名
export ORACLE_TERM=xterm
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib64:/usr/lib:/usr/lib64:/usr/local/lib64 //oracle 加载库目录
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export LD_ASSUME_KERNEL=2.6.18
export NLS_LANG="american_america.UTF8"
export NLS_LANG="AMERICAN_AMERICA.US7ASCII"
EOF
// 配置oracle 用户登录初始化环境,可根据实际相应修改各环境变量
cat >> /home/oracle/.bashrc <
EOF
//配置oracle用下的sqlplus登录别名sysdba,往后输入sysdba即可直接登录
cat >> /etc/oraInst.loc <
inst_group=oinstall
EOF
//配置oracle 安装过程日志存放路径
chmod 664 /etc/oraInst.loc
//更改该文件读写权限
sysctl -p
//重新载入系统内核参数
chown -R oracle:oinstall database
//修改安装文件权限
su - oracle
//切换oracle用户进行操作
软件配置应答文件db_install.rsp配置:
以下所修改项均为满足基本安装要求的前提,配置文件里其余参数选项可自行斟酌使用
cp db_install.rsp db_install.rsp.init
//首先备份自动应答文件
sed -i 's/oracle.install.option=.*/oracle.install.option=INSTALL_DB_SWONLY/' db_install.rsp
//修改安装选项为只安装数据库不建库
sed -i "s/ORACLE_HOSTNAME=.*/ORACLE_HOSTNAME=$(hostname)/" db_install.rsp
//修改oracle主机名
sed -i 's/UNIX_GROUP_NAME=.*/UNIX_GROUP_NAME=oinstall/' db_install.rsp
//修改oracle inventory目录所有者
sed -i 's/INVENTORY_LOCATION=.*/INVENTORY_LOCATION=\/home\/oracle\/ora11g\/oraInventory/' db_install.rsp
//修改oracle inventory目录所在路径
sed -i 's/SELECTED_LANGUAGES=.*/SELECTED_LANGUAGES=en,zh_CN/' db_install.rsp
//修改数据库语言为en和zh_CN
sed -i 's/ORACLE_HOME=.*/ORACLE_HOME=\/home\/oracle\/ora11g\/product\/11.2.0\/db_1/' db_install.rsp
//指定数据库家目录
sed -i 's/ORACLE_BASE=.*/ORACLE_BASE=\/home\/oracle\/ora11g/' db_install.rsp
//指定数据库根目录
sed -i 's/oracle.install.db.InstallEdition=.*/oracle.install.db.InstallEdition=EE/' db_install.rsp
//指定数据库安装版本,此处选择企业版EnterpriseEdition,可参考配置文件自带注释自行定制
sed -i 's/oracle.install.db.isCustomInstall=.*/oracle.install.db.isCustomInstall=true/' db_install.rsp
//开启自定义oracle组件,默认情况下配置文件中oracle.install.db.customComponents项指定的组件满足基本要求,若需要添加安装其他组件可参考配置文件自行设置
sed -i 's/oracle.install.db.DBA_GROUP=.*/oracle.install.db.DBA_GROUP=dba/' db_install.rsp
//指定拥有OSDBA权限的用户组为dba
sed -i 's/oracle.install.db.OPER_GROUP=.*/oracle.install.db.OPER_GROUP=oinstall/' db_install.rsp
//指定拥有OSOPER权限的用户组为oinstall
sed -i 's/oracle.install.db.config.starterdb.type=.*/oracle.install.db.config.starterdb.type=GENERAL_PURPOSE/' db_install.rsp
//指定数据库用户为一般用途/事务处理
sed -i 's/oracle.install.db.config.starterdb.globalDBName=.*/oracle.install.db.config.starterdb.globalDBName=ora11g/' db_install.rsp
//指定全局数据库名称GlobalName
sed -i 's/oracle.install.db.config.starterdb.SID=.*/oracle.install.db.config.starterdb.SID=orcl/' db_install.rsp
//指定数据库实例名SID为orcl
sed -i 's/oracle.install.db.config.starterdb.characterSet=.*/oracle.install.db.config.starterdb.characterSet=AL32UTF8/' db_install.rsp
//指定数据库字符集,这里采用的是AL32UTF8国际字符集
sed -i 's/oracle.install.db.config.starterdb.memoryOption=.*/oracle.install.db.config.starterdb.memoryOption=true/' db_install.rsp
//开启自动内存管理,11g版本新增特性,低于该版本无效,自动内存管理特性是根据当前服务器最大内存调整数据库内存,有时候会浪费较多资源,请衡量取舍,关于手动设置内存请自行网上查询
sed -i 's/oracle.install.db.config.starterdb.password.ALL=.*/oracle.install.db.config.starterdb.password.ALL=oracle/' db_install.rsp
//设定所有数据库用户使用同一个初始密码oracle,后续可自行修改
sed -i 's/oracle.install.db.config.starterdb.control=.*/oracle.install.db.config.starterdb.control=DB_CONTROL/' db_install.rsp
//指定数据库本地管理工具DB_CONTROL
sed -i 's/oracle.install.db.config.starterdb.dbcontrol.enableEmailNotification=.*/oracle.install.db.config.starterdb.dbcontrol.enableEmailNotification=true/' db_install.rsp
//在启用DB control时开启email邮件通知,可将告警信息发到邮箱,结合下面两项选择启用
sed -i 's/oracle.install.db.config.starterdb.dbcontrol.emailAddress=.*/oracle.install.db.config.starterdb.dbcontrol.emailAddress=xxx@xxx.com/' db_install.rsp
//指定上述条目接收邮箱地址为[email protected]
sed -i 's/oracle.install.db.config.starterdb.dbcontrol.SMTPServer=.*/oracle.install.db.config.starterdb.dbcontrol.SMTPServer=mail.xxx.com/' db_install.rsp
//指定上述条目邮箱服务器地址为mail.xxx.com
chmod 640 db_install.rsp
//更改db_install.rsp读写权限,至此软件应答文件db_install.rsp配置完毕
创建数据库应答文件dbca.rsp配置:
cp database/response/dbca.rsp ./
cp dbca.rsp dbca.rsp.init
//拷贝和备份原始文件
sed -i 's/GDBNAME =.*/GDBNAME = "ora11g"/' dbca.rsp
//指定全局数据库名
sed -i 's/SID =.*/SID = "orcl"/' dbca.rsp
//指定实例名
sed -i 's/SYSPASSWORD =.*/SYSPASSWORD = "oracle"/' dbca.rsp
//指定用户sys密码为oracle
sed -i 's/SYSTEMPASSWORD =.*/SYSTEMPASSWORD = "oracle"/' dbca.rsp
//指定用户system密码为oracle
以下为选用项:
sed -i 's/EMCONFIGURATION =.*/EMCONFIGURATION = "LOCAL"/' dbca.rsp
//若需要使用oracle企业管理器Oracle Enterprise Manager,则需要配置
sed -i 's/SYSMANPASSWORD =.*/SYSMANPASSWORD = "oracle"/' dbca.rsp
//指定企业管理器用户sysman密码为oracle
sed -i 's/DBSNMPPASSWORD =.*/DBSNMPPASSWORD = "oracle"/' dbca.rsp
//指定企业管理器用户dbsnmp密码为oracle
监听应答文件netca.rsp配置:
cp database/response/netca.rsp ./
cp netca.rsp netca.rsp.init
//同样地,拷贝和备份原始副本
sed -i 's/INSTALL_TYPE=.*/INSTALL_TYPE=""custom""/' netca.rsp
//更改安装类型为默认,至此安装文件准备完毕
开始安装oracle:
./database/runInstaller -silent -responseFile ./db_install.rsp
//安装用户需切换到oracle
//为避免安装过程中各种各样的异常,如下图,所有文件路径建议使用完全路径,即绝对路径。选项-silent表示静默安装免交互不输出大部分安装信息,不选用-silent将允许交互,可手工指定应答文件中未设置的选项,若增加-noconfig则可忽略应答文件的安装类型,仅安装数据库软件。执行./database/runInstaller -help可获得更多帮助选项
/database/runInstaller -silent -responseFile /usr/local/soft/oracle/db_install.rsp
//使用以上语句则不会出现无法找到应答文件的错误,执行成功,由于没有设置告警接收电子邮件地址,故出现提示,可根据实际自行在应答文件中设置,如下图
sed -i '/DECLINE_SECURITY_UPDATES=.*/DECLINE_SECURITY_UPDATES=true/' /usr/local/soft/oracle/db_install.rsp
//若仍出现邮件未指定提示则执行以上命令再次执行安装
//上图为安装成功情况,提示切换root用户继续进行后续操作
exit
/home/oracle/ora11g/product/11.2.0/db_1/root.sh
//root.sh所在的路径参考oracle安装路径中的家目录ORACLE_HOME
至此数据库安装完成,下面来介绍创建实例,创建监听等操作
su - oracle
cd /usr/local/soft/oracle/
sed -i '/GDBNAME =.*/GDBNAME = "ora11g"/' dbca.rsp
//修改全局数据库名为ora11g
sed -i '/SID =.*/SID = "orcl"/' dbca.rsp
//修改实例名为orcl
sed -i '/#SYSPASSWORD =.*/SYSPASSWORD = "oracle"/' dbca.rsp
sed -i '/#SYSTEMPASSWORD =.*/SYSPASSWORD = "oracle"/' dbca.rsp
//修改创建实例orcl时,SYS和SYSTEM用户的密码为oracle
dbca -silent -responseFile /usr/local/soft/oracle/dbca.rsp
//使用dbca.rsp作为应答文件创建新的实例,创建过程中调用的是dbca.rsp中的CREATEDATABASE模块中的参数内容,同理下面的删除和克隆操作也是调用各自相应的模块,同样地应答文件位置需要使用绝对路径/usr/local/soft/oracle/dbca.rsp
dbca -silent -deleteDatabase -responseFile /usr/local/soft/oracle/dbca.rsp
//同样有删除实例,注意首先在应答文件dbca.rsp里指定删除的实例和其他参数
dbca -silent -createDatabase -cloneTemplate -responseFile /usr/local/soft/oracle/dbca.rsp
//克隆实例,参考dbca.rsp中createTemplateFromDB模块
netca /silent /responseFile /usr/local/soft/oracle/netca.rsp
//创建监听
cat $ORACLE_HOME/network/admin/listener.ora
//检查监听配置文件listener.ora
//监听LISTENER创建完毕,此处创建的为动态监听,监听4PNTTEST主机下所有使用1521端口的实例,关于如何创建同一端口下多个实例监听或者多个不同端口的监听器listener可自行搜索资料,此处不再赘述
lsnrctl start
//启动监听
exit
sed -i '$s/N/Y/' /etc/oratab
//oracle自带实例启动工具dbstart和实例关闭工具dbshut能否启用依赖于此文件相关实例项里的开关Y/N
su - oracle
export ORACLE_SID=orcl
dbstart $ORACLE_HOME
//最后启动数据库服务,启动成功
dbshut $ORACLE_HOME
//关闭数据库命令
最后附上数据库服务操作脚本:
--------------------------------------------脚本分割线------------------------------------------
#!/bin/bash
#### 2013.1.18 by larry ####
# chkconfig: 35 90 10
# description: Oracle Database Service Daemon.
ORCL_BASE="/home/oracle/ora11g"
ORACLE_HOME=/home/oracle/ora11g/product/11.2.0/db_1
ORACLE_OWNER=oracle
case "$1" in
start)
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl start" #//启动监听
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME" #//启动实例
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/emctl start dbconsole" #//企业管理器控制台开启
;;
stop)
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/emctl stop dbconsole"
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME"
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl stop"
;;
status)
if(pgrep "tnslsnr" && netstat -anpt | grep ":1521") &> /dev/null
then
echo "Oracle 11g Net Listener is running."
else
echo "Oracle 11g Net Listener is not running."
fi
if(netstat -anpt | grep ":1158" && netstat -anpt | grep ":5520") &> /dev/null
then
echo "Oracle 11g Enterprise Manager is running."
else
echo "Oracle 11g Enterprise Manager is not running."
fi
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
;;
esac
exit 0
--------------------------------------------脚本分割线------------------------------------------
脚本保存到/etc/init.d/xxx
chkconfig --add xxx
chkconfig --level 35 xxx on
//添加oracle为系统自启动服务
service oracle status/stop/start/restart
//通过service命令操作oracle服务,分别为查看状态/停止/启动/重新启动
至此数据库安装部署完毕
参考文章:http://www.linuxidc.com/Linux/2013-01/78156.htm