前言
当前版本为了方便快速安装,主要提供给已经安装过oracle的用户,而且工作中要经常安装oracle的人。如果首次安装oracle,建议查看分步讲解的教程。
《2021年强迫证福音CentOS7零警告安装Oracle11g》
视频教程
CentOS7安装Oracle11g超简单
准备工作
兵马未动,粮草先行。在安装之前,我们要做一些简单的准备工作,大致如下:
- 创建oracle用户和组。
- 搭建图形化的操作环境:VNC远程。
- 防火墙放行VNC端口5901和Oracle默认端口1521。
- 安装oracle安装程序依赖程序包。
- 安装中文字体解决中文乱码问题。
- 单独安装pdksh-5.2.14
为了提升安装oracle体验,我把以上操作整理成脚本供大家使用。
下载后上传到CentOS 并解压。
root 执行以下命令
cd CentOS7Oracle11gInstallHelper
chmod +x helper.sh
./helper.sh
自动完成依赖软件的安装与配置。
创建用户&开启VNC服务
为了安全起见,不建议使用root做为vnc用户。单独创建一个用户比较安全。
既然安装oracle,这里用户名我使用 oracle。
root执行以下命令,直接整体复制粘贴到终端就行(不用一行一行复制)。
#创建database用户组
groupadd database
#创建oracle用户并放入database组中
useradd oracle -g database
#切换到oracle用户
su oracle
#首次运行,生成~/.vnc/xstartup等配置文件
vncserver :1 -geometry 1024x768
我这里设置的密码是 vnc@2021
oracle用户执行以下命令,直接整体复制粘贴到终端就行(不用一行一行复制)。
#配置VNC默认启动openbox
echo "openbox-session &" > ~/.vnc/xstartup
# 停止服务
vncserver -kill :1
#重新开启vnc服务
vncserver :1 -geometry 1024x768
客户端连接VNC实现远程控制
我用的是:VNC Viewer点击下载
172.16.184.5:5901
然后输入上面设置的连接密码,比如:我设置的密码是 vnc@2021
上传并解压安装包
上传安装包到 CentOS7服务器。我上传到 /home/oracle/
目录了。
上传以后,文件路径和名称如下:
[oracle@localhost ~]$ pwd
/home/oracle
[oracle@localhost ~]$ ls
p13390677_112040_Linux-x86-64_1of7.zip p13390677_112040_Linux-x86-64_2of7.zip
只需要*1of7.zip
,*2of7.zip
两个压缩包即可。
如果没有unzip工具,安装unzip用于文件解压root执行以下面
yum install unzip
oracle用户登录vnc,执行下面命令,解压安装包
#解压第1个zip
unzip p13390677_112040_Linux-x86-64_1of7.zip
#解压第2个zip
unzip p13390677_112040_Linux-x86-64_2of7.zip
解压出 database,已被安装使用。
文件如下:
[oracle@localhost ~]$ ls
database p13390677_112040_Linux-x86-64_1of7.zip p13390677_112040_Linux-x86-64_2of7.zip
前期准备工作已经完毕!
安装oracle实战
准备工作已经结束了,接下来的安装工作就跟在windows下安装oracle差不多了。先总结一下,基本就是根据界面提示就可以一路“下一步(N)
”就可以完成了。
需要稍微注意的就是:
- 桌面类与服务器类的选择
- 超级管理员密码的设置
- 先决条件检查
其它的根据自己的需要,或者一路“下一步(N)
”就可以完成了。为了一些朋友更直观的观看,我把每一步都截图了,可以跳着看。
oracle用户登录vnc远程桌面。
进入~/database/
目录。
#进入安装目录
cd ~/database/
#运行安装程序
./runInstaller
配置安全更新
根据需要设置,我这里就不设置了。
下载软件更新
根据个人需要选择,我这里选择 跳过软件更新(S)
。
网络安装选项
选择“创建和配置数据库(C)
”
桌面类 or 服务器类
描述中已经说的很清楚了,根据自己需要选择。这里我选择的是服务器类(S)
。
安装类型
我选默认的,单实例数据库安装(S)
根据实际需要选择。
典型安装
默认典型安装(T)
即可。
典型安装配置
主要设置一下密码,其他默认即可。这里密码要在大写字母+小写字母+数字组合。比如:我设置的是Database123
。
创建产品清单
默认即可。
执行先决条件检查
这一步要稍花一些时间处理。每个人的显示可能略有不同。比如:物理内存的检测,我这个1G内存就会提示小于预期。
处理方法:
- 根据提示信息做处理即可,比如:内存小了,加大内存啊。
- 执行
修补并再次检查(F)
可以自动修复 - 以上都解决不了,百度一下你就知道。基本都是有解决办法的。
没解决之前我的显示如下:
执行修补并再次检查(F)
方法上面描述的很清楚。
root权限执行:
/tmp/CVU_11.2.0.4.0_oracle/runfixup.sh
执行完后,点击上面对话框中的确定(O)
这里发现大部分都修复了。如下:
剩下的警告尽量解决,如果自己知道影响不大直接点右上角 ☐全部忽略
即可。
比如:我的虚拟机内存,比预期值差30MB左右,影响不大直接忽略也可以。
解决方法也很简单,加大内存即可。即可写教程了,就追求完美吧,我把虚拟机内存加大一些。
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倍以上就好了。也可以根据安装程序的提示来。
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文件就行了。
所有警告消失了
经过我们的不断努力,所有警告都消失了。有一些警告虽然没影响什么,有了总让人不舒服。没有⚠️真是太舒服了。
概要
这里显示了安装配置的概要部分,检查一下是否正确。没问题就开始安装吧!
安装产品
上面折腾了这么久终于迎来了真正的安装操作了。
进度70% ins_emagent.mk错误弹框
它来了,它来了,我等待好久了。
编辑:
/home/oracle/app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk
约176行,可以搜索$(MK_EMAGENT_NMECTL)
关键字快速找到。
修改后如下:
#===========================
# emdctl
#===========================
$(SYSMANBIN)emdctl:
$(MK_EMAGENT_NMECTL) -lnnz11
#===========================
# nmocat
#===========================
修改完成后,点击重试(R)
复制数据库文件
上面的问题解决后,安装一会儿就会出现如下的界面。耐心等待即可。
数据库创建完成
经过一段时间的等待,终于弹出如下界面。
执行配置脚本
根据上图提示,root 执行上面两个脚本就可以了。
执行结果如下:
[root@localhost ~]# /home/oracle/app/oraInventory/orainstRoot.sh
更改权限/home/oracle/app/oraInventory.
添加组的读取和写入权限。
删除全局的读取, 写入和执行权限。
更改组名/home/oracle/app/oraInventory 到 database.
脚本的执行已完成。
[root@localhost ~]# /home/oracle/app/oraInventory/orainstRoot.sh
更改权限/home/oracle/app/oraInventory.
添加组的读取和写入权限。
删除全局的读取, 写入和执行权限。
更改组名/home/oracle/app/oraInventory 到 database.
脚本的执行已完成。
[root@localhost ~]# /home/oracle/app/oracle/product/11.2.0/dbhome_1/root.sh
Performing root user operation for Oracle 11g
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /home/oracle/app/oracle/product/11.2.0/dbhome_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 script.
Now product-specific root actions will be performed.
Finished product-specific root actions.
[root@localhost ~]#
执行完成这两个脚本,点击确定
Oracle Database 的安装已成功
经过我们的努力,终于走到了这一步。
Oracle Database 的安装已成功。
点击关闭
即可。
防火墙放行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)
)
)
总结
CentOS7安装Oracle 11g不难,遇到问题都能百度解决。就是对比windows下安装有些麻烦。安装中遇到的小问题大多因为oracle 11g年岁己高导致的。我猜测在新版的系统中安装新版的Oracle 可能会更简单。甚至可能像windows中那样简单吧!或者使用 Oracle 自己的linux系统安装起来会不会更容易呢?等我以后有空了,可以测试一下。
参考文档
《2021年CentOS7安装Oracle11g全记录》
《在CentOS 7上添加Swap交换空间》
《Error in invoking target ‘install’ of makefile ‘…/dbhome_1/ctx/lib/ins_ctx.mk’ …》
《记一次oracle安装错误:INFO: //usr/lib64/libstdc++.so.5: undefined reference to `memcpy@GLIBC_2.14’》
《Linux/Centos 安装oracle报错“调用makefile '/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk的目标” 解决》
《在CenOS 上安装oracle 11g R2的时候提示:pdksh包没有安装》