oracle 用jdbc 连接,本地连接不上,远程却可以正常连接

skyqsk 2016-11-25 08:24:14

我是在centos 上弄的oracle
我在windows上写的代码,用的jdbc连接数据库,一切正常。

我写好代码之后,放到我的centos 服务器上时,无法获取连接(也没报错,就是卡在获取连接那), jdbc连接的url我都改成localhost,或者127.0.0.1都不行
jdbc:oracle:thin:sky/100860@localhost:1521/xe
oracle 的版本是 11g 精简版
求助各位大神
...全文
498 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
科比请留步 2016-11-25
  • 打赏
  • 举报
回复
可能你的linux的网络服务名有问题,改一下
bree06 2016-11-25
  • 打赏
  • 举报
回复
查看一下user表,确定localhost,或者127.0.0.1的host值为*,如果不是*则改为*即可
skyqsk 2016-11-25
  • 打赏
  • 举报
回复
附上之后我写的测试代码,我i在windows下用正常 linux下没反应 (在windows下通过域名访问的,linux下是localhost)
import java.io.IOException;
import java.sql.*;
import java.util.Date;



public class Test{

    public static void main(String[] args) throws SQLException{
          try {
                        Class.forName("oracle.jdbc.driver.OracleDriver");
          } catch (ClassNotFoundException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
         }
         Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521/xe","sky","100860");
         Statement stm = con.createStatement();
         System.out.println("after stm");
         ResultSet rs=stm.executeQuery("select * from sky.users");
         while(rs.next()){
                 System.out.println(rs.getInt(1)+":"+rs.getString(2));
         }
         System.out.println("after while");

         rs.close();
         stm.close();
         con.close();
    }
}
iamjsber 2016-11-25
  • 打赏
  • 举报
回复
服务器为什么要用本机地址?
机不安装Oracle客户端,使用PL/SQL Developer连接远程数据库 1、先到Oracle网站下载Instant Client : http://www.oracle.com/technology/global/cn/software/tech/oci/instantclient/index.html 根据你的操作系统选择不同的Instant Client版本 下载会是一个压缩文件,解压之后的文件夹叫:D:/instantclient_11_2.放在你喜欢的目录即可.例如:D:/instantclient_11_2 2、在D:/instantclient_11_2目录下新建目录network,在network目录下再新建admin目录,在admin目录下新建文件tnsnames.ora,使用文本编辑器打开写入如下内容: ORCL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.58 )(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = ORCL ) ) ) 第一个黄色字块:表示定义远程服务器的在本地主机名 第二个黄色字块:远程数据库的IP地址 第三个黄色子块:远程数据库实例名 3、添加一个环境变量,名为TNS_ADMIN,值为tnsnames.ora文件所在路径。比如我的本机为:D:/instantclient_11_2/network/admin 4、设置ORACLE的语言,添加环境变量NLS_LANG ,值为: AMERICAN_AMERICA.AL32UTF8 该值可以连接远程数据库中,通过下面的sql语句查询得到: select userenv('language') from dual; 如果该值设置不正确,将导致PL/SQL Developer连接数据库后,查看的数据会出现乱码。 5、下载并安装PL.SQL.Developer配置应用 配置tools->preferences->connection Oracle Home D:/instantclient_11_2 OCI library D:/instantclient_11_2/oci.dll 中文的PL/SQL Developer就是 工具-->首选项-->连接 Oracle主目录 D:/instantclient_11_2 OCI库 D:/instantclient_11_2/oci.dll 6、关闭PL/SQL Developer,重起Developer. 主机名就会出现在PL/SQL Developer的列表里,输入用户名密码,就可以登录远程oracle 11g数据库了。 补充Instant Client 说明 Oracle Instant client 是oracle提供的简便客户端, 支持多种平台. 可从oracle网站下载, 下载地址为 http://www.oracle.com/technology/global/cn/software/tech/oci/instantclient/index.html 包括如下内容: Instant client Package - Basic 运行OCI, OCCI, 和JDBC-OCI应用程序需要的所有文件. Instant client Package - Basic Lite: 只包含英语错误信息, 只支持unicode, ascii, 西欧字符集. Instant client Package - JDBC Supplement 为jdbc增加了xa, 国际化和RowSet操作. Instant Client Package - SQL *Plus 包含sqlplus和需要的库文件 Instant client Package - SDK 使用Instant Client开发Oracle 应用程序需要的头文件及示例makefile Instant client package - ODBC 使用odbc时需要的库, 不是所有平台都有. linux平台包含. Basic 和Basic Lite两个中必须选一个, 其他包都是可选的. 我下载 了 Basic, JDBC supplement, SQL *Plus, SDK, ODBC. 解压后放在一个文件夹下, 在这个文件夹下建立文件 tnsnames.ora, 设置环境变量LD_LIBRARY_PATH和TNS

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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