初识Oracle

       本来只是想让java程序连接实验室里面的oracle数据库的,结果发现连了好一会儿都没有连接成功,以前没有怎么接触过oracle数据库,在网上找了好久的原因,还是一直报这个错误:

Exception in thread "main" java.sql.SQLException: Io 异常: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=185599488)(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(Unknown Source)
         at java.sql.DriverManager.getConnection(Unknown Source)
         at first.Test2.main(Test2.java:35)

 

       后来经过与实验室兄弟讨论之后才找到原因,出现以上错误的原因在于连接数据库的时候,要么是数据库实例名错误,要么就是用户名错误,要么就是密码错误,总之,错误会出现在这一条语句里面:

Connection conn = DriverManager.getConnection(url,user,pwd);                      

     

         在这里最容易出错的是url,我的错误就出现在这里,url的格式是应该是这样的:

jdbc:oracle:thin:@数据库所在的IP地址:端口号:数据库实例

 

         注意了,这里对于初次接触oracle数据库的童鞋们来说最容易将数据库的实例名写成表空间的名字。

 

         我参考了以下几篇资料在64位   Win7的机器上进行oracle11g数据库单机版的配置之后,终于算是初步认识到了oracle数据库:

         Oracle数据库一系列安装:http://wenku.baidu.com/view/a163c84ae518964bcf847c8c.html

         怎样访问oracle数据库:http://www.codesky.net/article/201111/166747.html

 

         下面将数据库全局名称、服务名、数据库实例、表空间、表、角色、用户等基本概念分清楚一下:

 

         1、我们刚开始安装oracle数据库的时候,系统会要我们跟数据库起一个全局名称,这个全局数据库名跟SID(系统标识符)是一致的,跟数据库的实例名称是一样的,除了oracle实时应用集群之外,一个数据库一般只对应一个数据库实例;

 

         2、服务名,是对外公布的名称,用于网络监听服务,一个数据库可以设置多个服务名,这个要在集群中才能充分的体现出来,对于本地的服务名的配置可以在oracle数据库的客户端中Net Manager中进行配置,在Net Manager中配置完成之后就会在oracle数据库文件tnsnames.ora中马上增加类似的内容:

ORCL202 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.201)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )

       其中ORCL202是在Net Manager中配置的新的服务名,SERVICE_NAME = orcl其实就是SID,SID也是INSTANCE_NAME,SERVICE_NAMES,主要用在监听器中。

 

       3、安装完数据库等一系列东西之后,我们可以通过访问Enterprise Manager Database Control URL来进行数据库的监控,在这个网址中我们可以设置数据库的表空间和角色,表空间就相当于mySQL中的数据库,这里不同的是,每个用户都必须对应一个表空间。

 

       4、Oracle的用户一般分为两种,一种是数据库在安装的时候系统自动创建的用户,另一类是利用系统用户创建的普通用户,创建普通用户的时候,可以对其用户进行相应的权限配置。

 

        最后根据我个人经历需要注意以下几点:

       1、oracle数据库安装文件里面有很多东西,其中在java要进行连接的驱动也在里面。 

       2、同一个表空间可以对应不同的用户。 但一个用户只能指定一个表空间和临时表空间。

       3、Oracle数据库客户端只是针对于PLSQL Developer进行本地访问的时候起到一个映射的作用,当我们在java程序里面要与数据库进行连接的时候,就只能写数据库所在的IP地址和端口号,而不能只写主机字符串(即本地的数据库服务名)。

 

 

 

 PS

参考资料有:

http://www.knowsky.com/385421.html

http://www.cnwebshow.com/bc/article_61379.html

http://coderdream.iteye.com/blog/493585

http://hi.baidu.com/goodoog/item/d5238575c063042fd7a89cae

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值