之前安装Oracle 11g R2数据库软件都是建立在图形界面上的,不过现在大部分服务器上都没有安装图形界面。图形界面安装较为方便,安装选项清晰,步骤明确,但Oracle还支持另一种安装方式,就是通过响应文件(response file)静默方式安装。这对于没有安装图形界面组件的服务器来说十分方便,同时对于批量部署也更有效率,静默方式安装仅通过命令行方式就可以解决,少去了配置图形界面的繁琐,提高了安装速度。本文就基于CentOS 7上进行静默安装Oracle 11g R2数据库软件进行梳理总结,不涉及数据库的创建。

主要安装步骤参考官方文档:Oracle Database Quick Installation Guide for Linux x86-64

环境准备

  1. 操作系统(OS):CentOS Linux release 7.5.1804 (Core)
  2. 内核版本(kernel version):3.10.0-862.el7.x86_64
  3. 数据库版本(Oracle Database):Oracle Database 11g R2(11.2.0.4.0)

安装准备

硬件环境检查

  • 内存需求

根据官方文档的描述,得出内存需求如下:

Minimum: 1 GB of RAM

Recommended: 2 GB of RAM or more

检查本机环境内存:

# grep MemTotal /proc/meminfo
MemTotal: 3079752 kB
  • SWAP空间需求

SWAP空间要求可以参照如下表格:

可用内存 需要的SWAP空间
1G - 2G 可用内存*1.5
2G - 16G 等于可用内存
16G以上 16G

检查本机环境SWAP空间:

# grep SwapTotal /proc/meminfo
SwapTotal: 5242876 kB

可用内存及对应SWAP空间大小:

# free -m
total used free shared buff/cache available
Mem: 3007 77 2819 8 110 2781
Swap: 5119 0 5119
  • 磁盘空间需求
文件类型 空间大小
安装文件 企业版:4.7G 标准版:4.6G
数据文件 企业版:1.7G 标准版:1.5G

本次数据库软件和数据文件路径都存放在/data路径下。

查看本机环境磁盘空间:

# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/system-root 50G 11G 40G 21% /
devtmpfs 1.5G 0 1.5G 0% /dev
tmpfs 1.5G 0 1.5G 0% /dev/shm
tmpfs 1.5G 8.5M 1.5G 1% /run
tmpfs 1.5G 0 1.5G 0% /sys/fs/cgroup
/dev/sda1 197M 107M 90M 55% /boot
/dev/mapper/data-data 40G 5.5G 35G 14% /data
tmpfs 301M 0 301M 0% /run/user/0

软件环境检查

  • 软件包需求

根据官方文档的描述,得出需要安装的软件包如下:

binutils-2.23.52.0.1-12.el7.x86_64
compat-libcap1-1.10-3.el7.x86_64
compat-libstdc++-33-3.2.3-71.el7.i686
compat-libstdc++-33-3.2.3-71.el7.x86_64
gcc-4.8.2-3.el7.x86_64
gcc-c++-4.8.2-3.el7.x86_64
glibc-2.17-36.el7.i686
glibc-2.17-36.el7.x86_64
glibc-devel-2.17-36.el7.i686
glibc-devel-2.17-36.el7.x86_64
ksh
libaio-0.3.109-9.el7.i686
libaio-0.3.109-9.el7.x86_64
libaio-devel-0.3.109-9.el7.i686
libaio-devel-0.3.109-9.el7.x86_64
libgcc-4.8.2-3.el7.i686
libgcc-4.8.2-3.el7.x86_64
libstdc++-4.8.2-3.el7.i686
libstdc++-4.8.2-3.el7.x86_64
libstdc++-devel-4.8.2-3.el7.i686
libstdc++-devel-4.8.2-3.el7.x86_64
libXi-1.7.2-1.el7.i686
libXi-1.7.2-1.el7.x86_64
libXtst-1.2.2-1.el7.i686
libXtst-1.2.2-1.el7.x86_64
make-3.82-19.el7.x86_64
sysstat-10.1.5-1.el7.x86_64

检查本机环境软件包安装情况:

