登录Oracle数据库,提示:
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.
一切又恢复了平静。