hosts文件引发无法启用监听的怪病!
我在公司部署了一台RHEL5U2_X64的机器,然后部署Oracle 一切顺利但是在 DBCA建库的时候提示了一个EM创建错误当时没有管那么多只是想EM日后可以重建!但是在库启动后,启动监听的时候出问题!运行lsnrctl start 命令 会夯住不动!于是检查系统哪些地方不对并用netmgr配置了监听文件,但是仍然是那个状态。用netstat -antp | grep 1521 一看 发现一条很奇怪的记录
[root@RHTesting /]# netstat -antp | grep 1521
tcp 0 1 10.164.252.68:62556 202.106.100.11:1521 SYN_SENT 28794/ora_pmon_METB
奇怪PMON在哪注册呀?
检查202.106.100.11这个奇怪ip到底哪来的?
cat /etc/hosts 乖乖怎么里边有条记录对应这这台服务器的hostname
202.106.100.11 RHTesting
好奇怪的做法我不知道这么做的意义是什么,只知道是我同事部署的时候写上的!然后把这条语句注释掉
重新启动数据库,重新启动监听,一切又那么的顺利了!
==============引用海鸥的博客===================
缺省情况下,PMON 向TCP/IP 的缺省本地地址- 端口1521- 处的本地监听程序注册服务信息。
使用非缺省监听程序可以强制PMON 向不使用TCP/IP 或端口1521 的服务器上的本地监听程序进行注册,具体方法是按如下所示对初始化参数文件中的LOCAL_LISTENER 参数进行配置:
LOCAL_LISTENER=listener_alias
必须通过tnsnames.ora 等命名方法将listener_alias 解析为监听程序协议地址。以下是tnsnames.ora 中的一个条目示例:
listener_name=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=salesserver)(PORT=1421)))
相关其它内容:
静态监听的listener.ora样列
1. LISTENER =
2. (ADDRESS_LIST =
3. (ADDRESS= (PROTOCOL= TCP)(Host= stcsun02)(Port= 1521)))
4. SID_LIST_LISTENER =
5. (SID_LIST =
6. (SID_DESC =
7. (ORACLE_HOME= /home/oracle)
8. (GLOBAL_DBNAME = ORCL.us.oracle.com)
9. (SID_NAME = ORCL)))
静态监听的listener.ora内容解释
1. 监听程序的名称。缺省名称是LISTENER。
2. ADDRESS_LIST 参数包含一个地址块,监听程序监听其中所列地址处的传入连接。该块中定义的每个地址都代表一种监听程序接收连接的不同方法。
3.TCP 地址表示从网络上的客户机传入的TCP 连接,连接目标是端口1521。这些客户机使用各自的tnsnames.ora 文件中定义的端口连接至该监听程序。监听程序将根据为其定义的SID_LIST 来指定要连接的数据库。请注意,在配置有监听程序的节点上,只要监听程序具有唯一的名称和唯一的端口,则可配置多个监听程序。所配置的每个监听程序都有自己的SID_LIST,但是,一个数据库可以由多个监听程序提供服务。
4. 监听程序可对一台机器上的多个数据库进行监听。这些数据库的SID 在SID_LIST_listener_name 块或参数处定义。
5. 如果定义了多个SID,则需要定义SID_LIST 参数
6. 对于每个定义的SID 来说,必须存在SID_DESC 参数。
7. ORACLE_HOME 标识服务的Oracle 主目录位置。这使监听程序能够确定Oracle 可执行文件的位置。
8. 参数GLOBAL_DBNAME 标识数据库的全局数据库名称,这是由数据库名和数据库域构成的名称。全局数据库名称的格式为database_name.database_domain。例如ORCL.us.oracle.com,其中,数据库名部分ORCL 是对数据库的简称。数据库域部分us.oracle.com 指定数据库所在的数据库域,同时也保证了全局数据库名称唯一。该参数必须嵌在SID_DESC 下并应与初始化参数文件中的SERVICE_NAMES 参数的值匹配。
9. SID_NAME 参数定义监听程序代表其接受连接的SID 的名称