ITPub博客

首页 > 数据库 > Oracle > 【监听】一些问答和故障解释

【监听】一些问答和故障解释

原创 Oracle 作者:lusklusklusk 时间:2015-11-26 10:35:08 0 删除 编辑
一些问答

参数service_names有值,默认静态监听配置了GLOBAL_DBNAME其他值

则lsnrctl status出现两个service值,分别是参数service_names值和GLOBAL_DBNAME值

 

参数service_names有值,静态监听配置了listener2中GLOBAL_DBNAME其他值

则lsnrctl status中的service值为参数的service_names

lsnrctl status listener2的service值为GLOBAL_DBNAME的对应值

 

参数文件设置service_names为1,global_names为FALSE,listener.ora设置GLOBAL_DBNAME为3,lsnrctl status看servie是多少

1和3

 

参数文件设置service_names为1,listener.ora设置service_name为3,lsnrctl start正常吗

错误,listener.ora不会出现service_name,只有GLOBAL_DBNAME和SID_NAME

 

动态注册时如果两个参数值service_names和db_name不一致,lsnrctl start后service的值使用哪个?

回答:两个都有用,且都是ready状态,见下面的实验现象

db_name是orcl

db_domain是localdomain

service_names是orcl.localdomain

lsnrctl status显示的是orcl.localdomai

 

db_name是orcl

db_domain是localdomain

service_names是TDB

lsnrctl status显示的是TDB.localdomain和orcl.localdomain

 

db_name是orcl

db_domain为空

service_names是TDB

lsnrctl status显示的是TDB和orcl

 

 

如果db_unique_name=master、Db_name=testdb、Instance_name=testdb

参数文件内没有设置service_names和db_domain

则lsnrctl status中的service 值= master

 

如果db_unique_name=slave、Db_name=testdb、Instance_name=testdb

参数文件内没有设置service_names和db_domain

则lsnrctl status中的service 值= slave


如果Db_name=testdb、 Instance_name=testdb

参数文件内没有设置db_unique_name和service_names和db_domain

则lsnrctl status中的service 值= testdb,因为db_unique_name此时默认为testdb







故障解释

当lsnrctl status很久都没有反应或很慢的时候,应该考虑注释/et/resolv.conf中配置了


一个小小的实验的尴尬,以为OS的hostname是localhost,因为显示结果是[oracle@localhost ~]$
listener.ora中HOST = 10.98.0.122,/etc/hosts中信息为10.98.0.122  localhost,发现没有动态监听,但是当修改hostname为db1后,/etc/hosts中信息修改为10.98.0.122  db1,有动态监听,一开始还以为是计算机名为localhost只能注册到127.0.0.1上,后来发现OS的hostname压根就是localhost.localdomain,/etc/hosts中信息为10.98.0.122  localhost.localdomain后有动态监听了

[oracle@localhost ~]$ hostname

localhost.localdomain

 

sqlplus/ as sysdba startup后lsnrctl status发现没有动态注册

发现默认监听配置listener.ora中的host=服务器名称

查看ifconfig发现ip是192.168.189.128

而/etc/hosts中服务器名称对应的ip是192.168.182.128

至此找到原因,把/etc/hosts中182改为189即可

说明:动态注册是把数据库信息当作服务注册到监听中的host和port中,如果host中配置的信息为ip,但是实际服务器上不存在这个ip则无法动态注册,如果host中配置的是服务器名称,而服务器名称不存在或服务器名称在/etc/hosts中对应的ip不存在或与实际ip不一致则无法动态注册

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30126024/viewspace-1846984/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Welcome to Lukes DB HOME。 Oracle OCM、Mysql OCP, 10年DBA工作经验,博客仅记录自己的一个学习过程,不代表完全准确,如有需要,欢迎转载。

注册时间:2015-02-02

  • 博文量
    348
  • 访问量
    1174924