CentOS 7.6 最小化系统静默安装 oracle 11g 数据库


前言

之前有个用户希望我可以远程帮忙安装一下 Oracle 数据库,当时由于沟通没到位,只了解到用户是通过 VPN 远程访问的数据库服务器,并且服务器是基于 Minimal 方式安装的系统。因为之前一直都是通过图形化安装的数据库,所以我给的建议是先把系统图形化界面安装起来,然后再安装配置数据库。

直到远程操作时才发现,用户是通过堡垒机访问的数据库服务器,并且堡垒机没有提供 VNC 以及 Xstart 这种远程操作图形化界面的工具。更尴尬的是,用户的环境没有试错机会 ~~ 没辙呀,最终我只能先在自己的实验环境中走一遍静默安装的流程,跑通流程后再去用户的环境里面部署,最后一把梭成功了。

本文就是对于这次操作的总结和记录,希望可以为有需要的朋友提供一些帮助。


1. 安装环境说明

1.1. 系统及内核版本

  • 操作系统版本:CentOS Linux release 7.6.1810 (Core)
  • 系统内核版本:3.10.0-957.el7.x86_64

1.2. 数据库软件版本

  • 数据库版本:Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
  • 数据库安装包
    • p13390677_112040_Linux-x86-64_1of7.zip
    • p13390677_112040_Linux-x86-64_2of7.zip

1.3. 数据库目录规划

对象路径作用
软件包目录/oradata/oratools用于存放数据库软件包以及安装数据库时所需要的额外依赖包。
应答文件转存目录/home/oracle/rsp_file用于备份数据库默认的应答文件,静默安装时需要对此目录下的文件进行修改并应用。
ORACLE_BASE 目录/oradata/app/oracle此为数据库基础目录,配置用户环境变量和应答文件时都需要进行指定。
ORACLE_HOME 目录/oradata/app/oracle/product/11.2.0此为数据库家目录,配置用户环境变量和应答文件时同样也需要进行指定。

2. 系统基线配置

配置1:统一时区和时间。

# timedatectl set-timezone Asia/Shanghai   //设置时区。
# date -s "2022-04-25 10:52:00"   //设置日期和时间。
# clock -w   //将当前系统时间同步到硬件时钟。

配置2:修改主机名。

# hostnamectl set-hostname <要修改成的主机名>
# bash

配置3:配置本地 yum 源。

# mkdir /etc/yum.repos.d/repo_backup
# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/repo_backup/
# mkdir /iso   //此目录存放系统镜像文件。
# mkdir /mnt/cdrom

# cat > /etc/yum.repos.d/local.repo << EOF   //配置本地 yum 源配置文件。
> [local]
> name=local
> baseurl=file:///mnt/cdrom
> enabled=1
> gpgcheck=0
> EOF

# echo "/iso/CentOS-7.6-x86_64-DVD-1810.iso   /mnt/cdrom   iso9660   defaults   0 0" >> /etc/fstab   //设置开机自动挂载。
# yum clean all
# yum repolist

配置4:配置 /etc/hosts 解析。

# vi /etc/hosts   //在文件末尾添加如下解析条目。
172.16.206.30   oracle11g

配置5:关闭 firewalld 服务。

# systemctl stop firewalld.service
# systemctl disable  firewalld.service

配置6:关闭 selinux 模块。

# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# reboot   //重启系统使配置生效。

3. 配置数据库基础环境

Step1:准备数据库软件包和其它依赖包。

[root@oracle11g ~]# mkdir -p /oradata/oratools
[root@oracle11g ~]# ls -lh /oradata/oratools/
total 2.4G
-rw-r--r--  1 root root 191K Apr 25 11:02 compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm   //依赖包。
-rw-r--r--. 1 root root 1.3G Apr 22 20:29 p13390677_112040_Linux-x86-64_1of7.zip   //软件包分片1。
-rw-r--r--. 1 root root 1.1G Apr 22 20:32 p13390677_112040_Linux-x86-64_2of7.zip   //软件包分片2。
-rw-r--r--  1 root root 206K Apr 25 11:02 pdksh-5.2.14-37.el5_8.1.x86_64.rpm   //依赖包。

Step2:安装数据库所需要的依赖包。

本地 yum 源基本上都提供了下面所需要的依赖包:

[root@oracle11g ~]# yum -y install install binutils compat-libcap1 compat-libstdc++ gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel elfutils-libelf-devel

一般来说,此时都会提示 No package compat-libstdc++ available ,所以我们需要单独进行安装:

[root@oracle11g ~]# rpm -ivh /oradata/oratools/compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm

另外,根据以往经验,在数据库进行安装前预检查时多半都会提示缺少 pdksh 依赖包,而此包与系统默认安装的 ksh 包是冲突的;因此需要先卸载 ksh 包再安装 pdksh 依赖包:

