2021年CentOS7安装Oracle11g全记录

文章目录

  • 环境信息
  • 下载相关
  • 准备工作
    • 创建用户
    • 图形化CentOS7
      • 搭建VNC服务
        • 安装必备软件并配置
        • 防火墙放行VNC端口
        • VNC
      • 连接VNC远程
  • 安装oracle
    • 安装中文字体解决中文乱码问题
    • 解压安装包
    • 修复先决条件检查
      • Swap分区设置(若检查中无此项,可忽略)
      • 解决程序包依赖问题
      • 68%报错
      • 进度70% ins_emagent.mk错误弹框
  • 防火墙放行1521
  • 配置环境变量
  • 日常运维
    • 启动oracle
    • sys用户登录
    • 启动监听
      • PLSQL连接测试
  • 总结
  • 参考文档


在linux安装oracle在实际运维工作中还是经常能用到的。正好最近重装系统,顺便记录一下安装oracle的全过程。

这篇文章是一个探索过程,看起来可能有些乱。我特意整理了一下,欢迎观看。
《2021年强迫证福音CentOS7零警告安装Oracle11g》
https://blog.csdn.net/lxyoucan/article/details/113547596

环境信息

不同的环境可能会有小小的差异,都是大同小异的。防止有影响,下面给出我用的版本信息。

项目 版本
操作系统 CentOS Linux 7 (Core) x86_64
oracle linux.x64_11gR2

我是在macOS Big Sur11.1中使用VMware Fusion 12.1.0安装的CentOS7虚拟机。
虚拟机配置如下:
2021年CentOS7安装Oracle11g全记录_第1张图片

下载相关

CentOS7下载地址:
http://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/

2021年CentOS7安装Oracle11g全记录_第2张图片
实际工作中很多时候系统不用我们下载了,客户提供。
如果你也用虚拟机安装的,出现上不了网的问题可以看这里:
《CentOS7 mini (CentOS-7-x86_64-Minimal-2003.iso )虚拟机安装后无法上网的解决办法》

Oracle下载地址:
强烈建议下载 11.2.0.4版本的,oracle版本是官网下载的11.2.0.1有点小坑在里面,我是后来遇到坑换成的 11.2.0.4版本。11.2.0.4普通用户官网下载不到的,网上找找吧。

CentOS7安装11.2.0.1遇到的坑:

  1. 操作系统内核参数semmni 明明设置正确,先决条件检查以然会提示参数不正确
  2. 一些程序包,已经安装过了,先决条件检查以然会提示没有安装
  3. 安装到 68%会报错:makefile '/home/oracle/app/oracle/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk’的目标’install’时出错

出现这个也可以理解,毕竟这个版本已经年代久远,所依赖的程序包都升级了多个版本了。
坑 1,2直接忽略可以解决,3网上也有解决办法。本文下方也有相关链接。这些坑总让人有点不舒服。
好在 11.2.0.4版本中已经没有这些坑了。

准备工作

在windows下安装oracle还是很简单的,在linux安装oracle就要略微麻烦一些。为了跟客户现场环境比较接近,我在电脑上远程这台CentOS7来实现数据库的安装。

创建用户

oracle安装文件不允许使用root用户直接启动,需要为oracle配置一个专门的用户来管理oracle的安装与运维。
2021年CentOS7安装Oracle11g全记录_第3张图片
root执行以下命令,直接整体复制粘贴到终端就行(不用一行一行复制)。

#创建database用户组
groupadd database
#创建oracle用户并放入database组中
useradd oracle -g database
#设置oracle密码
passwd oracle 

我设置的是database@2021

图形化CentOS7

虽然oracle是可以通过命令行的形式安装的,新手第一次安装还是推荐使用图形化的安装,毕竟简单明了。

搭建VNC服务

如果你已经可以直接图形操作,此步可忽略。
我这里使用VNC的方式,VNC不是本文重点。只是用于安装oracle用,本文中我尽量简化操作,跟着我敲命令就行了。图形界面我选的是openbox,因为体积小巧安装oracle完全够用。
如果想详细学习搭建VNC服务,可以看我另一篇文章:
《Centos7安装和配置VNC服务器 - openbox篇》

安装必备软件并配置

root执行以下命令,直接整体复制粘贴到终端就行(不用一行一行复制)。

#图形界面必备`X Window System`
yum -y groupinstall "X Window System"
#安装epel源
yum -y install epel-release
#安装VNC+图形需要的软件
yum -y install tigervnc-server openbox xfce4-terminal tint2 cjkuni-ukai-fonts network-manager-applet

编辑openbox配置文件/etc/xdg/openbox/autostart
因为觉得vi修改麻烦,所以写个脚本,直接整段复制到终端执行就好了。

