大家好,这里是 Lucifer三思而后行,专注于提升数据库运维效率。
前言
本章目标:掌握本章核心知识点
前置要求:完成前序章节学习
预计时长:60 分钟
相信大家第一次接触Oracle,大都是在windows上安装,比较方便快捷,基本上是一直下一步就可以安装成功。然而企业级的数据库,基本上都是安装在Linux服务器上,安全且高效。
没接触Linux的朋友不用害怕,跟着本篇文章一步步操作,安装Oracle如喝水般简单且标准。
下面我就来手把手教大家如何在Linux上安装Oracle数据库。

一、前期准备
1、虚拟机安装包
2、Oracle软件安装包
- oracle官网下载
- Oracle帐号:2696671285@qq.com
- Oracle密码:Oracle123
📢 注意: Oracle 官方网站目前只能下载最新版 19C 和 21C,需要其他版本 Oracle 安装包可点击链接跳转获取:
https://mp.weixin.qq.com/s/ECJelOb6NUjZjpUvUa17pg
3、Linux系统安装包
一般有三种Linux系统比较常用:RedHat 、 OracleLinux 、Centos 。
📢 注意: 上述 Linux 安装包 可点击链接跳转获取:
https://mp.weixin.qq.com/s/PFKkftgaTWpJKCnhI3uxZw
4、Linux远程连接工具
本文将使用XShell和Xftp工具,安装包可以在官网下载,也可私信博主获取。
其他工具也可以,比如:putty,SecureCRT 等等工具。
这篇博客演示RedHat Linux 7.6 版本安装Oracle 11GR2版本数据库。
二、Linux主机配置
安装 Linux 操作系统的步骤此处省略,主机内存 2G ,硬盘 50G 即可。
使用XShell工具连接Linux主机root用户:

1、主机名配置
如果安装时没有配置主机名,或者想要修改主机名,可以通过以下命令修改:
1hostnamectl set-hostname orcl

2、网络配置
如果安装时没有配置网络,或者想要修改网络,可以通过以下命令修改:
1nmcli connection modify eth0 ipv4.addresses 10.211.55.188/24 ipv4.gateway 10.211.55.1 ipv4.method manual autoconnect yes
2nmcli connection up eth0

3、配置Hosts文件
根据上面配置好的主机名和IP,配置hosts文件:
1cat <<EOF >>/etc/hosts
2##OracleBegin##
3##Public IP
410.211.55.188 orcl
5##OracleEnd##
6EOF

4、防火墙配置
1systemctl stop firewalld
2systemctl disable firewalld

5、Selinux配置
selinux修改后需要重启主机生效:
1sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

6、ISO镜像源配置
📢 注意: 需要先挂载主机镜像!
Parallels Desktop 挂载 Linux 主机镜像:

VMware Workstation 挂载 Linux 镜像:
1mount /dev/cdrom /mnt
2cat <<EOF>/etc/yum.repos.d/local.repo
3[local]
4name=local
5baseurl=file:///mnt
6gpgcheck=0
7enabled=1
8EOF

7、安装Oracle依赖包
如下依赖包从Oracle官方文档推荐获取:
1yum install -y bc \
2binutils \
3compat-libcap1 \
4compat-libstdc++-33 \
5gcc \
6gcc-c++ \
7elfutils-libelf \
8elfutils-libelf-devel \
9glibc \
10glibc-devel \
11ksh \
12libaio \
13libaio-devel \
14libgcc \
15libstdc++ \
16libstdc++-devel \
17libxcb \
18libX11 \
19libXau \
20libXi \
21libXtst \
22libXrender \
23libXrender-devel \
24make \
25net-tools \
26nfs-utils \
27smartmontools \
28sysstat \
29e2fsprogs \
30e2fsprogs-libs \
31fontconfig-devel \
32expect \
33unzip \
34openssh-clients \
35readline* \
36psmisc --skip-broken
检查是否安装成功:
1rpm -q bc binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ elfutils-libelf elfutils-libelf-devel glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libxcb libX11 libXau libXi libXtst libXrender libXrender-devel make net-tools nfs-utils smartmontools sysstat e2fsprogs e2fsprogs-libs fontconfig-devel expect unzip openssh-clients readline

