有朋友在一台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
一般有问题检查这些文件都能找到原因。