微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

侦听器不支持任何服务 - oracle linux 7

如何解决侦听器不支持任何服务 - oracle linux 7

我在 linux oracle 7.9 上运行两个 12c R2 数据库 我已经安装了第一个数据库 (CDB) 和一个监听器,它们都运行良好。然后,我在同一系统上安装了另一个 12c R2 数据库 (CDB2)。

这些是我的实例:

CDB
CDB2

问题是,如果我只想启动第二个数据库 (CDB2),然后启动侦听器,则在运行 lsnrctl status LISTENER 时它会显示The listener supports no services

如果我在此之后启动第一个数据库 (CDB),侦听器就会说它支持这两种服务(CDB 和 CDB2)。

所以,如果我也启动 CDB,它只支持 CDB2。如果我只启动CDB2,它不支持

但是,在我启动 CDB 并且侦听器开始支持这两种服务之后,如果我关闭 CDB,侦听器仍然支持 CDB2。

总结一下: 如果我启动 CDB2 然后启动侦听器,则侦听器不支持任何服务。如果我之后启动 CDB,则监听器支持两个数据库。如果我在之后关闭 CDB,则侦听器仅支持 CDB2,这正是我首先想要的。

第一步:

[oracle@oel7 ~]$ ps -ef | grep pmon
oracle    4350  2463  0 20:56 pts/0    00:00:00 grep --color=auto pmon
[oracle@oel7 ~]$ ps -ef | grep tns
root        37     2  0 20:37 ?        00:00:00 [netns]
oracle    4458  2463  0 20:57 pts/0    00:00:00 grep --color=auto tns
[oracle@oel7 ~]$

启动 CDB2 和监听器:

[oracle@oel7 ~]$ ps -ef | grep pmon
oracle    2547     1  0 20:41 ?        00:00:00 ora_pmon_CDB2
oracle    4498  2463  0 20:58 pts/0    00:00:00 grep --color=auto pmon
[oracle@oel7 ~]$
[oracle@oel7 ~]$ ps -ef | grep tns
root        37     2  0 20:37 ?        00:00:00 [netns]
oracle    4537     1  0 20:58 ?        00:00:00 /u01/app/oracle/product/12.2.0/dbhome_1/bin/tnslsnr LISTENER -inherit
oracle    4563  2463  0 20:59 pts/0    00:00:00 grep --color=auto tns
[oracle@oel7 ~]$

STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start Date                21-JAN-2021 20:42:01
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/               listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/oel7/listener/alert/log.x               ml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oel7.localdomain)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
The listener supports no services
The command completed successfully

启动 CDB 后:

[oracle@oel7 dbhome_1]$ ps -ef | grep pmon
oracle    2351     1  0 20:41 ?        00:00:00 ora_pmon_CDB
oracle    2547     1  0 20:41 ?        00:00:00 ora_pmon_CDB2
oracle    4814  2463  0 21:02 pts/0    00:00:00 grep --color=auto pmon
[oracle@oel7 dbhome_1]$

STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start Date                21-JAN-2021 20:42:01
Uptime                    0 days 0 hr. 0 min. 49 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/               listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/oel7/listener/alert/log.x               ml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oel7.localdomain)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=oel7.localdomain)(PORT=5500))(Secur               ity=(my_wallet_directory=/u01/app/oracle/admin/CDB/xdb_wallet))(Presentation=HTT               P)(Session=RAW))
Services Summary...
Service "CDB.localdomain" has 1 instance(s).
  Instance "CDB",status READY,has 1 handler(s) for this service...
Service "CDB2" has 1 instance(s).
  Instance "CDB2",has 1 handler(s) for this service...
Service "CDB2XDB" has 1 instance(s).
  Instance "CDB2",has 1 handler(s) for this service...
Service "CDBXDB.localdomain" has 1 instance(s).
  Instance "CDB",has 1 handler(s) for this service...
Service "b8c025790af43eafe0536f64a8c04644.localdomain" has 1 instance(s).
  Instance "CDB",has 1 handler(s) for this service...
Service "cdbpdb1.localdomain" has 1 instance(s).
  Instance "CDB",has 1 handler(s) for this service...
The command completed successfully

CDB 关闭后,只有 CDB2 运行:

STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start Date                21-JAN-2021 20:58:52
Uptime                    0 days 0 hr. 4 min. 55 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/oel7/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oel7.localdomain)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "CDB2" has 1 instance(s).
  Instance "CDB2",has 1 handler(s) for this service...
The command completed successfully
[oracle@oel7 dbhome_1]$

而且,即使我停止并重新启动侦听器(只有 CDB2 正在运行 - 关闭 CDB),它也能正常工作:

STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start Date                21-JAN-2021 20:58:52
Uptime                    0 days 0 hr. 4 min. 55 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/oel7/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oel7.localdomain)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "CDB2" has 1 instance(s).
  Instance "CDB2",has 1 handler(s) for this service...
The command completed successfully
[oracle@oel7 dbhome_1]$
 

两个数据库在以下位置具有相同的 Oracle Home:/u01/app/oracle/product/12.2.0/dbhome_1

网络文件

[oracle@oel7 admin]$ cat listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = oel7.localdomain)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

[oracle@oel7 admin]$ cat tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
   
LISTENER_CDB =
  (ADDRESS = (PROTOCOL = TCP)(HOST = oel7.localdomain)(PORT = 1521))
    
CDB2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = oel7.localdomain)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = CDB2)
    )
  )

CDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = oel7.localdomain)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = CDB.localdomain)
    )
  )

有什么问题?为什么监听器从第一次开始就不支持第二个数据库(CDB2),而我还必须启动第一个数据库(CDB)才能支持它们?

谢谢。

解决方法

总的来说,我建议在 listener.ora 中创建第二个侦听器定义 里面有 cdb2 的服务。 这样每个数据库都有自己的侦听器,其中包含自己的服务。 并在 tnsnames.ora 文件中定义您放在 listener.ora 中的那些侦听器名称,以及您尝试在 tnsnames 中定义 LISTENER_CDB 的方式。

然后你分别手动启动每个监听器 比如“lsnrctl start LISTENER_CDB1” 和“lsnrctal 启动 LISTENER_CDB2”

还有“lsnrctl status LISTENER_CDB1”等等。

关于您当前的定义,我认为问题可能在于, 您在 tnsnames.ora 中定义了 LISTENER_CDB,但在 listener.ora 中您只有 LISTENER。

附注 - “PMON 进程每 60 秒唤醒一次并向侦听器提供信息。如果出现任何问题并且您的 PMON 进程失败,则无法定期向侦听器注册信息。在这种情况下,您可以使用以下命令进行“手动服务注册”:

更改系统注册;"

作为故障排除实用程序也可以考虑。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。