Rac grid用户启停监听报错无权限

在自己的虚拟机的做实验,突然发现使用PL/SQL
Developer无法连接到数据库,报错ORA-12514,说是监听没有启动。

[grid@max1 ~]$ lsnrctl stop

先介绍虚拟机一下环境:redhat7.2+GI 12.2.0.1+Oracle
12.2.0.1,为了测试12.2的ASM特性安装了GI。平时监听程序默认是开启启动的。但是今天不知道为什么没有启动。使用crsctl查看资源状态:发现监听的状态确实是OFFLINE状态

LSNRCTL for Linux: Version 11.2.0.3.0 – Production on 04-NOV-2016
00:20:54

[root@rhel7 .oracle]# crsstat--------------------------------------------------------------------------------Name Target State Server State details --------------------------------------------------------------------------------Local Resources--------------------------------------------------------------------------------ora.DATA.dg ONLINE ONLINE rhel7 STABLEora.LISTENER.lsnr ONLINE OFFLINE rhel7 STABLEora.asm ONLINE ONLINE rhel7 Started,STABLEora.ons OFFLINE OFFLINE rhel7 STABLE--------------------------------------------------------------------------------Cluster Resources--------------------------------------------------------------------------------ora.cssd 1 ONLINE ONLINE rhel7 STABLEora.diskmon 1 OFFLINE OFFLINE STABLEora.driver.afd 1 ONLINE ONLINE rhel7 STABLEora.evmd 1 ONLINE ONLINE rhel7 STABLEora.ora12c.db 1 ONLINE ONLINE rhel7 Open,HOME=/u01/app/o racle/product/12.2/d b_home1,STABLE--------------------------------------------------------------------------------

Copyright (c) 1991, 2011, Oracle. All rights reserved.

尝试手动启动监听,依然报错:

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))
TNS-01190: The user is not authorized to execute the requested listener
command

[grid@rhel7 ~]$ srvctl start listenerPRCR-1079 : Failed to start resource ora.LISTENER.lsnrCRS-5016: Process "/u01/app/grid/bin/lsnrctl" spawned by agent "ORAAGENT" for action "start" failed: details at "(:CLSN00010:)" in "/u01/app/12.2/grid/diag/crs/rhel7/crs/trace/ohasd_oraagent_grid.trc"CRS-5016: Process "/u01/app/grid/bin/lsnrctl" spawned by agent "ORAAGENT" for action "start" failed: details at "(:CLSN00010:)" in "/u01/app/12.2/grid/diag/crs/rhel7/crs/trace/ohasd_oraagent_grid.trc"CRS-2674: Start of 'ora.LISTENER.lsnr' on 'rhel7' failed

 

根据提示查看trc文件,看到如下报错:

[root@max1 tmp]# srvctl start listener
PRCR-1079 : Failed to start resource ora.LISTENER.lsnr
CRS-5016: Process “/g01/11g/grid/bin/lsnrctl” spawned by agent
“/g01/11g/grid/bin/oraagent.bin” for action “start” failed: details at
“(:CLSN00010:)” in
“/g01/11g/grid/log/max2/agent/crsd/oraagent_grid/oraagent_grid.log”
CRS-5016: Process “/g01/11g/grid/bin/lsnrctl” spawned by agent
“/g01/11g/grid/bin/oraagent.bin” for action “start” failed: details at
“(:CLSN00010:)” in
“/g01/11g/grid/log/max2/agent/crsd/oraagent_grid/oraagent_grid.log”

LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 15-NOV-2017 20:03:28Copyright (c) 1991, 2016, Oracle. All rights reserved.Starting /u01/app/grid/bin/tnslsnr: please wait...TNSLSNR for Linux: Version 12.2.0.1.0 - ProductionSystem parameter file is /u01/app/grid/network/admin/listener.oraLog messages written to /u01/app/12.2/grid/diag/tnslsnr/rhel7/listener/alert/log.xmlListening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rhel7)(PORT=1521)))Error listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))TNS-12555: TNS:permission denied TNS-12560: TNS:protocol adapter error TNS-00525: Insufficient privilege for operation Linux Error: 1: Operation not permittedListener failed to start. See the error message(s) above...

CRS-2674: Start of ‘ora.LISTENER.lsnr’ on ‘max2’ failed

看到Insufficient privilege for
operation这个字样觉得很纳闷,怎么会权限不足呢,于是尝试用root直接启动监听,依然报错:

 

[root@rhel7 .oracle]# lsnrctl startLSNRCTL for Linux: Version 12.2.0.1.0 - Production on 15-NOV-2017 20:22:30Copyright (c) 1991, 2016, Oracle. All rights reserved.Starting /u01/app/grid/bin/tnslsnr: please wait...TNS-12546: TNS:permission denied TNS-12560: TNS:protocol adapter error TNS-00516: Permission denied Linux Error: 13: Permission denied

但是过一会lsnrctl status发现监听起来了。

于是各种百度,下面把百度到内容列出来,可能会对看此文的同学有用,但是对我这种情况没有用:主要是说
/var/tmp/.oracle、/tmp/.oracle 这两个目录的权限访问问题。 进入
一看,我的/var/tmp/.oracle权限
没问题,而/tmp/.oracle压根就没有这个文件。

 

于是直接查MOS,看有没有相关的文档,找到两篇文档:

[root@max2 ~]# srvctl start listener -n max2
PRCR-1013 : Failed to start resource ora.LISTENER.lsnr
PRCR-1064 : Failed to start resource ora.LISTENER.lsnr on node max2
CRS-5016: Process “/g01/11g/grid/bin/lsnrctl” spawned by agent
“/g01/11g/grid/bin/oraagent.bin” for action “start” failed: details at
“(:CLSN00010:)” in
“/g01/11g/grid/log/max2/agent/crsd/oraagent_grid/oraagent_grid.log”
CRS-5016: Process “/g01/11g/grid/bin/lsnrctl” spawned by agent
“/g01/11g/grid/bin/oraagent.bin” for action “start” failed: details at
“(:CLSN00010:)” in
“/g01/11g/grid/log/max2/agent/crsd/oraagent_grid/oraagent_grid.log”
CRS-2674: Start of ‘ora.LISTENER.lsnr’ on ‘max2’ failed

Starting the Listener Fails With: TNS-12557 or TNS-12555: TNS:Permission
Denied (文档 ID 343253.1)Listener Fails To Start With IPC Permission
Errors (TNS-12546 TNS-12555 TNS-00516 TNS-00525) (文档 ID 434062.1)

 

对比了文档中列出的问题,跟我的情况也不一相,看到最后发现这样一句话:

[root@max2 ~]# lsnrctl status

  1. If you find that there are no adapters linked or they have errors
    (such as “Permission denied”) then issue a “relink all”

LSNRCTL for Linux: Version 11.2.0.3.0 – Production on 04-NOV-2016
00:49:03

Reference:Doc ID 1467060.1

Copyright (c) 1991, 2011, Oracle. All rights reserved.

于是只有用这种方法来试试了,由于crs使用的是grid
home下的监听命令所以对grid home做relink all操作。可是又出现报错:

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))
TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
TNS-00511: No listener
Linux Error: 111: Connection refused