`
clz2008wan
  • 浏览: 7703 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Oracle OCI和Thin 连接方式的区别

阅读更多
我是今天看到tomcat数据源的配置时,想起来这个问题,刚开始还不晓得thin是什么东西!

  database.url=jdbc:oracle:thin:angel/oracle@192.168.55.11:1530:monitordb

  经过上网查询,得到如下结果:

  jdbc:oracle连接的是oracle数据库

  thin是一种方法

  angel/oracle那个angel是用户名,oracle是密码

  192.168.55.11是你要连的电脑ip

  1530是oracle的连端口(1521貌似是默认端口)

  monitordb这是数据库的名字

  下面是我转载的文章,是关于tomcat数据源中oracle的oci和thin区别:

  前几天同事跑过来跟我说, 机房中的一台tomcat服务器跟oracle数据库机连接很慢,查看控制台中的hibernate日志, 基本上是一条sql出来要等个1-2秒再出第二条。但同样的程序在他自己机器上的tomcat运行,同样是连那台数据库机器,就快很多,不会出现前面的每执行1条sql就卡一次壳的情况。

  初步分析,我就想到可能是网络原因, 机房两台机器连接不畅通, 程序和机器差的原因基本可以排除, 机房的tomcat机比我们开发机要强多了, 而且程序在他的机器上运行又没有问题。于是我就劝他到机房去检查一下网络状态, 但他一时也无法进入,因为机房的管理人员不在。

  过了一会, 他告诉我问题解决了, 把数据库访问的url更换成了oci方式就好了, oci对我来说有些陌生, 我一直是用的thin,也没想过其他连接方式。对于oci我也只能想到oracle 的client中貌似是有oci什么的,当时有其他事情也没管了。

  今天有意了解一下区别,先看看thin和oci的url写法上的区别:jdbc:oracle:thin:@server ip: service jdbc:oracle:oci:@service看来oci的还更加简洁,ip可以省掉不写了。

  接下来再找找oci和thin的其他区别,发现有如下解释:引用

  Oracle provides four different types of JDBC drivers, for use in different deployment scenarios. The 10.1.0 drivers can access Oracle 8.1.7 and higher. While all Oracle JDBC drivers are similar, some features apply only to JDBC OCI drivers and some apply only to the JDBC Thin driver.

  JDBC OCI client-side driver: This is a JDBC Type 2 driver that uses Java native methods to call entrypoints in an underlying C library. That C library, called OCI (Oracle Call Interface), interacts with an Oracle database. The JDBC OCI driver requires an Oracle client installation of the same version as the driver.

  The use of native methods makes the JDBC OCI driver platform specific. Oracle supports Solaris, Windows, and many other platforms. This means that the Oracle JDBC OCI driver is not appropriate for Java applets, because it depends on a C library.

  Starting from 10.1.0, the JDBC OCI driver is available for install with the OCI Instant Client feature, which does not require a complete Oracle client-installation. Please refer to Oracle Call Interface for more information.

  JDBC Thin client-side driver: This is a JDBC Type 4 driver that uses Java to connect directly to Oracle. It implements Oracle's SQL*Net Net8 and TTC adapters using its own TCP/IP based Java socket implementation. The JDBC Thin driver does not require Oracle client software to be installed, but does require the server to be configured with a TCP/IP listener.

  Because it is written entirely in Java, this driver is platform-independent. The JDBC Thin driver can be downloaded into any browser as part of a Java application. (Note that if running in a client browser, that browser must allow the applet to open a Java socket connection back to the server.)

  JDBC Thin server-side driver: This is another JDBC Type 4 driver that uses Java to connect directly to Oracle. This driver is used internally within the Oracle database. This driver offers the same functionality as the client-side JDBC Thin driver (above), but runs inside an Oracle database and is used to access remote databases.

  Because it is written entirely in Java, this driver is platform-independent. There is no difference in your code between using the Thin driver from a client application or from inside a server.

  连接方式有以下几种:

  Oralce provides four types of JDBC driver.

  Thin Driver, a 100% Java driver for client-side use without an Oracle installation, particularly with applets. The Thin driver type is thin. To connect user scott with password tiger to a database with SID (system identifier) orcl through port 1521 of host myhost, using the Thin driver, you would write :Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@myhost:1521:orcl", "scott", "tiger");

  OCI Driver for client-side use with an Oracle client installation. The OCI driver type is oci. To connect user scott with password tiger to a database with SID (system identifier) orcl through port 1521 of host myhost, using the OCI driver, you would write :Connection conn = DriverManager.getConnection("jdbc:oracle:oci:@myhost:1521:orcl", "scott", "tiger");

  Note that you can also specify the database by a TNSNAMES entry. You can find the available TNSNAMES entries listed in the file tnsnames.ora on the client computer from which you are connecting. For example, if you want to connect to the database on host myhost as user scott with password tiger that has a TNSNAMES entry of MyHostString, enter:Connection conn = DriverManager.getConnection("jdbc:oracle:oci8:@MyHostString","scott","tiger");

  If your JDBC client and Oracle server are running on the same machine, the OCI driver can use IPC (InterProcess Communication) to connect to the database instead of a network connection. An IPC connection is much faster than a network connection. Connection conn = DriverManager.getConnection("jdbc:oracle:oci8:@","scott","tiger");

  Server-Side Thin Driver, which is functionally the same as the client-side Thin driver, but is for code that runs inside an Oracle server and needs to access a remote server, including middle-tier scenarios. The Server-Side Thin driver type is thin and there is no difference in your code between using the Thin driver from a client application or from inside a server. Server-Side Internal Driver for code that runs inside the target server, that is, inside the Oracle server that it must access. The Server-Side Internal driver type is kprb and it actually runs within a default session. You are already "connected". Therefore the connection should never be closed. To access the default connection, write:DriverManager.getConnection("jdbc:oracle:kprb:");or:DriverManager.getConnection("jdbc:default:connection:");

  You can also use the Oracle-specific defaultConnection() method of the OracleDriver class which is generally recommended:OracleDriver ora = new OracleDriver();Connection conn = ora.defaultConnection();

  Note: You are no longer required to register the OracleDriver class for connecting with the Server-Side Internal driver, although there is no harm in doing so. This is true whether you are using getConnection() or defaultConnection() to make the connection. Any user name or password you include in the URL string is ignored in connecting to the server default connection. The DriverManager.getConnection() method returns a new Java Connection object every time you call it. Note that although the method is not creating a new physical connection (only a single implicit connection is used), it is returning a new object. Again, when JDBC code is running inside the target server, the connection is an implicit data channel, not an explicit connection instance as from a client. It should never be closed.

  这下基本明白了1)从使用上来说,oci必须在客户机上安装oracle客户端或才能连接,而thin就不需要,因此从使用上来讲thin还是更加方便,这也是thin比较常见的原因。

  2)原理上来看,thin是纯java实现tcp/ip的c/s通讯;而oci方式,客户端通过native java method调用c library访问服务端,而这个c library就是oci(oracle called interface),因此这个oci总是需要随着oracle客户端安装(从oracle10.1.0开始,单独提供OCI Instant Client,不用再完整的安装client)

  3)它们分别是不同的驱动类别,oci是二类驱动, thin是四类驱动,但它们在功能上并无差异。

  4)虽然很多人说oci的速度快于thin,但找了半天没有找到相关的测试报告。
分享到:
评论

相关推荐

    Java用OCI驱连Oracle数据库的实现方法

    在Java连接Oracle数据库时,主要通过两种类型的驱动程序:OCI和Thin。OCI是Oracle提供的本地库接口,它提供了一种高效、低延迟的方式与Oracle数据库交互,特别适合于需要高性能的应用场景。而Thin驱动则是一种纯Java...

    jdbc-oracle-thinjdbc-oracle-thin

    其中,Oracle 提供了两种主要类型的 JDBC 驱动:JDBC-Oracle-Thin 和 OCI(Oracle Call Interface)驱动。本文主要关注的是 JDBC-Oracle-Thin 驱动。 ##### 1.1 JDBC-Oracle-Thin 的定义 JDBC-Oracle-Thin 驱动是...

    ojdbc14.zip

    oracle的oci和thin连接的区别 1)从使用上来说,oci必须在客户机上安装oracle客户端或才能连接,而thin就不需要,因此从使用上来讲thin还是更加方便,这也是thin比较常见的原因。 2)原理上来看,thin是纯java实现...

    Oracle数据库连接详细说明

    Oracle数据库是企业级广泛应用的关系型数据库系统,连接Oracle数据库的方式有多种,主要涵盖JDBC的三种方式:OCI方式、thin方式以及JdbcOdbc桥接...理解这些连接方式对于有效地管理和优化Oracle数据库的访问至关重要。

    Java连接Oracle数据库的各种方法

    Oracle8i提供了三种类型的JDBC驱动:JDBC OCI、JDBC Thin和JDBC KPRB。JDBC OCI类似于传统的ODBC驱动,需要客户端软件支持;JDBC Thin通过Java套接字直接与数据库通信,不需要额外的客户端软件;JDBC KPRB主要用于...

    JDBC连接Oracle和SQL Server数据库探析.pdf

    总的来说,JDBC连接Oracle和SQL Server数据库主要涉及以下知识点:JDBC API的使用,两种数据库连接方式的实现及区别(Oracle的OCI和thin方式),驱动类的加载,连接字符串的配置,以及连接池的概念与使用。...

    JDBC连接oracle和mysql的jar包

    JDBC(Java Database Connectivity)是Java编程语言中用于与各种数据库进行交互的一种标准接口。它由Sun Microsystems开发并成为...在实际开发中,还需要结合具体业务需求和性能要求,选择合适的连接方式和优化策略。

    oracle的驱动连接包8.0版本

    这些JAR文件包含了与Oracle 8.0数据库通信所需的类和资源,例如`oracle.jdbc.OracleDriver`,这是Oracle JDBC驱动的主类,需要在Java程序中注册以建立数据库连接。 在项目中使用这个驱动包时,你需要将其添加到项目...

    连接Oracle所须jar包

    首先,Oracle JDBC驱动主要有两种类型: Thin driver 和 OCI driver。Thin driver 是一种纯Java实现,无需Oracle客户端软件即可运行,适用于网络连接。而OCI driver 需要Oracle客户端安装,它依赖于本地的Oracle库,...

    oracle 10.1和10.2的JDBC驱动

    在 Oracle 10g 版本中,提供了两种主要类型的 JDBC 驱动: Thin 驱动和 OCI(Oracle Call Interface)驱动。 1. **Thin 驱动**: - 这是一种纯 Java 实现的驱动,无需 Oracle 客户端软件。它直接通过 TCP/IP 与...

    Java连接Oracle数据库的各种方法.doc

    在Java编程中,连接Oracle数据库是常见的任务,Oracle提供了多种方式来实现这一目标。本文主要探讨的是Java连接Oracle数据库的...开发者可以根据项目需求选择适合的连接方式,并确保正确配置环境以实现高效的数据交互。

    java连接oracle的驱动和示例

    4. JDBC Universal Driver:这是一种多协议驱动,支持所有Oracle数据库连接方式。 在Java中连接Oracle数据库,首先需要在项目中引入Oracle的JDBC驱动库,通常是ojdbc.jar或ojdbc6.jar等。确保驱动库已添加至项目的...

    JDBC连接oracle数据库.doc

    标题和描述均提到了“JDBC连接oracle数据库”,这表明文档主要关注于如何使用Java Database Connectivity (JDBC)技术来连接Oracle数据库。JDBC是一种用于执行SQL语句的Java API,它为Java应用程序提供了标准的数据库...

    JDBC连接oracle数据库.pdf

    2. **OracleJDBC的THIN方式**:这是一种纯Java的连接方式,无需在应用程序服务器上安装Oracle客户端。这种方式适用于跨平台的应用,提高了部署灵活性。 #### 三、环境配置 在使用THIN方式进行连接前,需要进行相应...

    连接oracle需要的包

    Oracle数据库是世界上最流行的关系型数据库管理系统之一,广泛应用于...请根据你的具体需求选择合适的连接方式,并确保遵循最佳实践来确保连接的安全和稳定。如果你在连接过程中遇到任何问题,可以寻求进一步的帮助。

    Jsp JDBC连接MsSQL/MYSQL/Oracle各种数据库代码集.rar

    Jsp JDBC连接MsSQL/MYSQL/Oracle各种数据库代码集,采用多种方式连接各种常用的数据库:  1.连接ACCESS  http://127.0.0.1:8080/Access/access.jsp    2.连接SQL Server2000  ...

    java连接oracle的数据库驱动

    在本场景中,我们重点关注Thin驱动,因为它是最常用且轻量级的连接方式,无需在客户端安装Oracle客户端软件。 首先,我们需要了解JDBC(Java Database Connectivity),它是一种Java API,允许Java应用程序与各种...

    ORACLE数据库连接[参照].pdf

    Oracle 数据库连接方式主要有三种:ODBC、JDBC 和 OLE DB。ODBC(Open Database Connectivity)是一种标准的数据库连接接口,允许不同的应用程序访问不同的数据库管理系统。JDBC(Java Database Connectivity)是一...

    oracle驱动ojdbc678oracle11g

    Oracle JDBC驱动提供了多种类型的驱动,包括 Thin、OCI、JDBC-ODBC Bridge 和 Native Protocol 驱动,其中ojdbc6对应的是Thin驱动,这是一种纯Java实现,无需Oracle客户端软件即可运行,适用于跨平台的分布式环境。...

    oracle11g JDBC驱动jar包+java测试案例

    总之,Oracle 11g JDBC驱动为Java开发者提供了一种便捷的方式来访问和操作Oracle数据库。了解其基本使用方法,结合提供的测试案例,将有助于提升开发者的数据库编程能力。在实际工作中,还需要注意性能优化、事务...

Global site tag (gtag.js) - Google Analytics