您的位置:首页 > 数据库 > Oracle

Oracle11g非图形化界面linux系统下静默安装

2015-11-24 18:49 666 查看
前言:

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.zip

//分包需要用unzip都解压一遍并放在相同目录下

pdksh-5.2.14-1.i386.rpm

//安装依赖,安装oracle过程需要用到

yum -y install binutils compat-libcap1 compat-libstdc++ gcc gcc-c++ glibc glibc-devel ksh libgcc libstdc++ libstdc++-devel libaio sysstat libaio-devel elfutils-libelf-devel unixODBC unixODBC-devel

//安装其余依赖

unzip 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 <<EOF

fs.aio-max-nr = 3145728

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 <<EOF

oracle soft nproc 2048

oracle hard nproc 16384

oracle soft nofile 1024

oracle hard nofile 65536

EOF

//同上,修改配置文件添加oracle相关项,注意备份

cat >> /etc/profile <<EOF

if [ $USER = "oracle" ]; then

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 <<EOF

export TMP=/tmp //临时文件目录

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

alias sysdba='sqlplus "/ nolog"'

EOF

//配置oracle用下的sqlplus登录别名sysdba,往后输入sysdba即可直接登录

cat >> /etc/oraInst.loc <<EOF

inventory_loc=/home/oracle/ora11g/oraInventory

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

//指定上述条目接收邮箱地址为xxx@xxx.com

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: