jdbc连接oracle 11g报错

来源:互联网 发布:php上传图片到本地 编辑:程序博客网 时间:2024/06/06 02:17

问题:最近重做系统,oracle由10g换为11g,结果jdbc连库的代码报错,

java.sql.SQLException: Io 异常: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=186646784)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4))))

到网上各种搜,有的说是获取连接是URL初始化错误,我的为

public Connection getConnection() throws Exception{String drive = "oracle.jdbc.driver.OracleDriver";// 连接地址,各个厂商提供,单独记住// sid可通过查看oracle安装目录下lintener.ora文件得到String url = "jdbc:oracle:thin:@localhost:1521:orcl";// 用户名和密码String dbuser = "mini";String password = "admin";// 使用Class类来加载程序Class.forName(drive);Connection conn = null;try{// 连接数据库conn = DriverManager.getConnection(url, dbuser, password);} catch(Exception ex){ex.printStackTrace();}return conn;}
后经测试,此代码无误。

解决办法:重装oracle11g

产生原因:重做系统后,我先装了10g,结果安装失败,我用安装包里自带的卸载工具卸载后,安装11g,新建数据库后,由于一些原因,我对它的数据文件进行了修改,后又修改回来了,以为不会有什么影响,修改前后用plsqldev均能正常登录,但是代码执行仍然报同样的错,运行环境eclipse+tomcat。没办法,抱着试一试的心理,我按照网上教程把11g卸干净,然后重装了下,重新建了一个用户,导入原来的表结构及数据,运行代码,数据正常显示。现在看来,可能有两个原因:其一,10g未卸干净,对第一次安装11g产生了影响;其二,对11g数据文件的修改,产生了不可逆的影响,影响未知;其三,数据库未建正确,用户授权不对。

经过搜索 ,给用户授足够权限脚本如下:

CREATE USER mini IDENTIFIED BY miniDEFAULT TABLESPACE USERSTEMPORARY TABLESPACE TEMP;GRANT   CREATE SESSION, CREATE ANY TABLE, CREATE ANY VIEW ,CREATE ANY INDEX, CREATE ANY PROCEDURE,  ALTER ANY TABLE, ALTER ANY PROCEDURE,  DROP ANY TABLE, DROP ANY VIEW, DROP ANY INDEX, DROP ANY PROCEDURE,  SELECT ANY TABLE, INSERT ANY TABLE, UPDATE ANY TABLE, DELETE ANY TABLE  TO mini;-- 用户登录后,导入数据报“无权限”ALTER   USER   mini   QUOTA   UNLIMITED   ON   USERS;-- 解决select数据时报“动态执行表不可访问,本会话的自动统计被禁止”grant select on v_$statname to mini;grant select on v_$sesstat to mini;grant select on v_$session to mini;grant select on v_$mystat to mini;

0 0