1、查看本地数据配置文件 tnsnames.ora 是否配置正确
配置示例: 127.0.0.1 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = XE )
)
)
2、查看oracle服务器监听是否正常启动了
查看状态命令:lsnrctl status
启动监听:lsnrctl start
关闭监听:lsnrctl stop
3、查看防火墙是否关闭
查看防火墙状态:
/etc/init.d/iptables status
暂时关闭防火墙:
/etc/init.d/iptables stop
禁止防火墙在系统启动时启动
/sbin/chkconfig --level 2345 iptables off
重启iptables:
/etc/init.d/iptables restart
1)永久性生效,重启后不会复原
开启: chkconfig iptables on
关闭: chkconfig iptables off
2)即时生效,重启后复原
开启: service iptables start
关闭: service iptables stop
如果 查看之后报如下错误:
lsnrctl status
LSNRCTL for Linux: Version 10.2.0.5.0 - Production on 07-JUL-2016 17:25:47
Copyright (c) 1991, 2010, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=fenzheng01)(PORT=1521)))
TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
TNS-00511: No listener
Linux Error: 111: Connection refused
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))
TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
TNS-00511: No listener
Linux Error: 111: Connection refused
是HOSTS文件设置有问题,查看本机主机名和hosts文件,果然有问题,两个IP地址指向了同一个主机名,将一台主机删除后,再启动监听,一切OK。
用root用户进行修改:
# cat /etc/hosts
# Internet Address Hostname # Comments
# 192.9.200.1 net0sample # ethernet name/address
# 128.100.0.1 token0sample # token ring name/address
# 10.2.0.2 x25sample # x.25 name/address
# 2000:1:1:1:209:6bff:feee:2b7f ipv6sample # ipv6 name/address
127.0.0.1 loopback localhost # loopback (lo0) name/address
192.168.101.189 test
如果修改hosts文件报错:
E45: ‘readonly’ option is set (add ! to override)
ORA-01034和ORA-27101的原因是多方面的:主要是oracle当前的服务不可用,shared memory realm does not exist,是因为oracle没有启动或没有正常启动,共享内存并没有分配给当前实例.所以,通过设置实例名,再用操作系统身份验证的方式,启动数据库。这样数据库就正常启动了,就不会报ORA-01034和ORA-27101两个启动异常了。
还有就是可能是登录数据库后,不正常的退出,比如直接关掉窗口,而这时数据库里有未完成的动作,再次登录时就会提示“insufficient privileges”的报错,SQL>shutdown immediate; SQL>startup;就恢复正常了。