telnet不上1521

hellojava 2010-12-25 03:29:53
两台机器,Windows上装了oracle9i,监听器已经打开,端口1521,防火墙已关,
在linux上能ping通Windows机器,可以telnet上3306端口(mysql),但是却telnet不上1521?
高手请帮忙分析下原因,谢谢!
...全文
781 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hellojava 2010-12-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 plusplus2010 的回复:]
引用 5 楼 feixueqianer 的回复:

引用 4 楼 plusplus2010 的回复:
telnet不上说明从linux到win的1521端口网络连接有问题。检查一下linux防火墙设置和网络设置。

但是可以telnet到win上的3306端口,而且在linux下编写的java程序可以访问到win上的mysql数据库的内容,所以应该不是linux防火墙设置和网络设置的问题……
[/Quote]

我的linux是装在另一台机器的虚拟机里面的,linux的防火墙已经关了,实在想不出哪里出问题了?
hellojava 2010-12-26
  • 打赏
  • 举报
回复
没有人遇到过此类问题吗?
linux虚拟机所在的win可以telnet到装有oracle服务器的win的1521端口,为什么虚拟机里面的linux却telnet不上呢?
plusplus2010 2010-12-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 feixueqianer 的回复:]

引用 4 楼 plusplus2010 的回复:
telnet不上说明从linux到win的1521端口网络连接有问题。检查一下linux防火墙设置和网络设置。

但是可以telnet到win上的3306端口,而且在linux下编写的java程序可以访问到win上的mysql数据库的内容,所以应该不是linux防火墙设置和网络设置的问题吧?
[/Quote]
这跟3306端口(mysql)都不相关呀。你先要解决的是telnet到win的1521端口的问题。
hellojava 2010-12-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 plusplus2010 的回复:]
telnet不上说明从linux到win的1521端口网络连接有问题。检查一下linux防火墙设置和网络设置。
[/Quote]
但是可以telnet到win上的3306端口,而且在linux下编写的java程序可以访问到win上的mysql数据库的内容,所以应该不是linux防火墙设置和网络设置的问题吧?
plusplus2010 2010-12-25
  • 打赏
  • 举报
回复
telnet不上说明从linux到win的1521端口网络连接有问题。检查一下linux防火墙设置和网络设置。
hellojava 2010-12-25
  • 打赏
  • 举报
回复
谢谢楼上两位的回答,是这样的:
Windows上的1521端口在监听,写了一个java程序通过jdbc thin方式可以访问到oracle数据库的内容,
import java.sql.*;
public class OracleTest {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
String url = "jdbc:oracle:thin:@192.168.1.2:1521:oracle";
try{
Class.forName(className);
conn = DriverManager.getConnection(url,"research","research");
stmt = conn.createStatement();
String sql = "select * from items";
rs = stmt.executeQuery(sql);
String name;
while(rs.next()){
name = rs.getString(1);
System.out.println(name);
}
}catch(Exception ex){
ex.printStackTrace();
}finally{
try{ if(rs != null){ rs.close();
rs = null;
}
if(stmt != null){
stmt.close();
stmt = null;
}
if(conn != null&&!conn.isClosed()){
conn.close();
conn = null;
}
}catch(Exception ex){
ex.printStackTrace();
}
}
}
}

但是同样的程序拿到linux下执行就报错:
java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:439)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at OracleTest.main(OracleTest.java:18)


telnet了一下1521,telnet不上...
不知道是什么原因?
xman_78tom 2010-12-25
  • 打赏
  • 举报
回复
先检查一下 windows 上 1521/tcp 端口是否在侦听 netstat -anp

再检查一下侦听器的状态是否正确 lsnrctl status
rushm 2010-12-25
  • 打赏
  • 举报
回复
首先你要确定win服务器Oracle是否启动?它使用的1521端口是否已启用?或是被其他程序占用了?
一般telnet有的端口可以,有的不上是因为相应的端口没开。
举个例子,看80端口是否开启被谁占用

1、Windows平台

在windows命令行窗口下执行:

C:\>netstat -aon|findstr "80"

TCP 127.0.0.1:80 0.0.0.0:0 LISTENING 2448

看到了吗,端口被进程号为2448的进程占用,继续执行下面命令:

C:\>tasklist|findstr "2448"

thread.exe 2016 Console 0 16,064 K

很清楚吧,thread占用了你的端口,Kill it

如果第二步查不到,那就开任务管理器,看哪个进程是2448,然后杀之即可。


19,612

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