修改监听IP 解决 Oracle 11g ora-12514 问题

背景介绍:在一台Win7 虚拟机中安装了Oracle 11g R2,虚拟机的真实IP地址是 192.168.199.125.

近日在使用JDBC thin 驱动连接一个虚拟机中的Oracle 11g数据库时,反复出现如下提示:

ora-12514:TNS:listener does not currently know of service requested in connect descriptor

首先去google了一下,各种说法都有,因为我这会对Oracle的细节还是门外汉,难以去深究个中复杂的原因,于是我在虚拟机中的SQL Dev 中做了一下小小的测试,如图:

ora-12514-1

因为我在远程使用JDBC连接是一样的问题,在这里我选择了自定义的JDBC 串,结果果然还是一样的,就是说,在本机适用真实IP连接都是不行的,这就奇怪了。于是在命令行里用netstat 看了一下,oracle listener只监听了127.0.0.1:1521, 难怪真实IP(192.168.199.125)连接不了,根本就没监听嘛。于是,又找了找修改监听地址的方法,找到一篇题为”oracle 11g ora-12514 监听”(http://hi.baidu.com/_tiebing/item/7e92b2d5f10b314ffb5768fc)的文章,搜索的结果大多类似,看了看,基本没啥用。

结合一些搜索的文章,决定自行摸索,首先在hosts中添加了一个主机名到真实IP的解析:

192.168.199.125 win7-orcl

单中搜寻了几圈,找到个工具,开始菜单-> Oracle -xxxx ->配置和移植工具->Net Manager :

2

打开之后,

3

找到“本地”下的“服务命名”,其中有 “orcl”, 我们在“地址配置”中看到原始安装只有一个地址,就是localhost,所以它才只监听了127.0.0.1,

4

我们点击下面的加号,添加一个地址,填写刚刚在hosts里面添加个主机名 “win7-orcl”,端口当然写典型值1521啦。

5

眼尖的同学可能会发现,还有一个监听程序,打开看看,

6

可以看到,这里已经有两个地址,一个是IPC协议的监听,不管他,看第二个,

7

哦,第二是还是本地监听,我们像刚刚一样,添加一个,点击“添加地址”,协议选择“TCP/IP”,主机名积雪填写“win7-orcl”,端口还是1521,

8

全部填好之后,点击“文件”下的保存网络配置。

下面打开系统“服务”找到“OracleOraDb11g_home1TNSListener”项,重启一下,

9

再查看一下端口监听情况:

10

恩,不错,已经自动在所有地址的 1521 端口监听了,再到SQL Dev 中测试一下,

11

不错, SQL Dev 成功连接到真实IP,怎么样,简单吧,快去试试吧。

其他参考:http://www.cnblogs.com/xing901022/p/3327857.html

原创文章, Bill, 2013-10-28

© 2022, Bill X.