ORA-00130: invalid listener address

今天再重启测试库的时候,发现有这么一个报错信息:

ORA-00130: invalid listener address (ADDRESS=(PROTOCOL=TCP)(HOST=test2)(PORT=1521))


开始怀疑是监听得设置有问题,打开监听文件,内容如下:

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.107)(PORT = 1521))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
)
)

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /opt/oracle/product/9.2.0)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = sc2test)
(ORACLE_HOME = /opt/oracle/product/9.2.0)
(SID_NAME = sc2test)
)
)

奇怪的是在监听中并没有发现HOST=test2的信息,再查看/etc/hosts

oracle@test2 admin]$ more /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
192.168.0.201 test

也没有发现test2的信息

最后检查hostname
[oracle@test2 admin]$ hostname
test2

终于发现test2的踪迹了,但为什么会监听test2呢?
这是一个多IP服务器,同时存在着3个IP。
我估计是oracle在启动的时候会同时注册一个与hostname相关的listener,但由于调整了/etc/hosts,hostname并不是服务器的名字,所以导致了错误。
修正这个错误很简单,执行

hostname test

把hostname修改为与/etc/hosts中本机IP对应的hostname相同即可。

请使用浏览器的分享功能分享到微信等