plsql远程访问数据库 解决ora-12541:TNS:无监听程序
2015-10-12 10:08
573 查看
后来查询了很多资料,加上借鉴博客园师兄的博客,我知道了问题的所在,今天拿出来分享一下:
具体操作步骤如下:
1.下载plsql,安装.
2.下载Instant Client,点击下载,下载第一个basic就行了,下载完解压缩,以放到主win7
d盘根目录为例:d:\instantclient_11_2
3.在d:\instantclient_11_2新建tnsnames.ora,用记事本编辑.
4.到server 2012的oracle安装目录找到 …\app\admin\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora,打开,比如数据库实例是orcl,找到如下代码,拷贝到本机d:\instantclient_11_2\tnsnames.ora里
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = server 2012 IP)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
5.添加一个环境变量,名为TNS_ADMIN,值为tnsnames.ora文件所在路径d:\instantclient_11_2\tnsnames.ora,plsql通过这个找到orcl连接字符串
6.添加一个环境变量NLS_LANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBK
7.打开PLSQL,不用登陆,工具-首选项-ORACLE-连接:
勾选检查连接
Oracle主目录: d:\instantclient_11_2
OCI库: d:\instantclient_11_2\oci.dll
经过以上几步之后,重启PLSQL,问题来了,报错:ora-12541:TNS:无监听程序. ping是可以ping得通的,server 的监听也开着.经过不懈的努力,多次试验终于解决了:
1网络连接IPV4设置静态IP
IP地址:192.168.1.111 (111可修改成自己的 1-255)
子网掩码:255.255.255.0
默认风头:192.168.1.1
首选DNS服务器:192.168.1.1
修改完记得主win7上 ping 192.168.1.111 ping得通再继续往后.
2.修改..\app\admin\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora
SID_NAME = CLRExtProc 改为 SID_NAME = orcl orcl是实例名
HOST = localhost 改为 HOST = 192.168.1.111
3.修改..\app\admin\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora
两处 HOST = localhost 改为 HOST = 192.168.1.111
SID = CLRExtProc 改为 SID = orcl
好了,重启oracle,监听,主win7上的plsql就可以远程连接虚拟机上的数据库了.
下面供大家参考:
排查问题:在服务端机器上
1.首先检查监听程序是否能正常启动,开始,运行 cmd--->lsnrctl start,检查监听是否是在正常运行,如果正常运行,会提示:TNS-01106: 使用名称LISTENER的监听程序已经启动。如果没有运行,用上面的命令启动监听程序。
2.还在命令提示行里用 tnsping 服务名 ,来检查tnsnames.ora服务配置是否正确。正确的提示例如:
已使用 TNSNAMES 适配器来解析别名
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)
(HOST = 192.168.0.6)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = 服务名)))
OK (50 毫秒)
命令1: tnsping orcl (ping 本地的orcl,)
结果:已使用 TNSNAMES 适配器来解析别名
尝试连接 (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 152
1)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl1)))
OK (0 毫秒)
其中:(HOST = localhost) 监听器是这么解析的
命令2:tnsping 159.156.1.207/orcl1(加上本地ip来ping本地实例)
结果:已使用 EZCONNECT 适配器来解析别名
尝试连接 (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=orcl1))(ADDRESS=(PROTOCOL=TCP)
(HOST=159.156.1.207)(PORT=1521)))
TNS-12541: TNS: 无监听程序
其中:(HOST=159.156.1.207)监听器是这么解析的
错误就在这里了,按常理来说,localhost和159.156.1.207(本机IP)应该是同样可行的,但是oracle监听器解析时就是没能正确通过。
解决办法:先是尝试修改监听器配置文件:tnsnames.ora中的配置,但是均告失败
最后,打开Oracle 自己的工具:Net Configuration Assistant 将原来的监听器重新配置一遍,走流程不修改,直到完成。重新启动监听器,测试加ip来ping实例,正常通过
结果:已使用 EZCONNECT 适配器来解析别名
尝试连接 (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=orcl1))(ADDRESS=(PROTOCOL=TCP)
(HOST=159.156.1.207)(PORT=1521)))
OK (0 毫秒)
结论:成功解决了数据库远程连接问题,问题原因我猜想是ORACLE的监听器没能正确的映射本机IP和loaclhost,导致报错,通过重新配置监听器,就将IP和localhost正确的映射了
相关文章推荐
- Navicat for Oracle 安装后连接配置问题(ORA-12541或者ORA-28547等)
- PL/SQL Developer登录提示 ORA-12541:TNS:无监听程序
- 多种TNS报错总结--监听器及tnsnames.ora配置文件多种出错总结
- Oracle11g ORA-12541
- PLSQL连接远程Oracle出现ORA-12541: 无监听程序
- ORA-12541 TNS 无监听程序(数据库新建后,服务列表没有监听程序)
- oracle ora-12154问题总结
- Navicat Premium连接Oracle数据库时,报ORA-12541: TNS无监听程序错误
- 使用PL/SQL连接Oracle时报错ORA-12541: TNS: 无监听程序
- 使用PL/SQL Developer 连接Oracle时报错ORA-12541: TNS: 无监听程序
- Oracle数据库 登陆错误ora-12541
- oracle 11g XE安装和PLSQL Developer安装和配置
- “ORA-12541:TNS:无监听程序”错误 - listener.log日志达到4G
- ORACLE数据库逐步解决ORA-12541、ORA-01034和ORA-27101、ORA-00119和ORA00132的过程
- MongoDB mapReduce操作
- Oracle数据库密码过期
- Oracle sqldevelop的使用(数据即.dmp文件的导入,用户创建,创建连接)
- 数据库分类----业务应用层面
- Oracle常用的命令
- PostgreSQL的hstore初步学习