#自动修改/etc/xdg/openbox/autostart配置文件
echo 'if which dbus-launch >/dev/null && test -z "$DBUS_SESSION_BUS_ADDRESS"; then' > /etc/xdg/openbox/autostart
echo '       eval `dbus-launch --sh-syntax --exit-with-session`' >> /etc/xdg/openbox/autostart
echo 'fi' >> /etc/xdg/openbox/autostart
echo 'tint2 &' >> /etc/xdg/openbox/autostart
echo 'nm-applet  &' >> /etc/xdg/openbox/autostart
echo 'xfce4-terminal &' >> /etc/xdg/openbox/autostart
echo ' ' >> /etc/xdg/openbox/autostart

2021年CentOS7安装Oracle11g全记录_第4张图片

防火墙放行VNC端口

我这里VNC端口是 5901,–add-port=端口号
su root使用root用户执行以下命令:

# 防火墙放行VNC端口
firewall-cmd --add-port=5901/tcp
firewall-cmd --add-port=5901/tcp --permanent

VNC

切换到oracle用户

su oracle

开启一个VNC服务

vncserver :1 -geometry 1024x768
参数 解释
:1 数字1很重要,它觉得了最终的TCP端口号(5901)。算法:5900+1= 5901 ,也就是说如果设置为:2那么TCP就是5902
-geometry 1024x768 指定远程桌面的分辨率,根据自己喜好来就行,默认是1024x768,注意中间的x别写错了

第一次执行命令,根据提示输入密码就行了。
我这里设置的密码是 vnc@2021
2021年CentOS7安装Oracle11g全记录_第5张图片
配置VNC默认启动openbox

#配置VNC默认启动openbox
echo "openbox-session &" > ~/.vnc/xstartup

修改完配置要重启vnc服务

vncserver -kill :1
vncserver :1 -geometry 1024x768

恭喜,到这一步VNC服务就搭建完成了。

连接VNC远程

使用你的VNC客户端连接就行了,会的就略过吧。
我用的是:VNC Viewer点击下载。
在这里插入图片描述
然后输入上面设置的连接密码就可以了。我这里设置的密码是 vnc@2021

如果你连接的时候发现,没有界面,是黑屏的只有一个鼠标,那么可以重启一下VNC服务试试。
切换到oracle用户su oracle
命令:

vncserver -kill :1
vncserver :1 -geometry 1024x768

安装oracle

安装中文字体解决中文乱码问题

最简单的粗暴的方法,临时使用英文环境。

LANG=en_US

中文是世界上最美的文字,必须中文,很简单增加所需字体就行了。操作如下:
下载字体:
https://download.csdn.net/download/lxyoucan/14968070
root执行以下命令:
新建文件夹

mkdir -p /usr/share/fonts/zh_CN/TrueType

zysong.ttf上传到/usr/share/fonts/zh_CN/TrueType目录

chmod 75 /usr/share/fonts/zh_CN/TrueType/zysong.ttf

这样安装oracle就不会中文乱码了。

解压安装包

上传安装包到 CentOS7服务器。我上传到 /home/oracle/目录了。

如果没有unzip,安装unzip用于文件解压root执行以下面

yum install unzip

oracle用户登录vnc,执行下面命令,解压安装包

unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip 

解压出 database
在这里插入图片描述

cd database

运行安装程序

./runInstaller

看到类似下面的安装界面,说明你已经成功一半了。
2021年CentOS7安装Oracle11g全记录_第6张图片
现在有图形界面,有中文了。安装方法基本与windows 下面类似了。放心一路“下一步(N)>”吧,没什么大问题。

我就不一一截图了,截图多反而看着累。我把我觉得重要的说一下。
安装类型:
2021年CentOS7安装Oracle11g全记录_第7张图片
密码设置,这个主要是数据的超级管理员密码,比如常用的sys用户。
2021年CentOS7安装Oracle11g全记录_第8张图片

设置密码Database123

修复先决条件检查

2021年CentOS7安装Oracle11g全记录_第9张图片
点击“修补并再次检查(F)”按钮就可以修补大半。具体方法按弹框中的说明执行即可。
2021年CentOS7安装Oracle11g全记录_第10张图片
我执行结果如下:

