CentOS 7静默安装Oracle 11g R2数据库软件
之前安装Oracle 11g R2数据库软件都是建立在图形界面上的,不过现在大部分服务器上都没有安装图形界面。图形界面安装较为方便,安装选项清晰,步骤明确,但Oracle还支持另一种安装方式,就是通过响应文件(response file)静默方式安装。这对于没有安装图形界面组件的服务器来说十分方便,同时对于批量部署也更有效率,静默方式安装仅通过命令行方式就可以解决,少去了配置图形界面的繁琐,提高了安装速度。本文就基于CentOS 7上进行静默安装Oracle 11g R2数据库软件进行梳理总结,不涉及数据库的创建。
主要安装步骤参考官方文档:Oracle Database Quick Installation Guide for Linux x86-64
环境准备
- 操作系统(OS):CentOS Linux release 7.5.1804 (Core)
- 内核版本(kernel version):3.10.0-862.el7.x86_64
- 数据库版本(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数据库软件以及配置监听就完成了,可以看出静默安装有如下优点:
- 安装速度更快,提高了部署的效率;
- 不像图形界面安装方式需要人工干预,安装选项通过响应文件传递给安装程序执行;
- 减少操作系统资源消耗,避免安装更多的软件包。
参考
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数据库软件的更多相关文章
- Centos 7 64位 minimal 最小化安装的系统中静默安装oracle 11g r2
1:安装好centos 7 操作系统: 虚拟机安装centos 7,在vmware中一步步来就可以成功. 2:安装vim 最小化安装的系统只有vi编辑器,这里装一下vim,个人习惯,可以不安装, 那么 ...
- Centos 6.5 安装Oracle 11g R2 on vbox
由于上一篇的rac安装,截图较多,这一篇选择以txt的方式叙述,另外上一篇的时间比较久远,这里最近从新安装 --2018-10-29 1 os环境初始化 [root@rac1 yum.repos.d] ...
- centos 7 下面安装oracle 11g r2 过程分享
本人对LINUX等很多还不熟悉,如果有不对的地方还请各位指正.谢谢. 打算学习下ORACLE,RMAN备份与还原功能,所以安装了虚拟机,用的是centos7 X86_64-1611版本,oracle用 ...
- CentOS 6.5 安装Oracle 11G R2问题列表
1. 文章中写vi/etc/profile #这个很重要 if [ $USER ="oracle" ]; then if [ $SHELL="/bin/ksh&q ...
- linux 6.4平台利用rman迁移oracle 11g r2数据库
测试环境分别在虚拟机安装A,B主机 系统:linux 6.4, 数据库:oracle 11g r2 A主机:安装oracle 11g r2数据库 B主机:只安装oracle 11g r2软件 第一步, ...
- Redhat Linux 下安装Oracle 11g R2
能够下载:http://download.csdn.net/detail/ykh554541184/8086647文档方便查阅 官方文档:http://docs.oracle.com/cd/E1188 ...
- centos 安装oracle 11g r2(二)-----监听配置与创建数据库实例
centos 安装oracle 11g r2(二)-----监听配置与创建数据库实例 一.监听配置(命令:netca) 1.以 oracle 用户输入命令,启动图形化工具配置监听 [oracle@lo ...
- centos 安装oracle 11g r2(一)-----软件安装
centos 安装oracle 11g r2(一)-----软件安装 1.进入管理员权限 [anzerong@localhost ~]# su - root password [root@localh ...
- centos 安装oracle 11g r2(三)-----表空间创建
centos 安装oracle 11g r2(三)-----表空间创建 创建表空间前要保证监听与数据库实例已经启动 1.启动监听 [oracle@localhost ~]$ lsnrctl start ...
随机推荐
- Python threading 多参数传递方法
今天开启线程传递参数的时候,出现了一个小问题,一直不能传递多个参数,如下 import threading thread1 = threading.Thread(target=fun, args=[1 ...
- 印象笔记中的美人鱼 mermaid
美人鱼 mermaid 是印象笔记中Markdown模式下新增的一种代码模式,它能支持更多的高级图表功能,如流程图.甘特图.时序图. 我最喜欢的应该是甘特图,最惊喜的是流程图. 当然,印象笔记还支持其 ...
- Web重温系列(一):利用寄宿于IIS的WCF序列化文件
这两年一直在做WinForm,对于Web已经比较生疏了,其实之前做的也不是很多. 这两天做了一个小工具,功能很简单,就是想有个地方存放办公室同事的机器名和IP的信息,包括附加的用户名和更新时间.比较之 ...
- 【Tensorflow】tensorboard
tbCallBack = tf.keras.callbacks.TensorBoard(log_dir='./log' , histogram_freq=0, write_graph=True, wr ...
- 深入理解String类详解
1.Stringstr = "eee" 和String str = new String("eee")的区别 先看一小段代码, 1 public static ...
- 如何用AJax提交name[]数组?
https://www.cnblogs.com/junzilan/p/5424120.html
- Android Framework源码反编译
部分设备crash在Framework代码,但又和开源代码对应不上,这时需要拉取设备里面的Framework并反编译源代码排查问题. 1.获取Framework文件: adb pull /system ...
- LeetCode - 868. Binary Gap
Given a positive integer N, find and return the longest distance between two consecutive 1's in the ...
- Let's Encrypt泛域名SSL证书申请
操作系统:CentOS 7 github:https://github.com/Neilpang/acme.sh 有中文说明: https://github.com/Neilpang/acme.sh ...
- js模拟发送 FormData数据
后台express需要connect-multiparty模块接收formData的数据类型 class ourFormData { constructor(data, rs) { return ne ...