# rpm -q binutils \
> compat-libcap1 \
> compat-libstdc++-33 \
> gcc \
> gcc-c++ \
> glibc \
> glibc-devel \
> ksh \
> libaio \
> libaio-devel \
> libgcc \
> libstdc++ \
> libstdc++-devel \
> libXi \
> libXtst \
> make \
> sysstat
binutils-2.27-27.base.el7.x86_64
--package compat-libcap1 is not installed
--package compat-libstdc++-33 is not installed
gcc-4.8.5-28.el7_5.1.x86_64
gcc-c++-4.8.5-28.el7_5.1.x86_64
glibc-2.17-222.el7.x86_64
glibc-devel-2.17-222.el7.x86_64
--package ksh is not installed
libaio-0.3.109-13.el7.x86_64
libaio-devel-0.3.109-13.el7.x86_64
libgcc-4.8.5-28.el7_5.1.x86_64
libstdc++-4.8.5-28.el7_5.1.x86_64
libstdc++-devel-4.8.5-28.el7_5.1.x86_64
--package libXi is not installed
--package libXtst is not installed
make-3.82-23.el7.x86_64
--package sysstat is not installed

使用yum安装缺失的软件包:

# yum install compat-libcap1 compat-libstdc++-33 ksh libXi libXtst sysstat

驱动软件包安装:

# yum install unixODBC unixODBC-devel

创建系统用户及用户组

  • 创建用户组oinstall和dba
# /usr/sbin/groupadd oinstall
# /usr/sbin/groupadd dba # grep oinstall /etc/group
oinstall:x:1000: # grep dba /etc/group
dba:x:1001:
  • 创建用户oracle
# /usr/sbin/useradd -g oinstall -G dba oracle

# id oracle
uid=1000(oracle) gid=1000(oinstall) groups=1000(oinstall),1001(dba)
  • 为用户oracle设置密码

这里为Oracle用户设置密码为:oracle

# passwd oracle
Changing password for user oracle.
New password: # 输入oracle
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: # 再次确认为 oracle
passwd: all authentication tokens updated successfully.

配置内核参数及资源限制选项

编辑文件 /etc/sysctl.conf,在文件末尾添加如下配置:

# Oracle Setting
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
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

使配置生效:

# sysctl -p

编辑文件 /etc/security/limits.conf,在文件末尾添加如下配置:

# Oracle Setting
oracle soft nproc 10240
oracle hard nproc 65535
oracle soft nofile 10240
oracle hard nofile 65536
oracle soft stack 10240

编辑文件 /etc/pam.d/login,在文件末尾添加如下配置:

# Oracle Setting
session required pam_limits.so

编辑文件 /etc/profile,在文件末尾添加如下配置:

# Oracle Setting
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi

编辑文件 /etc/csh.login,在文件末尾添加如下配置:

# Oracle Setting
if ( $USER == "oracle") then
limit maxproc 16384
limit descriptors 65536
endif

创建相关目录

  • 创建ORACLE_BASE目录
# mkdir -p /data/app/oracle
# chown -R oracle.oinstall /data/app/
# chmod -R 755 /data/app/oracle/
  • 创建ORACLE_HOME目录
# su - oracle
$ mkdir -p /data/app/oracle/product/11.2.0/db_1
  • 创建Inventory目录
# su - oracle
$ mkdir -p /data/app/oraInventory

配置Oracle用户环境变量

编辑文件 /home/oracle/.bash_profile,在文件末尾添加如下配置(忽略注释信息):

# Oracle Setting
umask 022
export ORACLE_BASE=/data/app/oracle/ #Oracle Base目录
export ORACLE_HOME=/data/app/oracle/product/11.2.0/db_1 #Oracle Home目录
export ORACLE_SID=dbabd #实例SID
export PATH=$PATH:$ORACLE_HOME/bin #命令加入系统环境变量中
#export NLS_LANG="SIMPLIFIED CHINESE_CHINA.UTF8" #如果需要中文显示设置这项,如果是英文则设置成下面这项,最好是英文以避免不必要的麻烦。
export NLS_LANG="AMERICAN_AMERICA.UTF8"
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
alias sqlplus='rlwrap sqlplus' #命令history readline功能,需要另外安装rlwrap的rpm包
alias rman='rlwrap rman'

准备数据库安装文件

  • 上传安装文件
# rz
rz waiting to receive.
Upload Zmodem
p13390677_112040_Linux-x86-64_1of7.zip (1330.93 MB, 0:48 min = 27.73 MB/sec)
p13390677_112040_Linux-x86-64_2of7.zip (1097.97 MB, 0:45 min = 24.40 MB/sec)
  • 解压安装文件
# unzip p13390677_112040_Linux-x86-64_1of7.zip -d /tmp/
# unzip p13390677_112040_Linux-x86-64_2of7.zip -d /tmp/
# chown -R oracle.oinstall /tmp/database/

