plsqldev可以连oracle但javajdbc连不上
发布时间:2020-12-12 14:20:56 所属栏目:百科 来源:网络整理
导读:此处是jdbc连接 try { Class.forName( "oracle.jdbc.driver.OracleDriver" ); String url = "jdbc:oracle:thin:@xxx.xx.xxx.xxx:1521:xxx" ; conn = DriverManager.getConnection(url,username,password);} catch (ClassNotFoundException e) { e.printStack
此处是jdbc连接 try {
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@xxx.xx.xxx.xxx:1521:xxx";
conn = DriverManager.getConnection(url,username,password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
错误信息: java.sql.SQLException: Io 异常: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=169869568)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4))))
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:333)
at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:404)
at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:468)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:314)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
首先,说账号密码写错了的,我强调一下,账号密码真的没错,如果账号密码错了,会报下面的错误 java.sql.SQLException: ORA-01017: 用户名/口令无效; 登录被拒绝
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134) at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289) at oracle.jdbc.ttc7.O3log.receive2nd(O3log.java:496) at oracle.jdbc.ttc7.TTC7Protocol.logon(TTC7Protocol.java:278) at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:346)
PL/SQL连接没问题 用的客户端,下面是配置文件 文件tnsnames.ora ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = xxx.xxx.xxx.xxx)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME =xxx)
)
)
问题就这么莫名其妙的产生了,PL/SQL能连上,程序连不上 在解决问题之前,先看看oracle数据库的一些知识
SID即使SERVICE_NAMES,一个数据库对应一个实例 PL/SQL通过tnsnames.ora连接 可以配置服务名、sid等,都行 jdbc连接 SID方式 jdbc:oracle:thin:@<host>:<port>:<SID>
SERVICE_NAMES方式 jdbc:oracle:thin:@//<host>:<port>/ServiceName
我在tnsnames.ora中默认配置的服务名,但是jdbc用的sid连接方式,说明很有可能是客户给我的,不是实例名(SID),而是一个库名,库名又和服务名相同 那么则可以用service_name方式连接 或者用: jdbc:oracle:thin:@(DESCRIPTION = (ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = xxx.xxx.xxx.xxx)(PORT = 1521)))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME =xxx)))
方式 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |