PLSQL连接HYPER-V中的Oracle问题

qq7092 2017-11-20 10:03:11
各位好,今天再HYPER-V中安装了Oracle,主机虚拟机都是WIN10。现在主机可以通过远程桌面连接虚拟机,telnet测试1521端口也是开放的。为什么用PLSQL连接时,一直处于正在登录状态,就是一直连不上。
昨天主机与虚拟机是通过外部网络连接的,那时候plsql连接是没问题的,今天换成内部网络连接,然后我把tnsname.ora中的相关IP也改了,却连不上。研究了一整天了,望各位路过大侠救我!!
...全文
257 13 点赞 打赏 收藏 举报
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
minsic78 2017-11-23
引用 9 楼 qq_19832477 的回复:
[quote=引用 8 楼 minsic78 的回复:] 另外,找下监听的日志文件,看下你远程连接的时候,监听有没有侦测到你的远程连接。
防火墙是关闭的。 在远程连接时,我在在监听日志文件里边,我找到这么一段日志: <msg time='2017-11-23T10:12:27.329+08:00' org_id='oracle' comp_id='tnslsnr' type='UNKNOWN' level='16' host_id='NORM' host_addr='fe80::189a:e814:4766:794f%12'> <txt>23-11鏈?2017 10:12:27 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)(CID=(PROGRAM=E:\software\e\OracleClient\plsqldev.exe)(HOST=ZHOU)(USER=zhou))) * (ADDRESS=(PROTOCOL=tcp)(HOST=169.254.248.215%12)(PORT=64088)) * establish * orcl * 0 </txt> </msg> E:\software\e\OracleClient\plsqldev.exe 是我客户端的PLSQL,ZHOU是我客户端计算机名,zhou是用户名,HOST后边是客户端的IP。 这个应该算是侦测到我的远程连接了吧?[/quote] 不仅仅是侦测到了,而且已经建立连接了,那说明等待是在数据库内的,通常出现这种情况是因为大量短连接导致的连接风暴搞出来的问题,或者密码错误的连接不停重试搞出来的,但你这个应该不是这两种情况?在卡住的时候,在数据库服务器上查下v$session中有没有program字段为plsql(具体可能是其他值,比如plsql developer等等)那行的event(v$session的另外一个字段)是什么,再做进一步的诊断。
  • 打赏
  • 举报
回复
qq7092 2017-11-23
引用 8 楼 minsic78 的回复:
另外,找下监听的日志文件,看下你远程连接的时候,监听有没有侦测到你的远程连接。
防火墙是关闭的。 在远程连接时,我在在监听日志文件里边,我找到这么一段日志: <msg time='2017-11-23T10:12:27.329+08:00' org_id='oracle' comp_id='tnslsnr' type='UNKNOWN' level='16' host_id='NORM' host_addr='fe80::189a:e814:4766:794f%12'> <txt>23-11鏈?2017 10:12:27 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)(CID=(PROGRAM=E:\software\e\OracleClient\plsqldev.exe)(HOST=ZHOU)(USER=zhou))) * (ADDRESS=(PROTOCOL=tcp)(HOST=169.254.248.215%12)(PORT=64088)) * establish * orcl * 0 </txt> </msg> E:\software\e\OracleClient\plsqldev.exe 是我客户端的PLSQL,ZHOU是我客户端计算机名,zhou是用户名,HOST后边是客户端的IP。 这个应该算是侦测到我的远程连接了吧?
  • 打赏
  • 举报
回复
minsic78 2017-11-23
另外,找下监听的日志文件,看下你远程连接的时候,监听有没有侦测到你的远程连接。
  • 打赏
  • 举报
回复
minsic78 2017-11-23
引用 6 楼 qq_19832477 的回复:
[quote=引用 5 楼 minsic78 的回复:] 前面几位让ping、tnsping的,有没有什么结果?
tnsping 好像得在客户端(主机)上安装Oracle才能通,我的客户端没有安装Oracle,所以提示tnsping不是内部或外部命令,但在服务端(虚拟机)上是可以通的。 另外,无论是在在服务端还是客户端,都是能ping通的,没问题。 [/quote] 那是因为你客户端装了阉割版的instant client,所以没有tnsping,那就麻烦,猜猜猜吧:你的虚拟机防火墙是不是开着?
  • 打赏
  • 举报