response file(响应文件)准备

/tmp/database/response/目录下有一份响应文件模板,复制一份至 /data/app目录下编辑:

$ cd /tmp/database/response/
$ ls
dbca.rsp db_install.rsp netca.rsp
$ cp db_install.rsp /data/app/dbabd_install.rsp -ra

修改后的响应文件内容如下,清除了多余的空行和注释语句。

$ cd /data/app/
$ sed -i 's/^#.*$//g' dbabd_install.rsp
$ sed -i '/^$/d' dbabd_install.rsp

文件dbabd_install.rsp修改后如下(实际文件中无以下注释语句):

oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0
oracle.install.option=INSTALL_DB_SWONLY # 只安装数据库软件
ORACLE_HOSTNAME=dbabd # 主机名
UNIX_GROUP_NAME=oinstall # 用户组
INVENTORY_LOCATION=/data/app/oraInventory # Inventory目录
SELECTED_LANGUAGES=en,zh_CN # 支持语言
ORACLE_HOME=/data/app/oracle/product/11.2.0/db_1 # ORACLE_HOME目录
ORACLE_BASE=/data/app/oracle/ # ORACLE_BASE目录
oracle.install.db.InstallEdition=EE # 安装版本
oracle.install.db.EEOptionsSelection=false
oracle.install.db.optionalComponents=oracle.rdbms.partitioning:11.2.0.4.0,oracle.oraolap:11.2.0.4.0,oracle.rdbms.dm:11.2.0.4.0,oracle.rdbms.dv:11.2.0.4.0,oracle.rdbms.lbac:11.2.0.4.0,oracle.rdbms.rat:11.2.0.4.0
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=
oracle.install.db.CLUSTER_NODES=
oracle.install.db.isRACOneInstall=
oracle.install.db.racOneServiceName=
oracle.install.db.config.starterdb.type=
oracle.install.db.config.starterdb.globalDBName=
oracle.install.db.config.starterdb.SID=
oracle.install.db.config.starterdb.characterSet=AL32UTF8
oracle.install.db.config.starterdb.memoryOption=true
oracle.install.db.config.starterdb.memoryLimit=
oracle.install.db.config.starterdb.installExampleSchemas=false
oracle.install.db.config.starterdb.enableSecuritySettings=true
oracle.install.db.config.starterdb.password.ALL=
oracle.install.db.config.starterdb.password.SYS=
oracle.install.db.config.starterdb.password.SYSTEM=
oracle.install.db.config.starterdb.password.SYSMAN=
oracle.install.db.config.starterdb.password.DBSNMP=
oracle.install.db.config.starterdb.control=DB_CONTROL
oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL=
oracle.install.db.config.starterdb.automatedBackup.enable=false
oracle.install.db.config.starterdb.automatedBackup.osuid=
oracle.install.db.config.starterdb.automatedBackup.ospwd=
oracle.install.db.config.starterdb.storageType=
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=
oracle.install.db.config.asm.diskGroup=
oracle.install.db.config.asm.ASMSNMPPassword=
MYORACLESUPPORT_USERNAME=
MYORACLESUPPORT_PASSWORD=
SECURITY_UPDATES_VIA_MYORACLESUPPORT=
DECLINE_SECURITY_UPDATES=true # 该选项默认为false,需要改成true,忽略安全性更新
PROXY_HOST=
PROXY_PORT=
PROXY_USER=
PROXY_PWD=
PROXY_REALM=
COLLECTOR_SUPPORTHUB_URL=
oracle.installer.autoupdates.option=
oracle.installer.autoupdates.downloadUpdatesLoc=
AUTOUPDATES_MYORACLESUPPORT_USERNAME=
AUTOUPDATES_MYORACLESUPPORT_PASSWORD=

关于响应文件更详细信息可参考官方文档:Customizing and Creating Response Files

开始安装

安装时需要切换到oracle用户执行如下命令:

$ /tmp/database/runInstaller -silent -force -ignorePrereq -ignoreSysPrereqs -responseFile /data/app/dbabd_install.rsp

输出如下:

Starting Oracle Universal Installer...

