一次ORA-00130: invalid listener address错误

登录数据库,提示:

ora11g>sqlplus dcsopen/dcsopen1
SQL*Plus: Release 11.2.0.1.0 Production on Mon Jan 5 18:49:31 2015
Copyright (c) 1982, 2009, Oracle.  All rights reserved.
ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist

Linux-x86_64 Error: 2: No such file or directory
Process ID: 0
Session ID: 0 Serial number: 0

看样子是没有启动,那就启动数据库:

ora11g>sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Mon Jan 5 18:50:29 2015
Copyright (c) 1982, 2009, Oracle.  All rights reserved.
Connected to an idle instance.
SQL> startup
ORA-00119: invalid specification for system parameter LOCAL_LISTENER
ORA-00130: invalid listener address '(ADDRESS=(PROTOCOL=TCP)(HOST=dcsopen2Node)(PORT=1521))'
报的是如上的错误,看到其中监听信息是 HOST=dcsopen2Node,第一反应是监听文件有问题,查看了下listener.ora文件:
# listener.ora Network Configuration File: /opt/app/ora11g/product/11.2.0/dcsopen/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
  )
ADR_BASE_LISTENER = /opt/app/ora11g
没有 HOST=dcsopen2Node的配置。

查看机器名:
ora11g>hostname
dcsopen2Node
发现本机名称是 dcsopen2Node。参看一些帖子,说是有可能oracle启动的时候会同时注册一个和hostname相同名称的监听,所以此处报错提示的是(ADDRESS=(PROTOCOL=TCP)(HOST=dcsopen2Node)(PORT=1521))这个监听,提示无效地址,再查看/etc/hosts文件:
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
发现根本没有hostname对应项,由此推测, 可能是Oracle注册和hostname同名监听,但/etc/hosts中又没有定义hostname-IP对应项,因此认为此监听地址无效

解决方法
/etc/hosts中添加项:
172.27.19.57    dcsopen2Node
重启服务:
ora11g>sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Mon Jan 5 20:33:32 2015
Copyright (c) 1982, 2009, Oracle.  All rights reserved.
Connected to an idle instance.

SQL> startup
ORACLE instance started.
Total System Global Area 3290345472 bytes
Fixed Size                  2217832 bytes
Variable Size            2533361816 bytes
Database Buffers          738197504 bytes
Redo Buffers               16568320 bytes
Database mounted.
Database opened.
一切又恢复了平静。

你可能感兴趣的:(oracle,监听,ORA-00130)