半瓶内容

 results 1 - 1 of about 1 for Oracle在Linux环境下的监听不能启动的案例一则. (0.353 seconds) 

Oracle在Linux环境下的监听不能启动的案例一则

有朋友在一台Linux服务器新装了Oracle,但是客户端无法连接,我连上去看看情况:

首先:

[root@homeoracle ~]# su - oracle
-bash: ulimit: open files: cannot modify limit: 不允许的操作

Oracle 建议对每个Linux 帐户可以使用的进程数和打开的文件数设置限制,但是经常在这些限制上出问题,一般是在/etc/security/limits.conf或/etc/profile或者/home/oracle/.bash_profile中的ulimit命令错误导致的, 删除增加的ulimit行即可解决此问题。

比如这里/etc/profile设置了如下,我把这些设置删掉了:

if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi

然后再切换到oracle用户,查看进程:

[root@homeoracle ~]# su - oracle
[oracle@homeoracle ~]$ ps -ef | grep ora_
oracle 4524 1 0 16:57 ? 00:00:02 ora_pmon_sidName
......
oracle 6024 5997 0 22:53 pts/2 00:00:00 grep ora_

可见Oracle实例是正常的,查看和启动listner:

[oracle@homeoracle ~]$ lsnrctl stat

TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
TNS-00511: No listener
Linux Error: 111: Connection refused

[oracle@homeoracle ~]$ lsnrctl start

TNS-12542: TNS:address already in use
TNS-12560: TNS:protocol adapter error
TNS-00512: Address already in use
Linux Error: 98: Address already in use

检查/etc/hosts文件,原来是IP地址配置有误:

[root@homeoracle ~]# vi /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
#172.16.0.111 homeoracle homeoracle.localdomain
127.0.0.1 localhost.localdomain localhost
172.16.0.112 homeoracle.localdomain homeoracle

然后再启动listner,一切正常。

有时候在服务器访问正常,但是客户端连不上数据库,有可能是防火墙的问题,增加开放1521端口并重启服务即可:

[root@erpdevdb ~]# vi /etc/sysconfig/iptables
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1521 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
......

[root@erpdevdb ~]# service iptables restart
Flushing firewall rules: [ OK ]
Setting chains to policy ACCEPT: filter [ OK ]
Unloading iptables modules: [ OK ]
Applying iptables firewall rules: [ OK ]

有时候mount 一个nfs的时候,提示no route to host,一般也是防火墙的原因。

listner及instance连接相关的几个文件也就如下几个:
操作系统:

/etc/sysctl.conf
/etc/security/limits.conf
/etc/profile
/home/oracle/.bash_profile
/etc/hosts
/etc/sysconfig/iptables

Oracle:

$ORACLE_HOME/network/admin/listner.ora
$ORACLE_HOME/network/admin/tnsnames.ora
$ORACLE_HOME/network/admin/sqlnet.ora

一般有问题检查这些文件都能找到原因。


Leave a Comment