400-780-1667
常见问题 当前位置:首页 >> 常见问题
亲测Linux 7系列 上安装Oracle RAC 遇到的问题和坑
发布时间:2020-07-07 17:30:11| 浏览次数:

如果只能选一个方法去考察DBA的真实能力,没有比让他装一套RAC更加合适了    

由于越来越多的硬件已经开始不支持安装RedHat 6, 我们将会越来越多的遇到在RedHat 7

下安装Oracle RAC,以下是本人的一次安装RAC遇到的问题和坑,希望能带大家少走一些

弯路。

(本次统计不包含在RedHat 6 的旧坑)


1

RedHat 7的自带iso文件不包含compat-libstdc++-33-3.2.3-69.el6.x86_64.rpm

解决方案:需要自行下载或者使用其他的YUM源


2

Redhat 7的图形界面下,安装RAC系统时的图形界面有可能因未知原因无法弹出二级子窗口,导致图形框一直转圈圈,安装日志不再刷新的假死状态。

解决方案:遇到此种只需要将图形界面投到一个正常的主机屏幕上即可



题外话: 该坑具有极强的欺骗性,本人被其坑达半天之久,才由于以往的安装经验突然想到此处应有子窗口弹出。


3

因本身配置的GRID用户下的ORACLE_HOME变量与实际安装的GRID软件的家目录不一致,导致在ASMCA创建磁盘组的时候不能正常显示(提示ASMCA需要依赖一个本地实例之类的错误)本错误不是坑,是本人安装时自己给自己埋得坑。


解决方案:要避免此类问题,建议大家安装好软件之后,在切到grid用户时使用asmcmd命令进行入cmd窗口,此时会验证ORACLE_SID和ORACLE_HOME变量,只要有一个不正确,并会出现连到得时一个idel instance的提示。

4

log follow:

报错的原因是:linux7跟linux7以下在运行和重启进程方面是有较大的差别的,从linux 7开始是使用systemd而不是initd运行进程和重启进程,而我们的root.sh脚本是通过传统安装GRID跑root.sh时报错(该坑是一个必然的常规坑,按照下面的方法去做据可以顺利解决)


在安装grid后跑root.sh时候遇到第一个问题:

ohasd failed to start

Failed to start the Clusterware. Last 20lines of the alert的initd调用运行ohasd进程。

解决方法也是比较简单的,按照如下步骤逐一执行即可:

4.1. 以root用户创建服务文件

touch /usr/lib/systemd/system/ohas.service

chmod 777/usr/lib/systemd/system/ohas.service

4.2. 将以下内容添加到新创建的ohas.service文件中

[root@racnode1 init.d]# vi/usr/lib/systemd/system/ohas.service

[Unit]

Description=Oracle High AvailabilityServices

After=syslog.target

[Service]

ExecStart=/etc/init.d/init.ohasd run>/dev/null 2>&1 Type=simple

Restart=always

[Install]

WantedBy=multi-user.target

4.3. 以root用户运行下面的命令

(也建议在执行root.sh脚本前先完成第一二步,然后开始执行root.sh脚本后,一直刷新/etc/init.d ,直到出现 init.ohasd 文件,

立刻执行这个第三步,这样可以顺利一次完成root.sh脚本的执行)

systemctl daemon-reload

systemctl enable ohas.service

systemctl start ohas.service

4.4. 查看运行状态

systemctl status ohas.service

?.ohas.service - Oracle High AvailabilityServices

  Loaded: loaded (/usr/lib/systemd/system/ohas.service; enabled; vendorpreset: disabled)

  Active: failed (Result: start-limit) since Tue 2018-12-11 15:16:26 CST;13s ago


 Process: 20389 ExecStart=/etc/init.d/init.ohasd run >/dev/null2>&1 Type=simple (code=exited, status=203/EXEC)

 MainPID: 20389 (code=exited, status=203/EXEC)

Dec 11 15:16:25 epsprac2 systemd[1]:ohas.service: main process exited, code=exited, status=203/EXEC

Dec 11 15:16:25 epsprac2 systemd[1]: Unitohas.service entered failed state.

Dec 11 15:16:25 epsprac2 systemd[1]:ohas.service failed.

Dec 11 15:16:26 epsprac2 systemd[1]:ohas.service holdoff time over, scheduling restart.

Dec 11 15:16:26 epsprac2 systemd[1]: startrequest repeated too quickly for ohas.service

Dec 11 15:16:26 epsprac2 systemd[1]: Failedto start Oracle High Availability Services.

Dec 11 15:16:26 epsprac2 systemd[1]: Unitohas.service entered failed state.

Dec 11 15:16:26 epsprac2 systemd[1]:ohas.service failed.

此时状态为失败,原因是现在还没有/etc/init.d/init.ohasd文件。

下面可以重新运行脚本root.sh 不会再报ohasd failed to start错误了。

如果还是报ohasd failed to start错误,可能是root.sh脚本创建了init.ohasd之后,ohas.service没有马上启动,解决方法参考以下:

 /-----建议按照这个方式解决该问题,有效,连第一次报错都可以避免---------------------/

当运行root.sh时,一直刷新/etc/init.d ,直到出现 init.ohasd 文件,马上手动启动ohas.service服务 命令:systemctl startohas.service

 注意:节点二执行root.sh脚本时候也需要完成如上操作

5

安装数据库软件的时候遇到的:(该坑是一个必然的常规坑,按照下面的方法去做据可以顺利解决)

Error in invoking target 'agent nmhs' ofmakefile

 '/u01/app/oracle/product/11.2.0/db_1/sysman/lib/ins_emagent.mk'

如果是没有需要用到emagent的话,这个问题是可以忽略跳过的,一定要解决它的话,参考如下操作:


保留安装过程,另外开启一个终端窗口,将ins_emagent.mk文件中的 $(MK_EMAGENT_NMECTL)更改为$(MK_EMAGENT_NMECTL)-lnnz11,(第一个时字母L的小写,后面两个是数字1)然后在安装过程中点击Retry即可。


6

由于在第一次安装数据库软件时,中途退出了,再次安装Oracle软件时会报在此ORACLE_HOME下已经有了一个数据库软件,根据以前的常识,自然是需要清空/u01/app/oraInventory信息就可以了,但是在这里由于是安装集群数据库,所以要读取安装集群时在这个文件夹里留下来iventory.xml文件读取集群节点信息.

解决方案:要想方法还原该文件,如果确认删除的话无法还原,只能使用

./runInstaller  -silent -ignoreSysPrereqs-updateNodeList 

ORACLE_HOME="/u01/gridsoft/11.2.0"LOCAL_NODE="rac1" 

CLUSTER_NODES="{rac1,rac2}"  CRS=true

命令来生成iventory.xml 该文件。



题外话:由于前面描述的GRID 的ORACLE_HOME变量设置和实际安装的位置不对,导致在更新这个iventory.xml文件时填错了目录,也费了一些时间。


END


 
 
 上一篇:数据库的性能真的只跟DBA有关吗?
 下一篇:想移动数据文件、一篇短文就够了.......