linux7 安装rac 执行root脚本时候报错

运行root.sh脚本的时候报错

报错信息:

[root@rac1 ~]# /u01/app/oraInventory/orainstRoot.sh 
Changing permissions of /u01/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.

Changing groupname of /u01/app/oraInventory to oinstall.
The execution of the script is complete.
[root@zjdb1 ~]# /u01/app/11.2.0/grid/root.sh 
Performing root user operation for Oracle 11g

The following environment variables are set as:
    ORACLE_OWNER= grid
    ORACLE_HOME=  /u01/app/11.2.0/grid

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.
Using configuration parameter file: /u01/app/11.2.0/grid/crs/install/crsconfig_params
Creating trace directory
User ignored Prerequisites during installation
Installing Trace File Analyzer
OLR initialization - successful
  root wallet
  root wallet cert
  root cert export
  peer wallet
  profile reader wallet
  pa wallet
  peer wallet keys
  pa wallet keys
  peer cert request
  pa cert request
  peer cert
  pa cert
  peer root cert TP
  profile reader root cert TP
  pa root cert TP
  peer pa cert TP
  pa peer cert TP
  profile reader pa cert TP
  profile reader peer cert TP
  peer user cert
  pa user cert
Adding Clusterware entries to inittab
ohasd failed to start
Failed to start the Clusterware. Last 20 lines of the alert log follow: 
2015-05-23 23:37:45.460: 
[client(13782)]CRS-2101:The OLR was formatted using version 3.

报错原因:

因为RHEL 7使用systemd而不是initd运行进程和重启进程,而root.sh通过传统的initd运行ohasd进程。

解决方法:

在RHEL 7中ohasd需要被设置为一个服务,在运行脚本root.sh之前。

含义:把集群添加到inittab服务,启动ohasd失败

inittab为linux初始化文件系统时init初始化程序用到的配置文件。这个文件负责设置init初始化程序初始化脚本在哪里;
每个运行级初始化时运行的命令; 开机、关机、重启对应的命令;各运行级登陆时所运行的命令。

但是linux 7使用systemd替代了原来的initd来运行进程,重启进程。

运行root.sh的时候,采用以前的initd来启动ohasd服务,找不到目录,所以启动失败

CentOS 7 使用systemd替换了SysV。Systemd目的是要取代Unix时代以来一直在使用的init系统,兼容SysV和LSB的启动脚本,而且够在进程启动过程中更有效地引导加载服务。

systemd的特性有:

支持并行化任务
同时采用socket式与D-Bus总线式激活服务
按需启动守护进程(daemon)
利用 Linux 的 cgroups 监视进程
支持快照和系统恢复
维护挂载点和自动挂载点
各服务间基于依赖关系进行精密控制

解决方法:

单独在linux 7中为ohasd设置一个服务。

步骤如下
1. 创建服务ohas.service的服务文件并赋予权限
touch /usr/lib/systemd/system/ohas.service

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

2. 往ohas.service服务文件添加启动ohasd的相关信息

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

[Unit]
Description=Oracle High Availability Services
After=syslog.target

[Service]
ExecStart=/etc/init.d/init.ohasd run >/dev/null 2>&1 Type=simple
Restart=always

[Install]
WantedBy=multi-user.target

note:把如上部分的内容添加到文件里面

3. 加载,启动服务

重新加载守护进程

systemctl daemon-reload

设置守护进程自动启动

systemctl enable ohas.service

手工启动ohas服务

systemctl start ohas.service
4. 重新运行root.sh脚本

sh root.sh

报错消失

5:查看ohas服务状态

systemctl status ohas.service

可以看到ohasd已经处于running的状态

上一篇:我是怎样和Linux系统结缘并通过红帽RHCE认证的


下一篇:C# Params的使用