Checking Temp space: must be greater than 120 MB.   Actual 35541 MB    Passed
Checking swap space: must be greater than 150 MB. Actual 5119 MB Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2019-01-09_04-59-02PM. Please wait ...[oracle@dbabd ~]$ You can find the log of this install session at:
/data/app/oraInventory/logs/installActions2019-01-09_04-59-02PM.log
The installation of Oracle Database 11g was successful.
Please check '/data/app/oraInventory/logs/silentInstall2019-01-09_04-59-02PM.log' for more details. As a root user, execute the following script(s):
1. /data/app/oraInventory/orainstRoot.sh
2. /data/app/oracle/product/11.2.0/db_1/root.sh Successfully Setup Software.

根据输出内容,需要root用户执行两个脚本:

# /data/app/oraInventory/orainstRoot.sh
Changing permissions of /data/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world. Changing groupname of /data/app/oraInventory to oinstall.
The execution of the script is complete. # /data/app/oracle/product/11.2.0/db_1/root.sh
Check /data/app/oracle/product/11.2.0/db_1/install/root_dbabd_2019-01-09_17-04-17.log for the output of root script

配置监听

不只是安装数据库软件可以采取静默方式安装,同样,之前采用netca命令配置数据库监听现在也可以通过静默方式进行配置。与数据库软件相同的都是采用response file(响应文件)方式来安装。

  • 复制编辑响应文件

监听的响应文件可以保持默认,即跟默认模板文件一致。

$ cp /tmp/database/response/netca.rsp /data/app/dbabd_netca.rsp -ra
$ sed -i 's/^#.*$//g' /data/app/dbabd_netca.rsp
$ sed -i '/^$/d' /data/app/dbabd_netca.rsp

文件dbabd_netca.rsp修改后如下(实际文件中无以下注释语句):

[GENERAL]
RESPONSEFILE_VERSION="11.2"
CREATE_TYPE="CUSTOM"
[oracle.net.ca]
INSTALLED_COMPONENTS={"server","net8","javavm"}
INSTALL_TYPE=""typical""
LISTENER_NUMBER=1
LISTENER_NAMES={"LISTENER"} # 监听名称
LISTENER_PROTOCOLS={"TCP;1521"} # 监听端口
LISTENER_START=""LISTENER""
NAMING_METHODS={"TNSNAMES","ONAMES","HOSTNAME"}
NSN_NUMBER=1
NSN_NAMES={"EXTPROC_CONNECTION_DATA"}
NSN_SERVICE={"PLSExtProc"}
NSN_PROTOCOLS={"TCP;HOSTNAME;1521"}
  • 静默配置监听

在oracle用户下执行如下命令:

$ $ORACLE_HOME/bin/netca /silent /responsefile /data/app/dbabd_netca.rsp

输出如下:

Parsing command line arguments:
Parameter "silent" = true
Parameter "responsefile" = /data/app/dbabd_netca.rsp
Done parsing command line arguments.
Oracle Net Services Configuration:
Profile configuration complete.
Oracle Net Listener Startup:
Running Listener Control:
/data/app/oracle/product/11.2.0/db_1/bin/lsnrctl start LISTENER
Listener Control complete.
Listener started successfully.
Listener configuration complete.
Oracle Net Services configuration successful. The exit code is 0

查看监听状态:

$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 09-JAN-2019 17:12:19

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date 09-JAN-2019 17:09:20
Uptime 0 days 0 hr. 02 min. 58 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /data/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
Listener Log File /data/app/oracle/diag/tnslsnr/dbabd/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=dbabd)(PORT=1521)))
The listener supports no services
The command completed successfully

安装完成

至此,静默安装Oracle 11g R2数据库软件以及配置监听就完成了,可以看出静默安装有如下优点:

  1. 安装速度更快,提高了部署的效率;
  2. 不像图形界面安装方式需要人工干预,安装选项通过响应文件传递给安装程序执行;
  3. 减少操作系统资源消耗,避免安装更多的软件包。

参考

https://docs.oracle.com/cd/E11882_01/install.112/e24326/toc.htm

https://docs.oracle.com/cd/E11882_01/em.112/e12255/toc.htm

☆〖本人水平有限,文中如有错误还请留言批评指正!〗☆