[root@oracle11g ~]# rpm -e `rpm -qa |grep ksh`
[root@oracle11g ~]# rpm -ivh /oradata/oratools/pdksh-5.2.14-37.el5_8.1.x86_64.rpm

最后,因为需要用到 vim 和 unzip 工具,所以这里也可以提前进行安装:

[root@oracle11g ~]# yum -y install unzip vim

Step3:创建 oracle 用户和用户组。

[root@oracle11g ~]# groupadd oinstall
[root@oracle11g ~]# groupadd dba
[root@oracle11g ~]# useradd -g oinstall -G dba oracle
[root@oracle11g ~]# passwd oracle
[root@oracle11g ~]# id oracle
uid=1001(oracle) gid=1001(oinstall) groups=1001(oinstall),1002(dba)

Step4:创建 oracle 所需目录(不包含应答文件的目录配置)。

[root@oracle11g ~]# mkdir /oradata/app
[root@oracle11g ~]# chown -R oracle:oinstall /oradata/app/
[root@oracle11g ~]# chmod -R 775 /oradata/app/
[root@oracle11g ~]# ls -ld /oradata/app/
drwxrwxr-x. 2 oracle oinstall 6 Apr 22 20:25 /oradata/app/   //注意目录所属用户和组以及权限。

Step5:设置内核参数。

特别说明: 实际生产环境里面,这些参数需要结合你分配的资源来进行设计,而不是一股脑的照搬下来。关于内核参数这块,kernel.shmmaxkernel.shmall 我们需要计算一下(如果是图形化安装,当因为内核参数设置不正确导致安装前检查报错,点击 Fix & Check Again 会自动修正):

  • kernel.shmmax = 8GB * 1024 * 1024 * 1024 - 1 = 8589934591(服务器的分配了 8GB 内存)
  • kernel.shmall = 8GB * 1024 * 1024 / 4KB = 2097152
[root@oracle11g ~]# vim /etc/sysctl.conf   //添加如下配置信息。

fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 8589934591
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

[root@oracle11g ~]# sysctl -p   //使配置立即生效。

在这里插入图片描述

Step6:设置软硬件资源限制

[root@oracle11g ~]# vim /etc/security/limits.conf   //添加如下配置信息。

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

在这里插入图片描述

Step7:配置 oracle 用户环境变量

[root@oracle11g ~]# vim /home/oracle/.bash_profile   //在 “export PATH” 后面添加如下配置信息。

unset USERNAME
export ORACLE_BASE=/oradata/app/oracle
export ORACLE_HOME=/oradata/app/oracle/product/11.2.0
export ORACLE_SID=orcl
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export PATH=/usr/sbin:$PATH:$ORACLE_HOME/bin

[root@oracle11g ~]# source /home/oracle/.bash_profile   //使环境变量配置立即生效。

在这里插入图片描述

Step8:解压软件安装包并赋权。

[root@oracle11g ~]# cd /oradata/oratools/
[root@oracle11g oratools]# unzip p13390677_112040_Linux-x86-64_1of7.zip
[root@oracle11g oratools]# unzip p13390677_112040_Linux-x86-64_2of7.zip   //这两个分片完成解压后会在当前目录下生成 database 目录。
[root@oracle11g ~]# chown -R oracle:oinstall /oradata/oratools/database/
[root@oracle11g ~]# chmod -R 775 /oradata/oratools/database/
[root@oracle11g ~]# ls -ld /oradata/oratools/database/
drwxrwxr-x 7 oracle oinstall 136 Aug 27  2013 /oradata/oratools/database/

4. 配置数据库应答文件

4.1. 备份应答文件

[root@oracle11g ~]# mkdir /home/oracle/rsp_file
[root@oracle11g ~]# cp /oradata/oratools/database/response/*.rsp /home/oracle/rsp_file/
[root@oracle11g ~]# chmod -R 775 /home/oracle/rsp_file/
[root@oracle11g ~]# chown -R oracle:oinstall /home/oracle/rsp_file/
[root@oracle11g ~]# ls -la /home/oracle/rsp_file/
total 80
drwxrwxr-x 2 oracle oinstall    61 Apr 25 14:13 .
drwx------ 3 oracle oinstall    78 Apr 25 14:12 ..
-rwxrwxr-x 1 oracle oinstall 44533 Apr 25 14:13 dbca.rsp   //创建数据库所使用的应答文件
-rwxrwxr-x 1 oracle oinstall 25116 Apr 25 14:13 db_install.rsp   //安装数据库所使用的应答文件。
-rwxrwxr-x 1 oracle oinstall  5871 Apr 25 14:13 netca.rsp   //创建数据库监听所使用的的应答文件。

4.2. 配置 db_install.rsp 应答文件

编辑 db_install.rsp 应答文件:

