CentOS7安装Oracle11g一次性通过详细图文教程及安装过程中可能遇到的坑

1 准备工作

1.1 环境准备

  1. VMware-workstation-full-15.5.2.exe
  2. CentOS-7-x86_64-DVD-1511.iso
  3. linux.x64_11gR2_database_1of2.zip
  4. linux.x64_11gR2_database_2of2.zip
  5. Xmanager Power Suite 6(个人喜好)

1.2 安装ORACLE准备

以下如不言明,均为在root用户下操作。

1.2.1 关闭CentOS防火墙、SELINUX

关闭系统防火墙:

[root@localhost ~]# systemctl status firewalld.service #查看防火墙状态
● firewalld.service - firewalld - dynamic firewall daemon 
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2020-04-07 03:10:19 EDT; 2min 39s ago
     Docs: man:firewalld(1)
 Main PID: 756 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─756 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid

Apr 07 03:10:17 localhost.localdomain systemd[1]: Starting firewalld - dynamic ....
Apr 07 03:10:19 localhost.localdomain systemd[1]: Started firewalld - dynamic f....
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost ~]# systemctl stop firewalld.service #临时关闭防火墙
[root@localhost ~]# systemctl disable firewalld.service #永久关闭防火墙
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

关闭selinux:

修改/etc/selinux/config文件,将SELINUX状态改为disabled。如下图:

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 

 

因为本人喜好在Xmanager上操作,所以先使用XShell连接上服务器,首先在服务器上获取服务器ip :

ip addr

发现网卡居然没有ip,如下图:

CentOS7安装Oracle11g一次性通过详细图文教程及安装过程中可能遇到的坑_第1张图片

查看网卡配置文件:

cat /etc/sysconfig/network-scripts/ifcfg-ens33

发现CentOS7默认是不启动网卡的,如下图:

CentOS7安装Oracle11g一次性通过详细图文教程及安装过程中可能遇到的坑_第2张图片

修改该文件将ONBOOT=no,改为ONBOOT=yes,重启网卡服务:

service network restart

然后再次执行命令ip addr 发现已经分配到ip:

CentOS7安装Oracle11g一次性通过详细图文教程及安装过程中可能遇到的坑_第3张图片

1.2.2 安装oracle数据库前准备

1. 创建运行oracle数据库的系统用户和用户组

[root@localhost ~]# groupadd oinstall  #创建用户组oinstall
[root@localhost ~]# groupadd dba  #创建用户组dba
[root@localhost ~]# useradd -g oinstall -g dba -m oracle #创建oracle用户,并加入到oinstall和dba用户组
[root@localhost ~]# passwd oracle #设置用户oracle的登陆密码,不设置密码,在CentOS的图形登陆界面没法登陆
Changing password for user oracle.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@localhost ~]# id oracle #查看新建的oracle用户
uid=1000(oracle) gid=1001(dba) groups=1001(dba)

2. oracle数据库安装目录

[root@localhost ~]# mkdir -p /data/oracle  #oracle数据库安装目录
[root@localhost ~]# mkdir -p /data/oraInventory #oracle数据库配置文件目录
[root@localhost ~]# mkdir -p /data/database #oracle数据库软件包解压目录
[root@localhost ~]# chown -R oracle:oinstall /data/oracle #设置目录所有者为oinstall用户组的oracle用户
[root@localhost ~]# chown -R oracle:oinstall /data/oraInventory
[root@localhost ~]# chown -R oracle:oinstall /data/database

3. 修改OS系统标识

 oracle默认不支持CentOS系统安装,Oracle Database 11g Release 2 的 OS要求参考:

 https://docs.oracle.com/cd/E11882_01/install.112/e47689/pre_install.htm#LADBI1106

修改配置文件,将redhat-release文件中的内容改为 redhat-7:

[root@localhost ~]# cat /etc/redhat-release 
CentOS Linux release 7.7.1908 (Core)
[root@localhost ~]# vi /etc/redhat-release 
[root@localhost ~]# cat /etc/redhat-release 
redhat-7