CentOS 7静默安装Oracle 11g R2数据库软件的更多相关文章

  1. Centos 7 64位 minimal 最小化安装的系统中静默安装oracle 11g r2

    1:安装好centos 7 操作系统: 虚拟机安装centos 7,在vmware中一步步来就可以成功. 2:安装vim 最小化安装的系统只有vi编辑器,这里装一下vim,个人习惯,可以不安装, 那么 ...

  2. Centos 6.5 安装Oracle 11g R2 on vbox

    由于上一篇的rac安装,截图较多,这一篇选择以txt的方式叙述,另外上一篇的时间比较久远,这里最近从新安装 --2018-10-29 1 os环境初始化 [root@rac1 yum.repos.d] ...

  3. centos 7 下面安装oracle 11g r2 过程分享

    本人对LINUX等很多还不熟悉,如果有不对的地方还请各位指正.谢谢. 打算学习下ORACLE,RMAN备份与还原功能,所以安装了虚拟机,用的是centos7 X86_64-1611版本,oracle用 ...

  4. CentOS 6.5 安装Oracle 11G R2问题列表

    1. 文章中写vi/etc/profile #这个很重要 if [ $USER ="oracle" ]; then     if [ $SHELL="/bin/ksh&q ...

  5. linux 6.4平台利用rman迁移oracle 11g r2数据库

    测试环境分别在虚拟机安装A,B主机 系统:linux 6.4, 数据库:oracle 11g r2 A主机:安装oracle 11g r2数据库 B主机:只安装oracle 11g r2软件 第一步, ...

  6. Redhat Linux 下安装Oracle 11g R2

    能够下载:http://download.csdn.net/detail/ykh554541184/8086647文档方便查阅 官方文档:http://docs.oracle.com/cd/E1188 ...

  7. centos 安装oracle 11g r2(二)-----监听配置与创建数据库实例

    centos 安装oracle 11g r2(二)-----监听配置与创建数据库实例 一.监听配置(命令:netca) 1.以 oracle 用户输入命令,启动图形化工具配置监听 [oracle@lo ...

  8. centos 安装oracle 11g r2(一)-----软件安装

    centos 安装oracle 11g r2(一)-----软件安装 1.进入管理员权限 [anzerong@localhost ~]# su - root password [root@localh ...

  9. centos 安装oracle 11g r2(三)-----表空间创建

    centos 安装oracle 11g r2(三)-----表空间创建 创建表空间前要保证监听与数据库实例已经启动 1.启动监听 [oracle@localhost ~]$ lsnrctl start ...

随机推荐

  1. Matlab信号处理基础

    一. 简介 离散傅立叶.离散余弦和离散小波变换是图像.音频信号常用基础操作,时域信号转换到不同变换域以后,会导致不同程度的能量集中,信息隐藏利用这个原理在变换域选择适当位置系数进行修改,嵌入信息,并确 ...

  2. Java源码阅读的真实体会(一种学习思路)

    Java源码阅读的真实体会(一种学习思路) 刚才在论坛不经意间,看到有关源码阅读的帖子.回想自己前几年,阅读源码那种兴奋和成就感(1),不禁又有一种激动. 源码阅读,我觉得最核心有三点:技术基础+强烈 ...

  3. Kafka原理总结

    Kafka Kafka是最初由Linkedin公司开发,是一个分布式.支持分区的(partition).多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实 ...

  4. 《FPGA全程进阶---实战演练》第三十二章 Signal Tap II 应用实例

    还有几天就要交文章终稿了,三年的研究生生活也快要结束了,时间飞快,岁月如梭,但学习技术的热情仍然不能松懈,不懂的东西太多,需要实时保持奋斗!!过些天会继续更新<FPGA全程进阶---实战演练&g ...

  5. OSI 协议

  6. Datagrip连接SQLServer Connecting DataGrip to MS SQL Server

    Connecting DataGrip to MS SQL Server Posted on June 21, 2016 by Maksim Sobolevskiy Some specific nee ...

  7. Linux set、env、declare、export显示shell变量的区别

    目录 Linux中 set.env.declare.export显示shell变量的区别 1. shell局部变量 2. 用户的环境变量 显示shell变量 declare 命令 export 命令 ...

  8. Android的TextView设置加粗对汉字无效

    //not work textView.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD)); //work! static public voi ...

  9. Python Django 配置QQ邮箱发送邮件

    一.实验环境 Python2.7 + Django1.10.0 二.获取QQ邮箱授权码 1.什么是授权码? 授权码是QQ邮箱推出的,用于登录第三方客户端的专用密码. 适用于登录以下服务:POP3/IM ...

  10. js中 变量的解构赋值

    es6新特性, 提取数组或对象中的值,按照对应位置, 为变量赋值. let [a, b, c] = [1, 2, 3]; 交换变量的值变得容易 let x = 1; let y = 2; [x, y] ...