本公众号之前发表过文章《在Oracle云上静默安装Oracle Database 11g》,可以帮助大家在无法使用图形化界面时,顺利的部署Oracle Database 11g。尤其是有一些Oracle Partner需要申请嵌入式软件授权协议(Embedded Software License ,ESL)时,满足Oracle公司对Partner具备静默安装Oracle产品能力的要求。
Partner的工程师反馈:现在Oracle数据库的主流版本是12C,尤其是12cR2都已经发布了快半年,目前他们的客户在上新系统时,会优先考虑12C,因此希望能提供12C的静默安装指导。于是老余就花时间研究了12C的静默安装,现将安装过程分享出来,希望对大家有所帮助。
首先,我在Oracle云上创建了一个 Oracle Linux 7.3的实例,(略过创建过程,具体流程参见本公众号的其他文章《在Oracle云上创建Oracle Linux实例》)。
[root@f807e9 opc]# uname -a
Linux f807e9 4.1.12-94.3.5.el7uek.x86_64 #2 SMP Wed May 24 08:36:18 PDT 2017 x86_64 x86_64 x86_64 GNU/Linux
[root@f807e9 opc]# cat etc/oracle-release
Oracle Linux Server release 7.3
概况一下, 静默安装过程总体上分为两个步骤:环境准备和安装部署。
其中,环境准备最为重要,尤其是在Linux和Unix环境。在这些环境中安装过Oracle的朋友应该很清楚,这一步最为关键,在安装过程中,遇到多数问题都跟环境准备有关。如果这一步做好了,后面的安装部署就会非常顺利。
一、环境准备
创建用户和属组
#/usr/sbin/groupadd -g 501 oinstall
#/usr/sbin/groupadd -g 502 dba
#/usr/sbin/useradd -u 501 -g oinstall -G dba ora12
修改root和oracle用户密码
# passwd root
# passwd ora12
密码均修改为Welcome1
修改ora12用户的资源限制
用root用户修改配置文件/etc/security/limits.conf
新增以下内容:
ora12 soft nofile 1024
ora12 hard nofile 65536
ora12 soft nproc 2047
ora12 hard nproc 16384
ora12 soft stack 10240
ora12 hard stack 32768
设置oracle用户缺省资源限制,修改配置文件/etc/profile,在文件最后,加入以下内容:
if [ $USER = "ora12" ] ; 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
修改ora12用户的环境变量
# su - ora12
$ cd $HOME
$ vi .bash_profile
增加以下内容
export ORACLE_BASE=/u01/app/ora12
export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/db_1
export ORACLE_SID=ora12
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/ora12
# chown -R ora12:oinstall /u01/app/ora12
# chmod -R 775 /u01
下载数据库安装介质
Oracle 12gR2的安装介质可以从OTN和E-delivery下载。
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
https://edelivery.oracle.com
将安装介质拷贝到相关目录下:
[ora12@f807e9 ~]$ cd /home/ora12/software/
[ora12@f807e9 software]$ ll
total 3372752
-rw-rw-r-- 1 ora12 oinstall 3453696911 Jun 20 21:38 V839960-01.zip
解压安装介质
$ unzip V839960-01.zip
以静默方式安装数据库软件
先创建数据库软件安装的响应文件:db_inst.rsp
响应文件包含以下内容:
##### db_inst.rsp
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=dba
INVENTORY_LOCATION=/u01/app/oraInventory
ORACLE_HOME=/u01/app/ora12/product/12.2.0/db_1
ORACLE_BASE=/u01/app/ora12
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=dba
oracle.install.db.OSBACKUPDBA_GROUP=dba
oracle.install.db.OSDGDBA_GROUP=dba
oracle.install.db.OSKMDBA_GROUP=dba
oracle.install.db.OSRACDBA_GROUP=dba
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
DECLINE_SECURITY_UPDATES=true
########################
以上的参数均能自定义,有几个关键的参数需要重点关注:
oracle.install.option=INSTALL_DB_SWONLY 只安装数据库软件,不建库;
INVENTORY_LOCATION=/u01/app/oraInventory 指定INVENTORY路径;
ORACLE_HOME=/u01/app/ora12/product/12.2.0/db_1 指定ORACLE_HOME路径;
ORACLE_BASE=/u01/app/ora12 指定ORACLE_BASE路径;
oracle.install.db.InstallEdition=EE 指定数据库安装版本,可选项:EE和SE2。
进入安装包解压目录,开始静默安装Oracle 12c软件(只安装软件,不建库)
[ora12@f807e9 software]$ cd database/
[ora12@f807e9 database]$ ./runInstaller -silent -force -waitforcompletion -responsefile $HOME/software/db_inst.rsp -ignoresysprereqs -ignoreprereq
Starting Oracle Universal Installer...
Checking Temp space: must be greater than 500 MB. Actual 14488 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-06-21_02-16-43AM. Please wait ...You can find the log of this install session at:
/u01/app/oraInventory/logs/installActions2017-06-21_02-16-43AM.log
The installation of Oracle Database 12c was successful.
Please check '/u01/app/oraInventory/logs/silentInstall2017-06-21_02-16-43AM.log' for more details.
As a root user, execute the following script(s):
1. /u01/app/ora12/product/12.2.0/db_1/root.sh
Successfully Setup Software.
在其他窗口用root用户执行root.sh脚本。
[root@f807e9 12.2.0.1]# /u01/app/ora12/product/12.2.0/db_1/root.sh
Check /u01/app/ora12/product/12.2.0/db_1/install/root_f807e9_2017-06-21_02-20-17-473417590.log for the output of root script
查看相关安装日志,检查数据库软件是否安装成功。没有任何报错信息,说明数据库软件已经成功安装。
启动监听器
切换到ora12用户
$ lsnrctl start
以静默方式使用DBCA建库
首先,根据需求创建建库响应文件:dbca.rsp
响应文件包含以下内容:
#### dbca.rsp
gdbName=ora12
sid=ora12
createAsContainerDatabase=true
numberOfPDBs=1
pdbName=pdb1
pdbAdminPassword=Welcome1
templateName=General_Purpose.dbc
sysPassword=Welcome1
systemPassword=Welcome1
emConfiguration=DBEXPRESS
emExpressPort=5500
dbsnmpPassword=Welcome1
characterSet=ZHS16GBK
nationalCharacterSet=AL16UTF16
automaticMemoryManagement=FALSE
totalMemory=2048
########################
以上的参数均能自定义,有几个关键的参数需要重点关注:
gdbName=ora12 全局数据库名;
sid=ora12 实例名名称;
createAsContainerDatabase=true 是否为容器数据库;
numberOfPDBs=1 指定PDB数据库数量,可选值:0到4094;
pdbName=pdb1 创建的PDB姓名,用户自定义;
pdbAdminPassword=Welcome1 指定PDB数据库管理员口令;
templateName=General_Purpose.dbc 选择建库数模板;
sysPassword=Welcome1 指定SYS用户口令,用户自定义;
systemPassword=Welcome1 指定System用户口令用户自定义;
emConfiguration=DBEXPRESS 指定EM配置类型,可选项:CENTRAL|DBEXPRESS|BOTH|NONE;
emExpressPort=5500 指定DB Express端口,当emConfiguration选择DBEXPRESS时可用;
dbsnmpPassword=Welcome1 指定DBSNMP用户口令,用户自定义;
characterSet=ZHS16GBK 指定数据库字符集;
nationalCharacterSet=AL16UTF16 指定数据库国际字符集;
automaticMemoryManagement=FALSE 禁用自动内存管理;
totalMemory=2048 为数据库实例分配内存数,单位MB。
[ora12@f807e9 software]$dbca -silent -createDatabase -responseFile $HOME/software/dbca.rsp
[WARNING] [DBT-10102] The listener configuration is not selected for the database. EM DB Express URL will not be accessible.
CAUSE: The database should be registered with a listener in order to access the EM DB Express URL.
ACTION: Select a listener to be registered or created with the database.
Copying database files
1% complete
13% complete
25% complete
Creating and starting Oracle instance
26% complete
30% complete
31% complete
35% complete
38% complete
39% complete
41% complete
Completing Database Creation
42% complete
43% complete
44% complete
46% complete
47% complete
50% complete
Creating Pluggable Databases
55% complete
75% complete
Executing Post Configuration Actions
100% complete
Look at the log file "/u01/app/ora12/cfgtoollogs/dbca/ora12/ora12.log" for further details.
查看相关日志,检查数据库建库是否成功。没有任何报错信息,说明数据库已经成功创建。整个建库时间大约耗时15分钟。
检查数据库状态:
[opc@f807e9 bin]$ ./sql system/Welcome1@129.191.27.7:1521/pdb1
SQLcl: Release 4.2.0 Production on Wed Jun 21 04:32:34 2017
Copyright (c) 1982, 2017, Oracle. All rights reserved.
Last Successful login time: Wed Jun 21 2017 04:32:35 -04:00
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> col pdb_name for a30
SQL> select pdb_name,status from dba_pdbs;
PDB_NAME STATUS
------------------------------ ----------
PDB1 NORMAL
至此,Oracle Database 12.2数据库静默安装顺利完成,比11g的静默安装更简单!