4. 安装ORACLE所需软件包

我安装的是Oracle Database 11g Release 2 64位数据库,所需依赖如下:

binutils-2.23.52.0.1-12.el7.x86_64 
compat-libcap1-1.10-3.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 

(参考官网https://docs.oracle.com/cd/E11882_01/install.112/e47689/pre_install.htm#BABCFJFG)

使用下面指令检测依赖包安装:

yum install binutils-2.* compat-libstdc++-33* elfutils-libelf-0.* elfutils-libelf-devel-* gcc-4.* gcc-c++-4.* glibc-2.* glibc-common-2.* glibc-devel-2.* glibc-headers-2.* ksh-2* libaio-0.* libaio-devel-0.* libgcc-4.* libstdc++-4.* libstdc++-devel-4.* make-3.* sysstat-7.* unixODBC-2.* unixODBC-devel-2.* pdksh*

 

5. 修改内核参数

修改/etc/sysctl.conf,在文件末尾添加如下参数:

net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.rp_filter = 1
fs.file-max = 6815744 #设置最大打开文件数
fs.aio-max-nr = 1048576
kernel.shmall = 2097152 #共享内存的总量,8G内存设置:2097152*4k/1024/1024
kernel.shmmax = 2147483648 #最大共享内存的段大小
kernel.shmmni = 4096 #整个系统共享内存端的最大数
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500 #可使用的IPv4端口范围
net.core.rmem_default = 262144
net.core.rmem_max= 4194304
net.core.wmem_default= 262144
net.core.wmem_max= 1048576

执行命令使配置生效:

[root@localhost ~]# sysctl -p

6. 对oracle用户设置限制,提高软件运行性能

修改/etc/security/limits.conf,在文件末尾添加如下参数:

#@student        -       maxlogins       4

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

# End of file

7. 配置用户环境变量

修改/home/oracle/.bash_profile,在文件末尾添加如下参数:

export ORACLE_BASE=/data/oracle #oracle数据库安装目录
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1 #oracle数据库路径
export ORACLE_SID=orcl #oracle启动数据库实例名
export ORACLE_TERM=xterm #xterm窗口模式安装
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH #添加系统环境变量
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib #添加系统环境变量
export LANG=C #防止安装过程出现乱码
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK  #设置Oracle客户端字符集,必须与Oracle安装时设置的字符集保持一致

执行命令使上述配置立即生效:

[root@localhost ~]# source /home/oracle/.bash_profile

8. 上传安装包

使用Xmanager自带的Xftp工具将oracle安装包上传至CentOs。

9. 解压安装包

[root@localhost oracle]# unzip linux.x64_11gR2_database_1of2.zip -d /data/database/

提示我没有unzip命令,(╯▽╰)。。。安装unzip:

[root@localhost oracle]# yum install unzip zip

重新执行解压命令,分别解压两个安装包。解压时间较长,耐心等待,(*╹▽╹*).....

10. centos安装图形化界面

本教程安装oracle是使用图形化界面安装,一般centos7是没有图形化界面的,这里先安装好xwindow,安装xwindow所需时间较长,需耐心等待,如果已经安装过图形化界面,则可跳过此步骤:

[root@localhost oracle]# yum groupinstall "X Window System"

11. 创建虚拟机快照

到这里安装oracle 的环境全部都已经准备好了,接下来就要开始图形化界面安装oracle了。oracle安装失败后重新安装时总会遇见千奇百怪的问题,本人深有体会。所以强烈建议大家到这一步创建快照,以便后续安装过程中如果遇到一些奇葩问题,可以恢复过来重新安装,不必从头开始配置。记得创建快照!创建快照!!!创建快照!!!!!!

2. 图形化界面安装ORACLE

2.1 Xstart进入图形化安装界面

启动Xmanager自带Xstart工具:

CentOS7安装Oracle11g一次性通过详细图文教程及安装过程中可能遇到的坑_第4张图片

其中,用户名为前面服务器中创建的oracle用户,密码为oracle用户的密码。

在命令文本框中输入命令:

/usr/bin/xterm -ls -display $DISPLAY

此时可能连接出错:

[16:05:33] Start timer (TIMER_SHUTDOWN, 180).
/usr/bin/xauth:  file /home/oracle/.Xauthority does not exist
bash: /usr/bin/xterm: No such file or directory

安装xterm重新运行即可:

[root@localhost oracle]# yum install -y xterm

2.2 执行安装命令

在Xstart弹出的linux命令台进入到oracle安装包解压目录,执行命令启动安装程序:

[oracle@localhost oracle]$ cd /data/database/database/
[oracle@localhost database]$ ./runInstaller

2.3 ORALCE安装过程

1. 去掉勾,执行下一步

CentOS7安装Oracle11g一次性通过详细图文教程及安装过程中可能遇到的坑_第5张图片

点击yes,进入下一步:

CentOS7安装Oracle11g一次性通过详细图文教程及安装过程中可能遇到的坑_第6张图片

2. 选择仅安装数据库,点击下一步

CentOS7安装Oracle11g一次性通过详细图文教程及安装过程中可能遇到的坑_第7张图片

3.  选择单例安装,点击下一步

CentOS7安装Oracle11g一次性通过详细图文教程及安装过程中可能遇到的坑_第8张图片

4. 添加语言

CentOS7安装Oracle11g一次性通过详细图文教程及安装过程中可能遇到的坑_第9张图片

5、选择企业版

CentOS7安装Oracle11g一次性通过详细图文教程及安装过程中可能遇到的坑_第10张图片

6、确定数据软件的安装路径,自动读取前面oracle环境变量中配置的值

CentOS7安装Oracle11g一次性通过详细图文教程及安装过程中可能遇到的坑_第11张图片

7、默认

CentOS7安装Oracle11g一次性通过详细图文教程及安装过程中可能遇到的坑_第12张图片

8、理论上要创建Database Operation(OSOPER)Group:oper ,个人用就使用dba用户组。

CentOS7安装Oracle11g一次性通过详细图文教程及安装过程中可能遇到的坑_第13张图片

9、安装检查

CentOS7安装Oracle11g一次性通过详细图文教程及安装过程中可能遇到的坑_第14张图片

此处要根据以上问题一个一个解决。

9.1、Swap Size Failed问题解决

问题原因:由于Oracle要求提供2.67G大小的Swap交换区,而实际上只有2G,那么增加Swap交换区。

解决:

9.1.1、使用root用户登录系统,将当前swap空间由2048M增加到 3048M,新增一个2014的分区

[root@localhost database]# dd if=/dev/zero of=/home/swap bs=1024 count=1024000

 9.1.2、将/home/swap设置为Swap交互分区

[root@localhost database]# mkswap /home/swap
Setting up swapspace version 1, size = 1023996 KiB
no label, UUID=49bdd101-42e6-4fec-919c-b18951cf3766

9.1.3、增加并启用交互分区

[root@localhost database]# mkswap /home/swap
Setting up swapspace version 1, size = 1023996 KiB
no label, UUID=49bdd101-42e6-4fec-919c-b18951cf3766
[root@localhost database]# swapon /home/swap
swapon: /home/swap: insecure permissions 0644, 0600 suggested.

9.1.4、设置交互分区开机启动

编辑/etc/fstab文件,在文件末尾添加以下内容:

/dec/hdb5               swap                    swap    defaults        0 0
/home/swap           swap                    swap    defaults        0 0

9.1.5、重新检测swap size已经消失了。

9.2、OS kernel parameter "semmni" 问题解决

这个其实在上述配置内核参数步骤中已经配置过了,这里为什么为0我也很费解,网上查了很久也没找到解决办法,直接忽略吧,ε=(´ο`*)))唉。

9.3、缺少包或者现有包的版本过高,如果在上述步骤中确定执行了导入依赖包,直接忽略即可。安装过程会遇到相关问题,我们具体再分析解决。

10、安装过程中遇见ins_net_client.mk相关问题解决

CentOS7安装Oracle11g一次性通过详细图文教程及安装过程中可能遇到的坑_第15张图片

问题分析:缺少依赖软件包引起的

解决:重新执行依赖导入:

yum install binutils-2.* compat-libstdc++-33* elfutils-libelf-0.* elfutils-libelf-devel-* gcc-4.* gcc-c++-4.* glibc-2.* glibc-common-2.* glibc-devel-2.* glibc-headers-2.* ksh-2* libaio-0.* libaio-devel-0.* libgcc-4.* libstdc++-4.* libstdc++-devel-4.* make-3.* sysstat-7.* unixODBC-2.* unixODBC-devel-2.* pdksh*

然后点击retry按钮即可。为什么我也不知道,明明已经导入过了呀.....

11、安装过程中遇见ins_ctx.mk相关问题解决

CentOS7安装Oracle11g一次性通过详细图文教程及安装过程中可能遇到的坑_第16张图片

问题分析:在网上查找解决办法大部分都是说缺少glibc-static包导致的。

解决:

(1)安装glibc-static-2.*

yum install -y glibc-static-2.*

(2)修改ins_ctx.mk文件

文件地址:/data/oracle/product/11.2.0/db_1/ctx/lib/ins_ctx.mk

将:
ctxhx: $(CTXHXOBJ)
      $(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK)
修改为:
ctxhx: $(CTXHXOBJ)
      -static $(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK) /usr/lib64/stdc.a

之后点击retry按钮,问题解决。

12、安装过程中遇见ins_emagent.mk相关问题解决

CentOS7安装Oracle11g一次性通过详细图文教程及安装过程中可能遇到的坑_第17张图片

问题原因:

解决办法:

(1)修改ins_emagent.mk文件,添加链接libnnz11库的参数

文件地址:/data/oracle/product/11.2.0/db_1/sysman/lib/ins_emagent.mk

将$(MK_EMAGENT_NMECTL)
修改为:
$(MK_EMAGENT_NMECTL) -lnnz11

点击retry,问题解决,然后静静等待安装完成即可。

13、别的问题

其中一次遇见问题:libaio.xxx缺失,提示需要i386版本。但是之后按照本博客的安装教程,重装了几次都没有重现该问题,不过还是把查到的解决方案记录一下吧。

问题原因:oracle11g在配置中把这些依赖包的版本写死了,且为i386,但是centos7根本没这版本

解决方案:

在解压后的安装包根路径找到/stage/cvu/cvu_prereq.xml文件,直接把该文件中所有的i386字符串改为i686即可解决问题。

3、创建oracle监听

3.1 在Xstart弹出的linux命令台执行netca命令,弹出监听配置窗口

CentOS7安装Oracle11g一次性通过详细图文教程及安装过程中可能遇到的坑_第18张图片

 

3.2 点击next

CentOS7安装Oracle11g一次性通过详细图文教程及安装过程中可能遇到的坑_第19张图片

3.3 继续next

CentOS7安装Oracle11g一次性通过详细图文教程及安装过程中可能遇到的坑_第20张图片

3.4 还是next

CentOS7安装Oracle11g一次性通过详细图文教程及安装过程中可能遇到的坑_第21张图片

3.5 next...-_-||

CentOS7安装Oracle11g一次性通过详细图文教程及安装过程中可能遇到的坑_第22张图片

3.6 next ...

CentOS7安装Oracle11g一次性通过详细图文教程及安装过程中可能遇到的坑_第23张图片

3.7 然后点击finish。至此oracle监听配置完了......

CentOS7安装Oracle11g一次性通过详细图文教程及安装过程中可能遇到的坑_第24张图片

4、创建oracle数据库实例orcl

4.1 在Xstart弹出的linux命令台执行dbca命令,弹出实例配置窗口

CentOS7安装Oracle11g一次性通过详细图文教程及安装过程中可能遇到的坑_第25张图片

4.2 使用默认配置,直到配置数据库实例的第三步,输入实例名:

CentOS7安装Oracle11g一次性通过详细图文教程及安装过程中可能遇到的坑_第26张图片

4.3 使用默认配置,直到第五步,配置统一密码:

CentOS7安装Oracle11g一次性通过详细图文教程及安装过程中可能遇到的坑_第27张图片

4.4 使用默认配置,直到配置完成,点击finish,开始创建数据库实例。

4.5 PS:注意数据库编码,忘了截图了

5、设置数据库开机启动

执行dbstart命令:

[oracle@localhost root]$ dbstart
ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener
Usage: /data/oracle/product/11.2.0/db_1/bin/dbstart ORACLE_HOME
cat: /etc/oratab: No such file or directory
cat: /etc/oratab: No such file or directory
cat: /etc/oratab: No such file or directory
cat: /etc/oratab: No such file or directory

错误原因:dbstart和dbshut脚本文件中ORACLE_HOME_LISTNER的设置有问题。

解决:

修改文件dbstart和sbshut文件,文件路径分别为$ORACLE_HOME/bin/dbstart、$ORACLE_HOME/bin/dbshut

将
ORACLE_HOME_LISTNER=$1
修改为:
ORACLE_HOME_LISTNER=$ORACLE_HOME

修改后保存,问题解决。

设置linux启动自动启动oracle监听和实例,修改/etc/oratab文件:

找到:   orcl:/data/oracle/product/11.2.0/db_1:N   
修改为: orcl:/data/oracle/product/11.2.0/db_1:Y

配置格式与路径有关,公式为:$ORACLE_SID:$ORACLE_HOME:,说明:第一个区域的值是sid,第二个区域的值是数据库主目录,第三个区域的值Y或N指定你是否想要dbstart和dbshut脚本启动并关闭数据库。

有的时候可能在etc下没有oratab文件,解决方法是使用root用户在oracle的安装目录 $ORALCE_HOME 下执行 root.sh。

[root@localhost ~]# cd $ORACLE_HOME 
[root@localhost db_1]# ./root.sh 
Running Oracle 11g root.sh script...

The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /data/oracle/product/11.2.0/db_1

Enter the full pathname of the local bin directory: [/usr/local/bin]: 

点击回车:

   Copying dbhome to /usr/local/bin ...
   Copying oraenv to /usr/local/bin ...
   Copying coraenv to /usr/local/bin ...


Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.
Finished product-specific root actions.
/data/oracle/product/11.2.0/db_1/rdbms/install/rootadd_rdbms.sh: line 80: [: 6815744#设置最大打开文件数: integer expression expected
/data/oracle/product/11.2.0/db_1/rdbms/install/rootadd_rdbms.sh: line 91: [: 6815744#设置最大打开文件数: integer expression expected

就会在/etc下生成oratab文件。重复上述修改/etc/oratab文件即可。如果文件中没有orcl相关内容,则改修改为添加。

把lsnrctl start和dbstart添加到rc.local文件中:

[root@localhost db_1]# vi /etc/rc.d/rc.local

将以下内容添加到文件中:

su - oracle -lc "/data/oracle/product/11.2.0/db_1/bin/lsnrctl start"
su - oracle -lc "/data/oracle/product/11.2.0/db_1/bin/dbstart"

CentOs7中/etc/rc.d/rc.local不会开机执行,需添加执行权限。

查看rc.loacl的权限:

[root@localhost etc]# ll /etc/rc.d/rc.local

添加rc.local执行权限:

[root@localhost etc]# chmod +x /etc/rc.d/rc.local

重启系统,验证自启动是否成功。

查看监听是否自启动成功:

[oracle@localhost root]$ lsnrctl status LISTENER

有时会提示找不到lsnrctl 命令,重新执行生效配置文件即可,为什么一开始不生效我也不知道:

[oracle@localhost root]$ source /home/oracle/.bash_profile 

查看oracle启动状态:

[oracle@localhost root]ps -ef | grep oracle

 

6、启动和关闭oracle

[oracle@localhost root]# dbstart                   #启动
[oracle@localhost root]# dbshut                    #停止

 

你可能感兴趣的:(CentOS7安装Oracle11g一次性通过详细图文教程及安装过程中可能遇到的坑)