回复
qq7092 2017-11-23
引用 5 楼 minsic78 的回复:
前面几位让ping、tnsping的,有没有什么结果?
tnsping 好像得在客户端(主机)上安装Oracle才能通,我的客户端没有安装Oracle,所以提示tnsping不是内部或外部命令,但在服务端(虚拟机)上是可以通的。 另外,无论是在在服务端还是客户端,都是能ping通的,没问题。
  • 打赏
  • 举报
回复
minsic78 2017-11-23
引用 12 楼 qq_19832477 的回复:
[quote=引用 11 楼 qq_19832477 的回复:] [quote=引用 10 楼 minsic78 的回复:] [quote=引用 9 楼 qq_19832477 的回复:] [quote=引用 8 楼 minsic78 的回复:] 另外,找下监听的日志文件,看下你远程连接的时候,监听有没有侦测到你的远程连接。
防火墙是关闭的。 在远程连接时,我在在监听日志文件里边,我找到这么一段日志: <msg time='2017-11-23T10:12:27.329+08:00' org_id='oracle' comp_id='tnslsnr' type='UNKNOWN' level='16' host_id='NORM' host_addr='fe80::189a:e814:4766:794f%12'> <txt>23-11鏈?2017 10:12:27 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)(CID=(PROGRAM=E:\software\e\OracleClient\plsqldev.exe)(HOST=ZHOU)(USER=zhou))) * (ADDRESS=(PROTOCOL=tcp)(HOST=169.254.248.215%12)(PORT=64088)) * establish * orcl * 0 </txt> </msg> E:\software\e\OracleClient\plsqldev.exe 是我客户端的PLSQL,ZHOU是我客户端计算机名,zhou是用户名,HOST后边是客户端的IP。 这个应该算是侦测到我的远程连接了吧?[/quote] 不仅仅是侦测到了,而且已经建立连接了,那说明等待是在数据库内的,通常出现这种情况是因为大量短连接导致的连接风暴搞出来的问题,或者密码错误的连接不停重试搞出来的,但你这个应该不是这两种情况?在卡住的时候,在数据库服务器上查下v$session中有没有program字段为plsql(具体可能是其他值,比如plsql developer等等)那行的event(v$session的另外一个字段)是什么,再做进一步的诊断。[/quote] 刚刚找了,只能找到服务端自己的PLSQL,客户端的PLSQL连接时,没在v$session表中找到相关信息。。。。 [/quote] 还有,我刚刚将HYPER-V的网络适配器的设置改为外部连接,设置虚拟机(服务端)的IP和DNS为自动获取,然后改了客户端的tnsname.ora配置后,又可以连接了。 我在想,这会不会是因为我之前设置的IP不对或者是DNS不对? [/quote] 如果先前IP设置不对,那么压根不会连接到监听的,更何况还建立了连接。
  • 打赏
  • 举报
回复
qq7092 2017-11-23
引用 11 楼 qq_19832477 的回复:
[quote=引用 10 楼 minsic78 的回复:] [quote=引用 9 楼 qq_19832477 的回复:] [quote=引用 8 楼 minsic78 的回复:] 另外,找下监听的日志文件,看下你远程连接的时候,监听有没有侦测到你的远程连接。
防火墙是关闭的。 在远程连接时,我在在监听日志文件里边,我找到这么一段日志: <msg time='2017-11-23T10:12:27.329+08:00' org_id='oracle' comp_id='tnslsnr' type='UNKNOWN' level='16' host_id='NORM' host_addr='fe80::189a:e814:4766:794f%12'> <txt>23-11鏈?2017 10:12:27 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)(CID=(PROGRAM=E:\software\e\OracleClient\plsqldev.exe)(HOST=ZHOU)(USER=zhou))) * (ADDRESS=(PROTOCOL=tcp)(HOST=169.254.248.215%12)(PORT=64088)) * establish * orcl * 0 </txt> </msg> E:\software\e\OracleClient\plsqldev.exe 是我客户端的PLSQL,ZHOU是我客户端计算机名,zhou是用户名,HOST后边是客户端的IP。 这个应该算是侦测到我的远程连接了吧?[/quote] 不仅仅是侦测到了,而且已经建立连接了,那说明等待是在数据库内的,通常出现这种情况是因为大量短连接导致的连接风暴搞出来的问题,或者密码错误的连接不停重试搞出来的,但你这个应该不是这两种情况?在卡住的时候,在数据库服务器上查下v$session中有没有program字段为plsql(具体可能是其他值,比如plsql developer等等)那行的event(v$session的另外一个字段)是什么,再做进一步的诊断。[/quote] 刚刚找了,只能找到服务端自己的PLSQL,客户端的PLSQL连接时,没在v$session表中找到相关信息。。。。 [/quote] 还有,我刚刚将HYPER-V的网络适配器的设置改为外部连接,设置虚拟机(服务端)的IP和DNS为自动获取,然后改了客户端的tnsname.ora配置后,又可以连接了。 我在想,这会不会是因为我之前设置的IP不对或者是DNS不对?
  • 打赏
  • 举报