[root@localhost ~]# /tmp/CVU_11.2.0.1.0_oracle/runfixup.sh 
Response file being used is :/tmp/CVU_11.2.0.1.0_oracle/fixup.response
Enable file being used is :/tmp/CVU_11.2.0.1.0_oracle/fixup.enable
Log file location: /tmp/CVU_11.2.0.1.0_oracle/orarun.log
Setting Kernel Parameters...
/tmp/CVU_11.2.0.1.0_oracle/orarun.sh: 第 244 行:[: 18446744073692774399: 期待整数表达式
The value for shmmax in response file is not greater than value of shmmax for current session. Hence not changing it.
/tmp/CVU_11.2.0.1.0_oracle/orarun.sh: 第 335 行:[: 18446744073692774399: 期待整数表达式
The value for shmall in response file is not greater than value of shmall for current session. Hence not changing it.
The value for semmni in response file is not greater than value of semmni for current session. Hence not changing it.
kernel.sem = 250 32000 100 128
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576
uid=1001(oracle) gid=1001(database)=1001(database)

就这样就可以轻松干掉大部分的检查了。
2021年CentOS7安装Oracle11g全记录_第11张图片
下面我们来一一解决它即可。

Swap分区设置(若检查中无此项,可忽略)

如果Swap空间不符合要求,oracle 安装文件检查发现swap 空间不足。
大小一般设置为一般为内存的1.5倍。

(root权限)查询当时Swap分区设置情况。

swapon -s

在这里插入图片描述
或者使用free工具来查看内存和Swap情况。

free -m

结果如下单位(MB):

[root@localhost ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1475         439         171          13         865         877
Swap:          2047           0        2047

创建Swap文件
接下来我们将在文件系统上创建swap文件。我们要在根目录/下创建一个名叫swapfile的文件,当然你也可以选择你喜欢的文件名。该文件分配的空间将等于我们需要的swap空间。
一般 内存的 1.5倍以上就好了。也可以根据安装程序的提示来。
2021年CentOS7安装Oracle11g全记录_第12张图片
root执行以下命令,创建swap分区,
在这里插入图片描述

#创建swap文件 bs=2300的设置的值一般为内存的1.5倍以上 
dd if=/dev/zero of=/var/swap bs=2500 count=1000000
#需要更改swap文件的权限,确保只有root才可读
chmod 600 /var/swap
#告知系统将该文件用于swap
mkswap /var/swap
#开始使用该swap
swapon /var/swap
#使Swap文件永久生效,/etc/fstab加入配置
echo "/var/swap   swap    swap    sw  0   0" >> /etc/fstab

如果上面创建后发现,大小创建错误了。如何重置呢?

swapoff -a
rm /var/swap
上面命令就可以删除了,然后重新创建合适的swap文件就行了。

继续修复,再次点击“修补并再次检查(F)”按钮,与上面一次操作相同,发现又能自动修复2条了。
为什么有2条,第二次执行修改脚本才可以,我也是无意中发现的。

2021年CentOS7安装Oracle11g全记录_第13张图片
现在还剩一个操作系统内核参数semmni 这个问题怎么解决呢?

sysctl -p

2021年CentOS7安装Oracle11g全记录_第14张图片
网上搜索了一下,也有网友遇到这个问题的。
比如:这个https://bbs.csdn.net/topics/392059643?page=2

其中有个网友这么说的。
在这里插入图片描述
那我们就暂时忽略吧。
看了很多文章,这个地方可能是安装程序的BUG吧,只要自身设置正确就行了。不用管这个提示了。

补充:实测 11.2.0.4版本不会出现这个问题。

解决程序包依赖问题

yum -y install binutils compat-libcap1  compat-libstdc++-33 compat-libstdc++-33*.i686 elfutils-libelf-devel gcc gcc-c++ glibc*.i686 glibc glibc-devel glibc-devel*.i686 ksh libgcc*.i686 libgcc libstdc++ libstdc++*.i686 libstdc++-devel libstdc++-devel*.i686 libaio libaio*.i686 libaio-devel libaio-devel*.i686 make sysstat unixODBC unixODBC*.i686 unixODBC-devel unixODBC-devel*.i686 libXp

2021年CentOS7安装Oracle11g全记录_第15张图片
2021年CentOS7安装Oracle11g全记录_第16张图片
上面安装完成发现程序包中还是有几条警告。我查了一下,还是提示缺少的包,实际上我们已经安装过了,只是我们安装的版本比要求的版本高。毕竟Oracle 11g是好多年前的产品了,我现在用的CentOS7是最新版本。只要要求的包我们已经安装成功了,右上角点击☐全部忽略。这样我们就能继续安装了。
一路下一步吧。
2021年CentOS7安装Oracle11g全记录_第17张图片
补充:实测 11.2.0.4版本不会出现这个问题。

68%报错

补充:实测 11.2.0.4版本不会出现这个问题。
安装到 68%报错如下:
makefile '/home/oracle/app/oracle/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk’的目标’install’时出错。
2021年CentOS7安装Oracle11g全记录_第18张图片
查看日志,错误如下:
2021年CentOS7安装Oracle11g全记录_第19张图片
如果你安装的版本遇到这个问题,解决办法请参考:《Error in invoking target ‘install’ of makefile ‘…/dbhome_1/ctx/lib/ins_ctx.mk’ …》
https://blog.csdn.net/xch_yang/article/details/104389154

后来网上找了一下还有一个更优雅的解决办法:
在oracle网站查到说是版本对应问题
https://community.oracle.com/thread/3635853
由于是centos 7.3,oracle版本是官网下载的11.2.0.1,这里提示说需要换到11.2.0.3 or higher
最后上传11.2.0.4版本。我决定试试。

然后我按前面的步骤在来了一遍,基本一样我就不重新截图了,果然不报这个错了。下面的截图都是11.2.0.4版本的。

进度70% ins_emagent.mk错误弹框

它来了,它来了,我等待好久了。

2021年CentOS7安装Oracle11g全记录_第20张图片
编辑:
/home/oracle/app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk
约176行,可以搜索$(MK_EMAGENT_NMECTL) 关键字快速找到。
2021年CentOS7安装Oracle11g全记录_第21张图片
修改后如下:

#===========================
#  emdctl
#===========================

$(SYSMANBIN)emdctl:
	$(MK_EMAGENT_NMECTL) -lnnz11

#===========================
#  nmocat
#===========================

修改完成后,点击重试(R)
2021年CentOS7安装Oracle11g全记录_第22张图片
[INS-20802]Oracle Database Configuration Assistant 失败。
安装过程中如果遇到这个错误,可能是因为你的网络不通,或者有问题导致的。我wifi连手机热点就出现这个问题了,我连接有线网络这个问题自动就好了(网络正常后,点击“重试(R)”)。

2021年CentOS7安装Oracle11g全记录_第23张图片
是个警告暂时忽略,实践证明这个警告没有影响,数据库正常使用。我猜测有可能是因为我先安装11.2.0.1删除不彻底导致的。
2021年CentOS7安装Oracle11g全记录_第24张图片
安装完成后,root权限执行一下以上两个脚本。
这样就安装完成了。

防火墙放行1521

默认端口是1521

# 防火墙放行1521oracle端口
firewall-cmd --add-port=1521/tcp
firewall-cmd --add-port=1521/tcp --permanent

配置环境变量

su oracle

切换到oracle用户操作。
编辑配置文件

vi ~/.bash_profile

文件末尾加入以下内容,ORACLE_HOME中换成你实际安装的路径

export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1/
export ORACLE_SID=orcl
export PATH=$PATH:$ORACLE_HOME/bin

使用配置文件立即生效。

source ~/.bash_profile

日常运维

启动oracle

su oracle
sqlplus /nolog
SQL> connect /as sysdba
SQL> startup

sys用户登录

[oracle@localhost ~]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.4.0 Production on Tue Feb 2 02:59:38 2021

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

SQL> connect as sysdba
Enter user-name: sys
Enter password: 
Connected.
SQL> select 1 from dual;

	 1
----------
	 1

SQL> 

没有问题,说明oracle本地连接oracle成功。

启动监听

lsnrctl start

PLSQL连接测试

使用其他机器连接我们刚安装好的oracle进行连接测试。
修改配置文件C:\app\itkey\product\11.2.0\client_1\network\admin\tnsnames.ora(路径根据实际情况来)

CentOS7ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.184.5)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

2021年CentOS7安装Oracle11g全记录_第25张图片

总结

CentOS7安装Oracle 11g不难,遇到问题都能百度解决。就是对比windows下安装有些麻烦。安装中遇到的小问题大多因为oracle 11g年岁己高导致的。我猜测在新版的系统中安装新版的Oracle 可能会更简单。甚至可能像windows中那样简单吧!或者使用 Oracle 自己的linux系统安装起来会不会更容易呢?等我以后有空了,可以测试一下。

参考文档

《在CentOS 7上添加Swap交换空间》
https://blog.csdn.net/zstack_org/article/details/53258588

《Error in invoking target ‘install’ of makefile ‘…/dbhome_1/ctx/lib/ins_ctx.mk’ …》
https://blog.csdn.net/xch_yang/article/details/104389154

《记一次oracle安装错误:INFO: //usr/lib64/libstdc++.so.5: undefined reference to `memcpy@GLIBC_2.14’》
https://www.cnblogs.com/yhq1314/p/10830300.html

《Linux/Centos 安装oracle报错“调用makefile '/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk的目标” 解决》
https://blog.csdn.net/weixin_41078837/article/details/80585287

你可能感兴趣的:(oracle,linux,运维,linux,centos,oracle,11g,安装)