[root@oracle11g ~]# vim /home/oracle/rsp_file/db_install.rsp

具体需要修改的参数项如下图所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

关于修改的参数项说明:

oracle.install.option=INSTALL_DB_SWONLY   //设置安装类型为“仅安装数据库”。
ORACLE_HOSTNAME=oracle11g   //设置主机名。
UNIX_GROUP_NAME=oinstall   //设置 oracle 推荐的系统用户组。
INVENTORY_LOCATION=/oradata/app/oraInventory   //设置 oraInventory 目录(无需手工创建)。
SELECTED_LANGUAGES=en,zh_CN   //设置产品语言。
ORACLE_HOME=/oradata/app/oracle/product/11.2.0   //设置数据库家目录。
ORACLE_BASE=/oradata/app/oracle   //设置数据库基础目录。
oracle.install.db.InstallEdition=EE   //设置安装“企业版”数据库。
oracle.install.db.DBA_GROUP=dba   //设置 OSDBA 用户组。
oracle.install.db.OPER_GROUP=oinstall   //设置 OSOPER 用户组。
oracle.install.db.isRACOneInstall=false   //非 rac(非 rac 或 rac one node)。
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE   //设置为“一般用途”类型。
oracle.install.db.config.starterdb.globalDBName=orcl   //设置全局数据库名称。
oracle.install.db.config.starterdb.SID=orcl   //设置数据库实例名称。
oracle.install.db.config.starterdb.characterSet=ZHS16GBK   //设置数据库字符集。
oracle.install.db.config.starterdb.password.ALL=oracle   //为所有数据库账号设置相同密码(这里建议先设置简单点,后面可以修改,原因后面安装时会提到)。
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false   //结合下面的一项都表示“拒绝更新”(其实就是图形化安装时的前两个有关更新的配置)。
DECLINE_SECURITY_UPDATES=true

4.3. 配置 netca.rsp 应答文件

创建数据库监听程序的应答文件可以使用默认配置,不需要进行修改。

但需要注意的是,在创建数据库之前,一定要先配置好监听程序,否则会报错

4.4. 配置 dbca.rsp 应答文件

编辑 dbca.rsp 应答文件:

[root@oracle11g ~]# vim /home/oracle/rsp_file/dbca.rsp

具体需要修改的参数项如下图所示:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

关于修改的参数项说明:

[root@oracle11g ~]# cat /home/oracle/rsp_file/dbca.rsp |grep -vE '^#|^$'
[GENERAL]
RESPONSEFILE_VERSION = "11.2.0"   //此参数项为默认配置无需指定,即表明数据库版本。
OPERATION_TYPE = "createDatabase"    //此参数项为默认配置无需指定,即表明是创建数据库的操作。
[CREATEDATABASE]
GDBNAME = "orcl"   //此参数项需要我们指定,即设置全局数据库名称。
SID = "orcl"   //此参数项需要我们指定,即设置数据库实例名称。
TEMPLATENAME = "General_Purpose.dbc"
[createTemplateFromDB]
SOURCEDB = "myhost:1521:orcl"
SYSDBAUSERNAME = "system"
TEMPLATENAME = "My Copy TEMPLATE"
[createCloneTemplate]
SOURCEDB = "orcl"
TEMPLATENAME = "My Clone TEMPLATE"
[DELETEDATABASE]
SOURCEDB = "orcl"
[generateScripts]
TEMPLATENAME = "New Database"
GDBNAME = "orcl"   //此参数项需要我们指定,即设置全局数据库名称。
[CONFIGUREDATABASE]
[ADDINSTANCE]
DB_UNIQUE_NAME = "orcl11g.us.oracle.com"
NODELIST=
SYSDBAUSERNAME = "sys"
[DELETEINSTANCE]
DB_UNIQUE_NAME = "orcl11g.us.oracle.com"
INSTANCENAME = "orcl"   //此参数项需要我们指定,即设置数据库实例名称。
SYSDBAUSERNAME = "sys"

5. 使用应答文件进行静默安装

5.1. 静默安装数据库软件

静默安装需要在 oracle 用户下执行,所以我们首先要切换到 oracle 用户环境下,然后去执行静默安装命令:

[root@oracle11g ~]# su - oracle
[oracle@oracle11g ~]$ cd /oradata/oratools/database/
[oracle@oracle11g database]$ ./runInstaller -silent -responseFile /home/oracle/rsp_file/db_install.rsp

在这里插入图片描述
特别说明:如果安装出现报错,可以根据日志看一下具体是哪个(些)检查项没有通过,然后删除相关目录和文件重新进行安装;或者可以结合 -ignoreSysPrereqs 参数直接忽略安装前检查,但这个建议慎用,首先我自己没有这样做过,其次安装 Oracle 数据库还是尽量保证预检查都能通过最好)。

