oracle有关监听的问题
在启动sql developer时,提示tns连接超时,分析:
1,先检查windows端的客户端配置是不是真确:
D:\instantclient_11_2\network\admin\tnsnames.ora的配置
network\admin\目录是手动建立的,tnsnames.ora是从linux端拷贝过来的!
2,那就是linux(安装的oracle软件及oracle数据库)端的监听的问题:
解决思路:
a,tnsping orcl---检查监听是不是ok,结果报错:TNS-12541: TNS:no listener
(ps:监听所在的目录:$ORACLE_HOME/network/admin/)先查看listener.ora和tnsnames.ora
这两个文档的配置,发现都是ok的
b,lsnrctl start 重启 发现没有报错,但是当利用tnsping orcl检查是就报错!
首先用netca从新配置listen和local net,在配完local net还是检测报错:ora-12514错误
c,想其他办法,先重启监听:lsnrctl start,结果报错:
TNS-00512 Address already in use
Cause: Specified listener address is already being used.
Action: Start your listener with an unused address.
发现原因是:已经在监听1521端口,但是停监听又停不掉,此时直接kill掉!!!
之后这样可以解决:
在 i). 打开<OracleHome>/network/admin/listener.ora文件,找到:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.3)(PORT = 1521))
)
)
ii)添加
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
(SID_NAME = ORCL)
)
iii)最后变成
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.3)(PORT = 1521))
)
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
(SID_NAME = orcl)
)
)
之后再:tnsping orcl发现一切都ok了!!!
ps1,iptables要关闭(最好),有时候,即使是所有的链默认都是accept也会出错!
ps2,如果有时候感觉所有的配置都是ok的,但是还是提示 Ora-12514:TNS:监听程序当前无法识别链接描述符中请求的服务,此时最好的办法就是利用netca从新配置listen!(尤其是安装oracle时,没有太注意,把语言选成中文!!!)
ps3,以上解决的方案(在listener.ora中添加语句),其实是利用静态的方式,注册监听到oracle的实例,默认情况是动态注册的--即在用netca配置完listen之后就默认使用动态注册,但是如果动态注册不上,可以利用这种静态注册的方法!!!
ps4,在重启监听时,提示:the listener supports no services
此时已经在添加了静态注册到oracle实例,但是还是报这个错,解决此类问题的思路:
a,重启监听
b,用netca重启添加listen!!!