欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

CentOS 7静默安装Oracle 11g R2数据库软件

程序员文章站 2022-09-04 16:15:03
正文 之前安装Oracle 11g R2数据库软件都是建立在图形界面上的,不过现在大部分服务器上都没有安装图形界面。图形界面安装较为方便,安装选项清晰,步骤明确,但Oracle还支持另一种安装方式,就是通过响应文件(response file)静默方式安装。这对于没有安装图形界面组件的服务器来说十分 ......

正文

之前安装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

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