plsql远程访问数据库 解决ora

您所在的位置:网站首页 plsql无监听程序12541 plsql远程访问数据库 解决ora

plsql远程访问数据库 解决ora

2023-08-25 15:09| 来源: 网络整理| 查看: 265

今天在windows server 2012上安装了一个oracle 11g的数据库,但是安装 完成以后发现在我的机器上访问数据库出现错误,ora-12541:TNS:无监听程序。

后来查询了很多资料,加上借鉴博客园师兄的博客,我知道了问题的所在,今天拿出来分享一下:

具体操作步骤如下:

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正确的映射了


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3