Linux7需要手动安装compat-libstdc++依赖包:
1rpm -ivh compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm

8、配置ZeroConf
1##关闭Zeroconf service的服务守护进程
2systemctl stop avahi-daemon.socket
3systemctl stop avahi-daemon.service
4systemctl disable avahi-daemon.service
5systemctl disable avahi-daemon.socket
6
7##关闭NOZEROCONF
8cat <<EOF >>/etc/sysconfig/network
9#OracleBegin
10NOZEROCONF=yes
11#OracleEnd
12EOF

9、关闭透明大页和numa
1sed -i 's/quiet/quiet transparent_hugepage=never numa=off/' /etc/default/grub
2grub2-mkconfig -o /boot/grub2/grub.cfg

10、配置系统参数文件
1##计算shmall和shmmax值
2memTotal=$(grep MemTotal /proc/meminfo | awk '{print $2}')
3totalMemory=$((memTotal / 2048))
4shmall=$((memTotal / 4))
5if [ $shmall -lt 2097152 ]; then
6 shmall=2097152
7fi
8shmmax=$((memTotal * 1024 - 1))
9if [ "$shmmax" -lt 4294967295 ]; then
10 shmmax=4294967295
11fi
12echo $shmall
13echo $shmmax
14
15##配置系统参数
16cat <<EOF >>/etc/sysctl.conf
17#OracleBegin
18##shmmal's Calculation formula: physical memory 8G:(8*1024*1024*1024)/4096=2097152
19##shmmax's Calculation formula: physical memory 8G:(8/2)*1024*1024*1024 -1=4294967295
20fs.aio-max-nr = 1048576
21fs.file-max = 6815744
22kernel.shmall = $shmall
23kernel.shmmax = $shmmax
24kernel.shmmni = 4096
25kernel.sem = 250 32000 100 128
26net.ipv4.ip_local_port_range = 9000 65500
27net.core.rmem_default = 262144
28net.core.rmem_max = 4194304
29net.core.wmem_default = 262144
30net.core.wmem_max = 1048576
31EOF
32
33##系统参数生效
34sysctl -p

11、配置系统资源限制
1cat <<EOF >>/etc/security/limits.conf
2#OracleBegin
3oracle soft nofile 1024
4oracle hard nofile 65536
5oracle soft stack 10240
6oracle hard stack 32768
7oracle soft nproc 2047
8oracle hard nproc 16384
9oracle hard memlock 134217728
10oracle soft memlock 134217728
11#OracleEnd
12EOF
13
14cat <<EOF >>/etc/pam.d/login
15#OracleBegin
16session required pam_limits.so
17session required /lib64/security/pam_limits.so
18#OracleEnd
19EOF

12、创建用户和组
1/usr/sbin/groupadd -g 54321 oinstall
2/usr/sbin/groupadd -g 54322 dba
3/usr/sbin/groupadd -g 54323 oper
4
5/usr/sbin/useradd -u 54321 -g oinstall -G dba,oper oracle
6echo oracle | passwd --stdin oracle

13、创建Oracle安装目录
1mkdir -p /u01/app/oracle/product/11.2.0/db
2mkdir -p /u01/app/oraInventory
3mkdir -p /oradata
4chown -R oracle:oinstall /oradata
5chown -R oracle:oinstall /u01/app
6chmod -R 775 /u01/app

