plsql远程访问数据库 解决ora-12541:TNS:无监听程序

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

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

具体操做步骤以下:windows

1.下载plsql,安装.服务器

2.下载Instant Client,点击下载,下载第一个basic就好了,下载完解压缩,以放到主win7 d盘根目录为例:d:\instantclient_11_2网络

3.在d:\instantclient_11_2新建tnsnames.ora,用记事本编辑.oracle

4.到server 2012的oracle安装目录找到 …\app\admin\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora,打开,好比数据库实例是orcl,找到以下代码,拷贝到本机d:\instantclient_11_2\tnsnames.ora里app

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.dllcode

通过以上几步以后,重启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正确的映射了
相关文章
相关标签/搜索