此时我们可以使用 tail 工具实时查看执行的日志:
在这里插入图片描述
等待一段时间后会提示我们以 root 身份执行两个脚本,我们新开一个 shell 窗口执行即可:
在这里插入图片描述

[root@oracle11g ~]# sh /oradata/app/oraInventory/orainstRoot.sh
[root@oracle11g ~]# sh /oradata/app/oracle/product/11.2.0/root.sh

脚本执行完成后,回到执行安装命令的 shell 窗口,敲下 “Enter” 键结束安装:
在这里插入图片描述

5.2. 静默创建数据库监听

静默安装需要在 oracle 用户下执行,所以我们首先要切换到 oracle 用户环境下,然后去执行静默安装命令:

[root@oracle11g ~]# su - oracle
[oracle@oracle11g ~]$ netca -silent -responseFile /home/oracle/rsp_file/netca.rsp

在这里插入图片描述

5.3. 静默创建数据库

静默创建数据库需要在 oracle 用户下执行,所以我们首先要切换到 oracle 用户环境下,然后去执行命令:

[root@oracle11g ~]# su - oracle
[oracle@oracle11g ~]$ dbca -silent -responseFile /home/oracle/rsp_file/dbca.rsp

这里就可以提一下前面 4.2 章节在编辑 db_install.rsp 应答文件时,我建议说为所有用户创建相同的密码,此密码可以先设置的简单一点,其原因就是当出现清屏现象后,如果设置的密码过于复杂,可能自己输错了都不知道,导致安装失败。因此,可以先设置个简单的密码顺利完成安装,然后再登录到数据库修改成自己需要的密码。
在这里插入图片描述
在输入两次密码以后,就可以看到数据库创建的进度,直到 100% 完成创建:
在这里插入图片描述

至此,我们就成功安装并创建了 Oracle 数据库。


6. 数据库状态检查

6.1. 检查数据库版本

SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE	11.2.0.4.0	Production
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production

6.2. 检查数据库运行状态

检查数据库启动模式:

SQL> select open_mode from v$database;

OPEN_MODE
----------------------------------------
READ WRITE

检查实例运行状态:

SQL> select status from v$instance;

STATUS
------------------------
OPEN

6.3. 检查监听运行状态

[oracle@oracle11g ~]$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 26-APR-2022 14:27:14

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                26-APR-2022 11:34:16
Uptime                    0 days 2 hr. 52 min. 58 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /oradata/app/oracle/product/11.2.0/network/admin/listener.ora
Listener Log File         /oradata/app/oracle/diag/tnslsnr/oracle11g/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle11g)(PORT=1521)))
Services Summary...
Service "orcl" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully

7. 配置数据库开机自启动

使用静默方式安装的数据库默认是无法随系统开机自启动的,我们可以将其写成系统服务脚本来实现开机自启动,也可以通过 rc.local 文件在开机后去自动执行相关启动的命令来实现开机自启动。

下面就 rc.local 这种方法来做一个说明:

Step1:将 dbstart 启动脚本中默认的 “ORACLE_HOME_LISTNER=$1” 修改为 “ORACLE_HOME_LISTNER=$ORACLE_HOME”(此操作要在 oracle 用户下完成)。

[root@oracle11g ~]# su - oracle
[oracle@oracle11g ~]$ sed -i 's/ORACLE_HOME_LISTNER=$1/ORACLE_HOME_LISTNER=$ORACLE_HOME/g' $ORACLE_HOME/bin/dbstart

Step2:修改 oratab 文件允许数据库在系统开机时自启动。

[root@oracle11g ~]# sed -i "s/:N/:Y/g" /etc/oratab

Step3:将启动命令写入 rc.local 文件中。

[root@oracle11g ~]# echo 'su - oracle -c "/oradata/app/oracle/product/11.2.0/bin/lsnrctl start"' >> /etc/rc.d/rc.local   //启动监听。 
[root@oracle11g ~]# echo 'su - oracle -c "/oradata/app/oracle/product/11.2.0/bin/dbstart"' >> /etc/rc.d/rc.local   //启动数据库。
[root@oracle11g ~]# chmod u+x /etc/rc.d/rc.local

总结

整个静默安装在我看来需要注意的有三点:

  • 务必将 oracle 需要的依赖包都安装上;
  • 配置 /etc/sysctl.conf 文件时,需要注意 kernel.shmmax 和 kernel.shmall 参数的修改;
  • 在修改各个应答文件时一定要细心,不要缺少关键性的参数项,更不要写错参数项。

最后,如果大家想要了解图形化安装 Oracle 数据库,可以参考我的另外一篇博客 《基于 CentOS 6.5 搭建 Oracle 11g 数据库》

以上,如有不妥之处,欢迎指正。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

方先森有点懒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值