本文将演示在Oracle公有云上,采用静默安装的方式,部署Oracle Database 11gR2。
开始之前,有人会问:为什么要静默安装呢? 放着好好的图形化界面不用,搞什么静默安装?
没错,多数情况下, 界面友好的图形化安装方式,确实能给我们带来很多便利,尤其是Oracle初学者。但是在很多场景下,无法使用图形化界面。例如,很多公司基于安全或者性能的考虑,在数据库服务器上只允许安装了一些系统必须的软件,而那些X-windows、KDE、Gnome等图形环境被严令禁止,另外,一些防火墙的安全策略,会阻止用户远程登录服务器的图形环境,而且使用图形环境对网络带宽有一定要求,在那些网络带宽有限的环境,无法顺畅的使用图形界面。同时,图形化环境对操作系统的环境也有要求,经常会因为操作系统缺少一些软件包,导致图形化界面无法启动。以前在做数据库服务的时期,以上这些环境,老余都遇到过。如果当时只会图形化安装这一招,那老余就早被客户赶出门了,所以多学几招没坏处,技不压身嘛。
除了上面的客观原因外,一些业务上的新变化,也促使我们去了解Oracle的静默安装。据我所知,Oracle软件的授权协议中,有一种嵌入式软件授权协议(Embedded Software License ,ESL),把Oracle的软件打包到ISV(独立软件供应商)的解决方案中,是所有授权协议中最便宜的一种,很多Oracle合作伙伴都会选择这种协议,但是这种协议中明文规定:ISV必须封装Oracle的软件,以打包的方式交付给最终用户,在部署过程中,是不能看到Oracle的LOGO,所以Oracle公司要求这些合作伙伴必须掌握Oracle产品的静默安装技能。另外,很多公司都在搭建和推出自己的云平台,他们的云平台需要以服务的方式,为最终用户提供Oracle数据库服务、Oracle中间件服务,这就要求他们的云平台具备将Oracle产品的安装和部署整合进去的能力,因此静默安装也就成为了他们的唯一选择。
做了这么多铺垫,大家现在应该明白,掌握Oracle产品的静默安装技术有多重要。来吧,跟着老余一起静默安装吧。
今天,我将给大家演示,在Oracle云上静默安装Oracle Database 11g R2。
别问我为什么又是Oracle云呢? 因为它好用,套用官方的说法:高效、安全、稳定,还便宜。
首先,我在Oracle云上创建了一个 Oracle Linux 6.8的实例,(略过创建过程,具体流程参见本公众号的其他文章《在Oracle云上创建Oracle Linux实例》)。
[root@bc1c3b opc]# uname -a
Linux bc1c3b 4.1.12-61.1.22.el6uek.x86_64 #2 SMP Fri Dec 2 09:36:32 PST 2016 x86_64 x86_64 x86_64 GNU/Linux
[root@bc1c3b opc]# cat etc/oracle-release
Oracle Linux Server release 6.8
概况一下, 静默安装过程总体上分为两个步骤:环境准备和安装部署。
其中,环境准备最为重要,尤其是在Linux和Unix环境。在这些环境中安装过Oracle的朋友应该很清楚,这一步最为关键,在安装过程中,遇到多数问题都跟环境准备有关。如果这一步做好了,后面的安装部署就会非常顺利。
一、环境准备
创建用户和属组
#/usr/sbin/groupadd -g 501 oinstall
#/usr/sbin/groupadd -g 502 dba
#/usr/sbin/useradd -u 500 -g oinstall -G dba oracle
修改root和oracle用户密码
# passwd root
# passwd oracle
密码均修改为Welcome1
修改oracle用户的资源限制
用root用户修改配置文件/etc/security/limits.conf
新增以下内容:
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
设置oracle用户缺省资源限制,修改配置文件/etc/profile,在文件最后,加入以下内容:
if [ $USER = "oracle" ] ; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
修改/etc/pam.d/login文件,新增以下内容:
session required pam_limits.so
修改内核参数,编辑内核参数配置文件/etc/sysctl.conf,加入以下内容
# vi etc/sysctl.conf
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
执行以下命令,使修改参数立刻生效
# /sbin/sysctl -p
[root@bc1c3b opc]# sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 2
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
kernel.panic = 1
error: "xen.independent_wallclock" is an unknown key
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
检查操作系统软件包安装情况:
#rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' binutils \
compat-libstdc++-33 \
elfutils-libelf \
elfutils-libelf-devel \
gcc \
gcc-c++ \
glibc \
glibc-common \
glibc-devel \
glibc-headers \
ksh \
libaio \
libaio-devel \
libgcc \
libstdc++ \
libstdc++-devel \
make \
sysstat \
unixODBC \
unixODBC-devel \
expect
binutils-2.20.51.0.2-5.44.el6 (x86_64)
package compat-libstdc++-33 is not installed
elfutils-libelf-0.164-2.el6 (x86_64)
package elfutils-libelf-devel is not installed
gcc-4.4.7-18.el6 (x86_64)
package gcc-c++ is not installed
glibc-2.12-1.209.0.3.el6_9.1 (x86_64)
glibc-2.12-1.209.0.3.el6_9.1 (i686)
glibc-common-2.12-1.209.0.3.el6_9.1 (x86_64)
glibc-devel-2.12-1.209.0.3.el6_9.1 (x86_64)
glibc-headers-2.12-1.209.0.3.el6_9.1 (x86_64)
package ksh is not installed
libaio-0.3.107-10.el6 (x86_64)
package libaio-devel is not installed
libgcc-4.4.7-18.el6 (x86_64)
libstdc++-4.4.7-17.el6 (x86_64)
package libstdc++-devel is not installed
make-3.81-23.el6 (x86_64)
package sysstat is not installed
package unixODBC is not installed
package unixODBC-devel is not installed
安装缺少的软件包
# yum -y install compat-libstdc++-33 elfutils-libelf-devel gcc-c++ ksh libaio-devel libstdc++-devel sysstat unixODBC unixODBC-devel expect
再次确认软件包的安装情况,确保都已经安装后,进入下一步。
创建文件/etc/oraInst.loc,指定inventory目录的绝对路径
# vi /etc/oraInst.loc
inventory_loc=/u01/app/oraInventory
inst_group=oinstall
修改Oracle用户的环境变量
# su - oracle
$ cd $HOME
$ vi .bash_profile
增加以下内容
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=ora11
export ORACLE_TERM=xterm
export ORA_NLS10=$ORACLE_HOME/nls/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/rdbms/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export THREADS_FLAG=native
#export DISPLAY=:0.0
export EDITOR=vi
set -o vi
umask 022
执行.bash_profile文件,是环境变量生效
# . .bash_profile
二、安装部署
创建软件安装目录
# mkdir -p u01/app/oracle
# chown -R oracle:oinstall /u01
# chmod -R 775 /u01
下载数据库安装介质
Oracle 11gR2的安装介质可以从OTN和E-delivery下载。
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
https://edelivery.oracle.com
将安装介质拷贝到相关目录下:
[oracle@bc1c3b software]$ pwd
/home/oracle/software
[oracle@bc1c3b software]$ ll
total 2295600
-rw-r--r-- 1 oracle oinstall 1239269270 May 31 22:38 V17530-01_1of2.zip
-rw-r--r-- 1 oracle oinstall 1111416131 May 31 22:38 V17530-01_2of2.zip
解压
$ unzip V17530-01_1of2.zip
$ unzip V17530-01_2of2.zip
创建数据库软件安装的响应文件:
./createRsp.sh -o INSTALL_DB_SWONLY \
-H $(hostname) \
-G oinstall \
-I $ORACLE_INVENTORY \
-L en,zh_CN,zh_TW \
-E EE \
-M $ORACLE_HOME \
-B $ORACLE_BASE \
-P Welcome1 \
-T GENERAL_PURPOSE \
-N ora11 \
-S ora11 \
-C ZHS16GBK \
--dbagroup dba \
--opergroup oinstall \
--dataloc $ORACLE_BASE/oradata \
--recoveryloc $ORACLE_BASE/recovery > log/install.log
以上的参数均能自定义,有几个关键的参数需要重点关注:
-E EE 安装数据库企业版
-M $ORACLE_HOME 设置ORACLE_HOME
-B $ORACLE_BASE 设置ORACLE_BASE
-P Welcome1 设置数据库用户的口令,所有用户均采用同一个口令
-T GENERAL_PURPOSE 数据库类型,本例选择通用类型,还有数据仓库等类型,主要影响数据库的初始化参数设置
-N ora11 设置全局数据库名
-S ora11 设置数据库实例名
-C ZHS16GBK 设置字符集
备注:如需createRsp.sh脚本,请发邮件到邮箱cheney.yu@outlook.com索取。
[oracle@bc1c3b software]$ ./createRsp.sh -o INSTALL_DB_SWONLY \
> -H $(hostname) \
> -G oinstall \
> -I $ORACLE_INVENTORY \
> -L en,zh_CN,zh_TW \
> -E EE \
> -M $ORACLE_HOME \
> -B $ORACLE_BASE \
> -P Welcome1 \
> -T GENERAL_PURPOSE \
> -N ora11 \
> -S ora11 \
> -C ZHS16GBK \
> --dbagroup dba \
> --opergroup oinstall \
> --dataloc $ORACLE_BASE/oradata \
> --recoveryloc $ORACLE_BASE/recovery
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOST=bc1c3b
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=-L
oracle.install.db.InstallEdition=EE
ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.config.starterdb.password.ALL=Welcome1
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.globalDBName=ora11
oracle.install.db.config.starterdb.SID=ora11
oracle.install.db.config.starterdb.characterSet=ZHS16GBK
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=oinstall
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=/u01/app/oracle/oradata
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=/u01/app/oracle/recovery
执行以上命令后,将在当前目录生成一个响应文件
[oracle@bc1c3b software]$ ll db_install.rsp
-rw-r--r-- 1 oracle oinstall 22761 May 31 22:58 db_install.rsp
安装数据库软件,只安装软件,不创建数据库
export basepath=/home/oracle/software
export O_HOME=/u01/app/oracle/product/11.2.0/db_1
export O_HOME_NAME=OraDb11g_home1
export O_BASE=/u01/app/oracle
$basepath/database/runInstaller -silent -noconfig -ignorePrereq -ignoreSysPrereqs -waitforcompletion -responseFile $basepath/db_install.rsp ORACLE_HOME=$O_HOME ORACLE_HOME_NAME=$O_HOME_NAME ORACLE_BASE=$O_BASE
[oracle@bc1c3b software]$ export basepath=/home/oracle/software
[oracle@bc1c3b software]$ export O_HOME=/u01/app/oracle/product/11.2.0/db_1
[oracle@bc1c3b software]$ export O_HOME_NAME=OraDb11g_home1
[oracle@bc1c3b software]$ export O_BASE=/u01/app/oracle
[oracle@bc1c3b software]$ $basepath/database/runInstaller -silent -noconfig -ignorePrereq -ignoreSysPrereqs -waitforcompletion -responseFile $basepath/db_install.rsp ORACLE_HOME=$O_HOME ORACLE_HOME_NAME=$O_HOME_NAME ORACLE_BASE=$O_BASE
Starting Oracle Universal Installer...
Checking Temp space: must be greater than 120 MB. Actual 32514 MB Passed
Checking swap space: 0 MB available, 150 MB required. Failed <<<<
>>> Ignoring required pre-requisite failures. Continuing...
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2017-05-31_11-00-14PM. Please wait ...You can find the log of this install session at:
/u01/app/oraInventory/logs/installActions2017-05-31_11-00-14PM.log
The following configuration scripts need to be executed as the "root" user.
#!/bin/sh
#Root scripts to run
/u01/app/oracle/product/11.2.0/db_1/root.sh
To execute the configuration scripts:
1. Open a terminal window
2. Log in as "root"
3. Run the scripts
4. Return to this window and hit "Enter" key to continue
Successfully Setup Software.
手工切换到root用户,执行脚本/u01/app/oracle/product/11.2.0/db_1/root.sh
[root@bc1c3b opc]# /u01/app/oracle/product/11.2.0/db_1/root.sh
Check /u01/app/oracle/product/11.2.0/db_1/install/root_bc1c3b_2017-05-31_23-07-53.log for the output of root script
启动监听器
切换到Oracle用户
$ lsnrctl start
以静默方式使用DBCA建库
export basepath=/home/oracle/software
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
export ORACLE_SID=ora11
export ORACLE_GLOBAL_NAME=ora11
cd $ORACLE_HOME/assistants/dbca/templates
dbca -silent \
-createDatabase \
-templateName General_Purpose.dbc \
-gdbName $ORACLE_GLOBAL_NAME \
-sid $ORACLE_SID \
-SysPassword Welcome1 \
-SystemPassword Welcome1 \
-emConfiguration NONE \
-datafileDestination $ORACLE_BASE/oradata \
-storageType FS \
-characterSet ZHS16GBK \
-memoryPercentage 40
以上的参数均能自定义,有几个关键的参数需要重点关注:
-sid 设置数据库实例名
-SysPassword Welcome1 设置SYS用户口令,本例Welcome1
-SystemPassword Welcome1 设置SYSTEM用户口令,本例Welcome1
-emConfiguration NONE 设置EM,本例中不设置EM
-datafileDestination $ORACLE_BASE/oradata 设置数据库数据文件的安装目录
-storageType FS 设置数据文件的存储类型,本例为文件系统
-characterSet ZHS16GBK 设置数据库的字符集
-memoryPercentage 40 设置SGA和PGA,本例为SGA和PGA的总大小占总内存的40%
[oracle@bc1c3b templates]$ dbca -silent \
> -createDatabase \
> -templateName General_Purpose.dbc \
> -gdbName $ORACLE_GLOBAL_NAME \
> -sid $ORACLE_SID \
> -SysPassword Welcome1 \
> -SystemPassword Welcome1 \
> -emConfiguration NONE \
> -datafileDestination $ORACLE_BASE/oradata \
> -storageType FS \
> -characterSet ZHS16GBK \
> -memoryPercentage 40
Copying database files
1% complete
3% complete
11% complete
18% complete
26% complete
37% complete
Creating and starting Oracle instance
40% complete
45% complete
50% complete
55% complete
56% complete
60% complete
62% complete
Completing Database Creation
66% complete
70% complete
73% complete
85% complete
96% complete
100% complete
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/ora11/ora11.log" for further details.
数据库创建成功!
检查数据库状态:
[oracle@bc1c3b ~]$ sqlplus system/Welcome1@bc1c3b.compute-a431015.oraclecloud.internal:1521/ora11
SQL*Plus: Release 11.2.0.1.0 Production on Thu Jun 1 02:16:19 2017
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
至此,数据库静默安装顺利完成,是不是没有想象中的复杂。通过静默安装,大家可以清楚了数据库安装和部署的主要步骤,再遇到问题时,就能快速定位,快速解决,这是图形化界面无法达到的。
另外,静默安装还有一个好处,就是装*。没错,作为一个资深的攻城狮,只会操作图形化界面多Low啊,不会命令行,你好意思说自己是攻城狮吗?想象一下, 打开电脑,在眼花缭乱的黑白字符中挥斥方遒,指点江山,在客户和师妹仰慕的眼神中,你轻轻的合上电脑,转身离去,不带走一片云彩。。。 别问我怎么知道这么多,因为哥就这么干过,屡试不爽!
备注:本文中用到一个脚本createRsp.sh,由于微信公众号无法上传附件,所以无法随文提供,如需createRsp.sh脚本,请发邮件到邮箱cheney.yu@outlook.com索取。




