[20170705]lsnrctl status LISTENER_SCAN1

[20170705]lsnrctl status LISTENER_SCAN1.txt

--//前几天在解决问题时遇到的问题,现在分析看看.当时没注意操作用户名,选择错误的用户执行(oracle用户执行).

1.环境:
--//rac
SYS@dbcn2> @ &r/ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

--//以oracle用户执行:
$ lsnrctl status LISTENER_SCAN1
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 05-JUL-2017 10:26:47
Copyright (c) 1991, 2013, Oracle.  All rights reserved.
TNS-01101: Could not find service name LISTENER_SCAN1

--//实际上使用grid用户执行就ok了.使用strace做一次跟踪看看.

$ strace -f -o /tmp/a.txt lsnrctl status LISTENER_SCAN1

$ grep listener.ora /tmp/a.txt
90212 access("/etc/listener.ora", F_OK) = -1 ENOENT (No such file or directory)
90212 access("/u01/app/oracle/product/11.2.0.4/dbhome_1/network/admin/listener.ora", F_OK) = -1 ENOENT (No such file or directory)

--//可以发现这个文件不存在.不要在正式的数据库做这样的操作,这里仅仅是测试.
# cp /u01/app/11.2.0.4/grid/network/admin/listener.ora /u01/app/oracle/product/11.2.0.4/dbhome_1/network/admin/

--//再次执行就ok了.
$ lsnrctl status LISTENER_SCAN1
--//删除文件/u01/app/oracle/product/11.2.0.4/dbhome_1/network/admin/listener.ora

2.疑问:
--//为什么在oracle下单独执行lsnrctl status 没有问题呢?
--//实际上oracle 缺省默认的建立名字就是LISTENER.

$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 05-JUL-2017 10:37:27
Copyright (c) 1991, 2013, Oracle.  All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date                29-JUN-2017 19:23:54
Uptime                    5 days 15 hr. 13 min. 33 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/11.2.0.4/grid/network/admin/listener.ora
Listener Log File         /u01/app/11.2.0.4/grid/network/log/listener.log
....

--//让我感到奇怪的是,为什么现在能找到参数文件正确的参数文件/u01/app/11.2.0.4/grid/network/admin/listener.ora呢.

3.再次跟踪看看:
$ strace -f -o /tmp/a2.txt lsnrctl status

$ grep listener.ora /tmp/a2.txt
115234 access("/etc/listener.ora", F_OK) = -1 ENOENT (No such file or directory)
115234 access("/u01/app/oracle/product/11.2.0.4/dbhome_1/network/admin/listener.ora", F_OK) = -1 ENOENT (No such file or directory)
--//也是没有找到监听.

115234 access("/var/tmp/.oracle/s#48978.2", F_OK) = 0
115234 connect(6, {sa_family=AF_FILE, path="/var/tmp/.oracle/s#48978.2"...}, 110) = 0
115234 fcntl(6, F_SETFD, FD_CLOEXEC)    = 0

--//进程会读取/var/tmp/.oracle/s#48978.2.
# ls -l /var/tmp/.oracle/s#48978.2
srwxrwxrwx 1 grid oinstall 0 2017-06-29 19:23:54 /var/tmp/.oracle/s#48978.2
--//socket文件.里面的数值对于进程号.

# lsof | grep  /var/tmp/.oracle/s#48978.2
tnslsnr    48978   grid   10u     unix 0xffff881738bfe180       0t0 1991767425 /var/tmp/.oracle/s#48978.2

# ps -elf | egrep "48978|PID"
F S UID         PID   PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
0 S root       1936  87074  0  80   0 - 15299 pipe_w 10:50 pts/1    00:00:00 egrep 48978|PID
0 S grid      48978      1  0  80   0 - 38621 poll_s Jun29 ?        00:36:25 /u01/app/11.2.0.4/grid/bin/tnslsnr LISTENER -inherit

--//正是进程/u01/app/11.2.0.4/grid/bin/tnslsnr LISTENER -inherit.监听的别名是LISTENER.
# cat /proc/48978/environ | tr '\0' '\n'| grep -i admin
TNS_ADMIN=/u01/app/11.2.0.4/grid/network/admin/

--//所以oracle用户可以正常执行lsnrctl status .

4.补充说明:
--//实际上跟踪查看前面的/tmp/a.txt文件,只要对应的tnsnames.ora存在这个名字,一样ok了.

$ grep tnsnames.ora /tmp/a.txt
90212 access("/home/oracle/.tnsnames.ora", F_OK) = -1 ENOENT (No such file or directory)
90212 access("/etc/tnsnames.ora", F_OK) = -1 ENOENT (No such file or directory)
90212 access("/u01/app/oracle/product/11.2.0.4/dbhome_1/network/admin/tnsnames.ora", F_OK) = 0
90212 stat("/u01/app/oracle/product/11.2.0.4/dbhome_1/network/admin/tnsnames.ora", {st_mode=S_IFREG|0640, st_size=6403, ...}) = 0
90212 open("/u01/app/oracle/product/11.2.0.4/dbhome_1/network/admin/tnsnames.ora", O_RDONLY) = 5
90212 read(5, "# tnsnames.ora Network Configura"..., 4096) = 4096

--//在/u01/app/oracle/product/11.2.0.4/dbhome_1/network/admin目录的tnsnames.ora文件中加入如下:
LISTENER_SCAN1=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1))))