14、配置用户环境变量
1cat <<EOF >>/home/oracle/.bash_profile
2################OracleBegin#########################
3umask 022
4export TMP=/tmp
5export TMPDIR=\$TMP
6export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
7export ORACLE_BASE=/u01/app/oracle
8export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db
9export ORACLE_HOSTNAME=orcl
10export ORACLE_TERM=xterm
11export TNS_ADMIN=\$ORACLE_HOME/network/admin
12export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib
13export ORACLE_SID=orcl
14export PATH=/usr/sbin:\$PATH
15export PATH=\$ORACLE_HOME/bin:\$ORACLE_HOME/OPatch:\$PATH
16alias sas='sqlplus / as sysdba'
17export PS1="[\`whoami\`@\`hostname\`:"'\$PWD]\$ '
18EOF

三、Oracle软件安装
1、Oracle软件包上传
1[root@orcl soft]# ll
2-rw-r--r--. 1 root root 1395582860 May 31 16:56 p13390677_112040_Linux-x86-64_1of7.zip
3-rw-r--r--. 1 root root 1151304589 May 31 16:56 p13390677_112040_Linux-x86-64_2of7.zip

2、解压Oracle软件安装包
需要按顺序解压1,2安装包:
1cd /soft
2unzip -q p13390677_112040_Linux-x86-64_1of7.zip
3unzip -q p13390677_112040_Linux-x86-64_2of7.zip
4
5##授权/soft给oracle读写权限
6chown -R oracle:oinstall /soft

3、安装VNC软件
1yum install -y tigervnc*
2
3su - oracle
4vncserver
5##输入密码

4、连接VNC远程工具或者直接打开虚拟机图形化界面

右键打开终端工具:

进入 /soft/database 开始安装 Oracle 软件:
1./runInstaller -jreLoc /etc/alternatives/jre_1.8.0

不接收 Oracle 邮件推送:

不更新 Oracle:

只安装 Oracle 软件:

单实例安装:

选择企业版:

选择安装目录:


选择安装用户组:

Oracle 安装前必要检查:

上传 pdksh-5.2.14-37.el5.x86_64.rpm 依赖包并安装:
1rpm -e ksh-20120801-142.el7.x86_64
2rpm -ivh pdksh-5.2.14-37.el5.x86_64.rpm

点击再次检查,忽略 Swap 警告:




解决方案:
1su - oracle
2sed -i 's/^\(\s*\$(MK_EMAGENT_NMECTL)\)\s*$/\1 -lnnz11/g' $ORACLE_HOME/sysman/lib/ins_emagent.mk
执行完点击retry重试:

执行 root 脚本:

root用户下执行脚本:
1/u01/app/oraInventory/orainstRoot.sh
2/u01/app/oracle/product/11.2.0/db/root.sh



安装完成后,重启主机。
四、创建数据库
1、打开监听
1su - oracle
2lsnrctl start
3lsnrctl status

2、连接VNC远程工具或者直接打开虚拟机图形化界面

创建数据库:

选择自定义模式:

输入实例名:

这里填写数据库实例名称和 dbname,本次填写 orcl。

不安装EM工具。

这里输入SYS和SYSTEM用户的密码,需要记住。

这里选择前面建好的/oradata目录用来存放数据文件。

不开启闪回日志,不开启归档日志,可以建好库之后再手动修改。


数据库内存分配,选择手动分配,占用物理内存70%左右。

block_size根据实际情况选择,一旦建库无法修改,默认8K。

字符集根据需要进行选择,默认AL32UTF8。




等待建库完成即可。

五、连接数据库
确保监听正常启动,并监听数据库:

1、通过数据库主机连接
1su - oracle
2sqlplus / as sysdba
3select sysdate from dual;
4
5##创建数据库用户
6create user test identified by test;
7grant dba to test;
8conn test/test
9
10##创建表
11create table test (id number not null,name varchar2(100));
12insert into test values (1,'lucifer');
13commit;
2、通过PL/SQL连接test用户


至此,Oracle数据库已经安装完毕。
往期精彩文章
感谢您的阅读,这里是 Lucifer三思而后行,欢迎点赞+关注,我会持续分享数据库知识、运维技巧。