回复
qq7092 2017-11-23
引用 10 楼 minsic78 的回复:
[quote=引用 9 楼 qq_19832477 的回复:] [quote=引用 8 楼 minsic78 的回复:] 另外,找下监听的日志文件,看下你远程连接的时候,监听有没有侦测到你的远程连接。
防火墙是关闭的。 在远程连接时,我在在监听日志文件里边,我找到这么一段日志: <msg time='2017-11-23T10:12:27.329+08:00' org_id='oracle' comp_id='tnslsnr' type='UNKNOWN' level='16' host_id='NORM' host_addr='fe80::189a:e814:4766:794f%12'> <txt>23-11鏈?2017 10:12:27 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)(CID=(PROGRAM=E:\software\e\OracleClient\plsqldev.exe)(HOST=ZHOU)(USER=zhou))) * (ADDRESS=(PROTOCOL=tcp)(HOST=169.254.248.215%12)(PORT=64088)) * establish * orcl * 0 </txt> </msg> E:\software\e\OracleClient\plsqldev.exe 是我客户端的PLSQL,ZHOU是我客户端计算机名,zhou是用户名,HOST后边是客户端的IP。 这个应该算是侦测到我的远程连接了吧?[/quote] 不仅仅是侦测到了,而且已经建立连接了,那说明等待是在数据库内的,通常出现这种情况是因为大量短连接导致的连接风暴搞出来的问题,或者密码错误的连接不停重试搞出来的,但你这个应该不是这两种情况?在卡住的时候,在数据库服务器上查下v$session中有没有program字段为plsql(具体可能是其他值,比如plsql developer等等)那行的event(v$session的另外一个字段)是什么,再做进一步的诊断。[/quote] 刚刚找了,只能找到服务端自己的PLSQL,客户端的PLSQL连接时,没在v$session表中找到相关信息。。。。
  • 打赏
  • 举报
回复
minsic78 2017-11-22
前面几位让ping、tnsping的,有没有什么结果?
  • 打赏
  • 举报
回复
qq7092 2017-11-21
引用 3 楼 jdsnhan 的回复:
你所说的外部网络和内部网络指什么? ping数据库的连接串指tnsping配置的server_name
WIN10连接HYPER-V的虚拟机时,有三种虚拟交换机类型,分别是外部、内部、专用,我说的外部网络是指我设置的是外部虚拟交换机类型。 这个我自己说习惯了,没注意。
  • 打赏
  • 举报
回复
jdsnhan 2017-11-21
你所说的外部网络和内部网络指什么? ping数据库的连接串指tnsping配置的server_name
  • 打赏
  • 举报
回复
qq7092 2017-11-20
你好,服务器id能够ping通,但是ping 数据库连接串,我没明白什么意思。
  • 打赏
  • 举报
回复
碧水幽幽泉 2017-11-20
这个很可能是网络的原因。 1.ping 服务器id 2.ping 数据库连接串 试试看!
  • 打赏
  • 举报
回复
相关推荐
发帖
Oracle
加入

1.6w+

社区成员

Oracle开发相关技术讨论
申请成为版主
帖子事件
创建了帖子
2017-11-20 10:03
社区公告
暂无公告