$ lsnrctl status LISTENER_SCAN1
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 05-JUL-2017 11:09:36
Copyright (c) 1991, 2013, Oracle.  All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER_SCAN1
Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date                30-JUN-2017 12:01:44
Uptime                    4 days 23 hr. 7 min. 51 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/11.2.0.4/grid/network/admin/listener.ora
Listener Log File         /u01/app/11.2.0.4/grid/network/log/listener_scan1.log
...

--//收尾:
--//仅仅作为一次学习与了解这方面内容,还原现场.
--//正常作为管理rac数据库系统还是应该选择grid用户来执行这些命令.

时间: 2024-08-25 05:59:19

[20170705]lsnrctl status LISTENER_SCAN1的相关文章

oracle数据库修改11.2 RAC 的 SCAN IP的例子

在某些情况下,由于是C/S架构,从以前的单机系统迁移到现在11.2的rac中,如果修改客户端ip地址工作量太大,而且也不现实,一般建议直接修改scan ip地址和以前一样,从而实现业务直接访问scan ip实现应用不用一个个单独配置.这里通过简单演示,实现修改scan ip的过程(网段不变),主要是把scan名字为scan-xff的ip地址从192.168.137.245修改为192.168.137.248 查看当前scan ip信息 [root-www.111cn.net@xff1 ~]# p

oracle中11.2中手工kill所有的CRS进程而不导致主机重启方法

我们都知道,在RAC环境中,如果kill ocssd.bin进程,会引起主机重启. 但是有时候系统已经异常了了,且CRS不能正常关闭,而主机可能是几年没重启的老系统,没人敢重启,现在怎么办? 我们只能尝试手工kill进程的方式,然后手工修复CRS(注意,在10.2 RAC中,只有3个d.bin进程). 测试环境:操作系统是OEL 6.6 [root@lunar1 ~]# cat /etc/oracle-release Oracle Linux Server release 6.6 [root@l

What is SCAN in Oracle 11g R2 RAC

What is SCAN in Oracle 11g R2 RAC Single client access name (SCAN) is meant to facilitate single name for all Oracle clients to connect to the cluster database, irrespective of number of nodes and node location. Until now, we have to keep adding mult

RAC8——scan ip的理解

SCAN概念 先介绍一下什么叫SCAN,SCAN(Single Client Access Name)是Oracle从11g R2开始推出的,客户端可以通过SCAN特性负载均衡地连接到RAC数据库.SCAN提供一个域名来访问RAC,域名可以解析1个到3个(注意,最多3个)SCAN IP,我们可以通过DNS或者GNS来解析实现.其中DNS大家都很熟悉,这里不多说.GNS(Grid Naming Service)则是Oracle 11g R2的新功能,可以通过DHCP服务为节点和SCAN分配VIP和

Oracle 11g R2 RAC高可用连接特性 – SCAN详解2

SCAN概念 先介绍一下什么叫SCAN,SCAN(Single Client Access Name)是Oracle从11g R2开始推出的,客户端可以通过SCAN特性负载均衡地连接到RAC数据库.SCAN提供一个域名来访问RAC,域名可以解析1个到3个(注意,最多3个)SCAN IP,我们可以通过DNS或者GNS来解析实现.其中DNS大家都很熟悉,这里不多说.GNS(Grid Naming Service)则是Oracle 11g R2的新功能,可以通过DHCP服务为节点和SCAN分配VIP和

Oracle 11g R2 RAC高可用连接特性 – SCAN详解1

昨天帮朋友解决11g RAC SCAN问题,当时为这朋友简单解答了一些SCAN特性相关的问题,但我知道这仅仅是一小部分. Oracle从11g开始推出SCAN特性可不是我解答那样简单的,SCAN特性在Oracle RAC高可用连接里占据着非常重要的地位,也是以后的重点推进方向. 昨天处理完问题比较晚自己又比较累,所以没有整理出SCAN特性相关资料,今天就抽出点时间把SCAN高可用连接特性介绍出去. 说在前头:文章中核心内容来自官方,当然我也参考了部分前辈们整理的资料,再加以自己的理解和测试整理出

rac11g错误:远程连接报错:ORA-12545: 因目标主机或对象不存在, 连接失败

描述: 刚搭建起来的rac环境,通过监听连接:sqlplus system/oracle@11grac 发现报了如下错误: ORA-12545: 因目标主机或对象不存在, 连接失败 查看两个节点的tnsnames.ora 信息如下: 11grac =  (DESCRIPTION =    (ADDRESS = (PROTOCOL = TCP)(HOST = rac-scan)(PORT = 1521))    (CONNECT_DATA =      (SERVER = DEDICATED) 

Oracle11gR2 RAC 使用scan IP无法连接(ORA-12545)

Oracle11GR2 RAC使用scan IP无法连接到数据库,报错 ORA-12545: 因目标主机或对象不存在, 连接失败 现象: 在windows客户端sqlplus工具使用scan的IP无法连接,报错如下: C:Windowssystem32> sqlplus song/123456@10.10.23.3:11521/orcl SQL*Plus: Release 11.2.0.1.0 Production on Thu May 17 12:35:28 2012 Copyright (c

[20170706]ssh diff 问题.txt

[20170706]ssh diff 问题.txt --//昨天写的diff 比较执行结果的不同,链接http://blog.itpub.net/267265/viewspace-2141638/ --//如果对比不同机器呢?自然使用ssh. 但是我测试遇到一个问题. --//通过例子说明 $  ssh grid@192.168.xx.xxx "lsnrctl status LISTENER_SCAN1" bash: lsnrctl: command not found $  ssh