`
xiangxingchina
  • 浏览: 520272 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracle连接池配置 oci

 
阅读更多

这些细节包括:
1、导入JDBC包
2、注册oracle JDBC驱动程序
3、打开数据库连接
4、执行SQL DML语句在数据库表中获取、添加、修改和删除行
 

一、JDBC驱动程序
    共有有4种
1、Thin驱动程序
     Thin驱动程序是所有驱动程序中资源消耗最小的,而且完全用java编写的。
     该驱动程序只使用TCP/IP且要求Oracle Net。被称为第4类驱动程序。
     它使用TTC协议与Oracle数据库进行通信。能够在Applet、Application中使用。
2、OCI驱动程序
     OCI驱动比Thin需要资源要多,但性能通常好一点。OCI驱动适合于部署在
     中间层的软件,如Web服务器。不能在applet中使用OCI驱动。是第2类驱动程序。
     不完全用java写的,还包含了c代码。该驱动有许多附加的性能增强特性,
     包括高级的连接缓冲功能。
     注意: OCI驱动要求在客户计算机上安装它。
3、服务器内部驱动程序
     服务器内部驱动程序提供对数据库的直接访问,Oracle JVM使用它与数据库进行通信。
     Oracle JVM是与数据库集成的Java Virtual Machine,可以使用Oracle JVM将
     Java类装载进数据库,然后公布和运行这个类中包含的方法。
4、服务器Thin驱动程序
     服务器端Thin驱动程序也是由Oracle JVM使用的,它提供对远程数据库的访问。
     也是完全用Java编写的。

二、导入JDBC包

三、注册Oracle JDBC驱动程序
       必须先向java程序注册Oracle JDBC驱动程序,然后才能打开数据库连接。
       有两种注册Oracle JDBC驱动程序的办法。
 1、使用java.lang.Class的forName()方法
       例子:Class.forName("oracle.jdbc.OracleDriver");
 2、使用JDBC DriverManager类的registerDriver()方法。
       例子:DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
       如果使用Oracle8i JDBC驱动程序,那么需要导入oracle.jdbc.driver.OracleDriver类,
       然后注册这个类的实例。
       例子:
       import oracle.jdbc.driver.OracleDriver;
       DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
       注意 :从JDBC2.0开始,只用JDBC驱动程序的更标准办法是通过数据源。
四、打开数据库连接
        必须先打开数据库连接,然后才能在Java程序中执行SQL语句。打开数据库连接
        的主要办法。
 1、DriverManager类的getConnection()方法。
      DriverManager.getConnection(URL,USERNAME ,PASSWROD );
          URL :程序要连接的数据库,以及要使用的JDBC驱动程序
              URL的结构依赖于JDBC驱动程序的生产商。对于Oracle JDBC驱动程序,数据库URL的结构:
                   driver_name@driver_information
                      driver_name 是程序使用的Oracle JDBC驱动程序的名称。如:
                           jdbc:oracle:thin Oracle JDBC Thin驱动程序
                           jdbc:oracle:oci  Oracle JDBC OCI驱动程序
                           jdbc:oracle:oci8 Oracle JDBC OCI驱动程序
                      driver_information 是连接数据库所需的驱动程序特有的信息。这依赖于使用的驱动程序。
                          对于Oracle JDBC Thin驱动程序,可以用
                           host_name:port:database_sid 或者 Oracle Net关键字-值对
                           (description=(address=(host=host_name)(protocol=tcp)(port=port()
                           (connect_data=(sid=database_sid)))
                                    host_name: 运行数据库的机器的名称
                                              port: Net数据库监听器等待这个端口上的请求,默认是1521
                                 database_sid: 要连接的数据库实例的Oracle SID。
        USERNAME :   程序连接数据库时使用的数据库用户名
        PASSWROD :   用户名的口令
                        例子:
                              Connection myConnection=DriverManager.getConnection(
                              "jdbc:oracle:thin:@localhost:1521:ORCL",
                              "store_user",
                              "store_password");

                              Connection myConnection=DriverManager.getConnection(
                              "jdbc:oracle:oci:@(description=(address=(host=localhost)"+
                              "(protocol=tcp)(port=1521))(connect_data=(sid=ORCL)))",
                              "store_user",
                              "store_password");
 2、使用Oracle数据源对象,必须先创建这个对象,然后连接它。使用这种方法
       采用了一种设置数据库连接信息的标准化方式,Oracle数据源对象可以与
       Java Naming and Directory Interface(Java名字与目录接口,JNDI)一起使用。(

OCI驱动详细:

 摘要 :配置java web应用使用OCI驱动来访问oracle数据库,如果在tomcat下有多个应用,且每个应用都要访问oracle数据库时的注意项事。Oracle的即时客户端配置等。

   公司各种产品的前端、后端差不多都是用java开发的Web应用且运行在tomcat里。根据oracle的说法,java程序连接oracle数据库 时,用oci驱动要比用thin驱动性能好些。主要的区别是使用thin驱动时,不需要安装oracle的客户端,而使用oci时则要安装oracle的 客户端。

  从使用thin驱动切换到oci驱动在配置来说很简单,只需把连接字符串java:oracle:thin:@hostip:1521:实例名换为java:oracle:oci@本地服务名即可。如:

  从

   jdbc:oracle:thin:@10.1.1.2:1521:shdb

  改成

   jdbc:oracle:oci8:@shdb

  但这里这台机需安装oracle数据库的客户端并配置本地服务名,同时还需指定 NLS_LANG环境变量,NLS_LANG环境变量是用来控制客户端在显示oracle数据库的数据时所用的字符集和本地化习惯。通常把 NLS_LANG的字符集部分指定为数据库所用的字符集则就不会存在java显示的乱码问题了。

  对于oracle数据库客户端的安装,有二种选择,一是老实的用oracle数据库的安装光盘安装对应版本的oracle客户端。二是下载oracle提从的即时客户端,即时客户端是不用安装的,把下载包解压即可。

  要使java web正常的通过oci驱动访问oracle,还需要客户端正确的配置一下相关变量。主要如下:

  对于windows系统并使用oracle客户端时:

  1. 把%ORACLE_HOME%/lib加到PATH环境变量.

  2. 把%ORACLE_HOME%/jdbc/lib/classes12.jar加到CLASSPATH环境变量里.也可以把classes12.jar拷贝到tomcat的comman/lib目录下。

  对于windows系统并使用oracle的即时客户端时(假定即时客户端解压在d盘):

  1. 把d:/instantclient_10_2加到PATH环境变量

  2. 把d:/instantclient_10_2/classes12.jar加到CLASSPATH环境变量里.也可以把classes12.jar拷贝到tomcat的comman/lib目录下。

  对于linux系统并使用oracle客户端时:

  1. 在使用tomcat的用户主目录下的.bash_profile文件中加入

  exprot ORACLE_HOME=/u01/app/oracle/product/9.2.0.4

  export LD_LIBRARY_PATH=$ORACLE_HOME/lib

  2. 把classes12.jar拷贝到tomcat的comman/lib目录下。

  对于linux系统并使用oracle即时客户端时:

  1. 在使用tomcat的用户主目录下的.bash_profile文件中加入

  exprot ORACLE_HOME=/instantclient_10_2

  export LD_LIBRARY_PATH=$ORACLE_HOME/lib

  2. 把instantclient_10_2目录下的classes12.jar拷贝到tomcat的comman/lib目录下。

   如果一个tomcat下带了几个应用,且几个应用都要连接oracle数据库时,则要注意的时,不要在每个应用的WEB-INF/lib目录下放入 oracle的classes12.jar/zip文件。而应该把classes12.jar/zip文件放到tomcat的common/lib目录 下。否则会出来ojdbclib9/10库重复加载的错误。

  使用oracle即时客户端是,本地服务名的建立可以在目录instantclient_10_2下建立tnsnames.ora下添加连接串,如:

  SHDB =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.1.236)(PORT = 1521)))
  (CONNECT_DATA =(SERVICE_NAME = shdb)))

  即可 

 

分享到:
评论

相关推荐

    oracle 数据库,在C++中用连接池实现高速连接与访问.rar

    四、在C++中实现Oracle连接池 1. 初始化:首先,需要初始化环境和会话,设置必要的参数,如数据库服务器地址、端口、用户名、密码等。 2. 创建连接池:通过oci池化函数ociPoolCreate创建连接池,指定最小、最大连接...

    OracleOCI连接数据库使用

    6. **性能和优化**:OCI提供了连接池(Connection Pooling)功能,可以通过管理多个预分配的数据库连接来提高性能并减少资源消耗。此外,了解如何正确设置Oracle的性能参数也是很重要的。 7. **安全考虑**:在使用...

    OCI、OTL操作Oracle数据库类 带数据库连接池

    个人开发的通过OCI、OTL操作Oracle数据库类,其改版已成功应用在商业项目中,经观察很稳定,支持批量导入记录,实际应用中个人PC上3秒大概可存储12000条记录。...另外数据库连接池中的连接数注意根据实际需要进行修改!

    oracle oci11g下载

    6. **连接池**:支持连接池技术,有效管理和重用数据库连接,降低资源消耗。 7. **游标**:支持服务器端和客户端的游标,使得应用程序能够执行多次提取和更新操作。 8. **LOB(Large Object)支持**:处理大对象...

    oracle最新OCI文件.zip

    Oracle OCI提供了全面的API,用于执行SQL语句、处理游标、管理事务、处理数据库事件以及进行连接池管理等。通过OCI,开发者可以直接访问Oracle数据库的低级别功能,实现高效的数据操作和复杂的数据库应用开发。 在...

    C#调用oci直连Oracle

    7. **性能优化**:虽然oci.dll提供了直接的数据库访问,但相比ODP.NET,它的性能可能略逊一筹,因为缺乏高级功能如连接池。为了提高性能,可以考虑手动实现连接池管理。 8. **兼容性和版本问题**:oci.dll与Oracle...

    OCI连接oracle数据库(c++)实现

    总之,使用C++和OCI连接Oracle数据库涉及多个步骤,包括环境配置、连接初始化、SQL执行、结果处理和资源释放。通过封装好的C++类,可以极大地提高开发效率,减少出错的可能性。理解这些基本概念和操作流程是成功实现...

    ORACLE_OCI.rar_OCI oracle_oci_oracle_oracle oci

    8. 高级特性:可能涉及连接池管理、并发控制、LOB处理、事件和通知、XML处理等高级主题。 9. 示例代码:通常,教程会包含丰富的示例代码,帮助读者理解并实践上述概念。 “www.pudn.com.txt”文件可能是发布者提供...

    oci.rar_ oci_OCI oracle_oci c_oci c_oci linux

    7. **连接池管理**:如何创建和管理连接池以提高资源利用率。 8. **数据类型映射**:Oracle数据库中的数据类型如何映射到C语言的数据类型。 9. **游标和结果集处理**:如何使用 OCI 函数获取和遍历查询结果。 10....

    ORACLE OCI lib和头文件

    9. **连接池管理**:如果需要,可以使用Oracle的Connection Pooling(OCIPool)特性来管理多个会话,提高性能和效率。 10. **事务控制**:利用`OCITransCommit`、`OCITransRollback`进行事务的提交和回滚。 Oracle...

    Oracle-Driver(支持c3p0等连接池)

    在OracleC3P0-Connector.jar文件中,包含了实现Oracle数据库连接池功能所需的类和资源。这些类通常包括了数据库连接的创建、管理、回收等核心逻辑,通过c3p0的配置,可以实现数据库连接的复用,避免频繁创建和关闭...

    oci连接oracle

    - 考虑到性能和并发性,适当使用连接池(Connection Pooling)可以有效管理数据库连接。 oci连接Oracle是一个复杂的主题,需要理解Oracle数据库的工作原理和C++编程。`dbconn.cpp`和`dbconn.h`的实现将封装这些...

    Oracle OCI API封装类Oracle OCI API封装类

    这涉及到了oci_logon()和oci_logoff()函数,以及可能的连接池管理。 2. **SQL语句执行**:通过oci_stmt_prepare()和oci_execute()等函数,封装类可以执行SQL查询、DML语句,甚至存储过程。同时,可能会有参数绑定和...

    Oracle官方文档CHM合集-OCI程序员参考手册

    10. 数据库连接池:oci_pconnect()和oci_pool_connect()用于使用连接池,减少连接创建和销毁的开销,提高系统效率。 这个CHM合集不仅包含了OCI的基本使用方法,还可能涵盖了oci子程序的详细描述、示例代码、最佳...

    c#封装oracle的OCI

    在IT行业中,C#是一种广泛使用的面向对象的编程语言,尤其在开发Windows应用...在实际开发中,可以根据项目需求进一步扩展和优化这个封装库,例如添加连接池管理、事务控制、性能监控等功能,以满足更复杂的应用场景。

    ORACLE OCI 常用函数_oracle_C++_oci_

    - `OCISessionPoolCreate` 和 `OCISessionPoolDestroy`:创建和销毁会话池,实现连接复用,提高性能。 2. **游标(Statement)管理**: - `OCIServerAttach` 和 `OCIServerDetach`:附加和分离到服务器实例。 - ...

    navicat oracle oci 32(64通用)位 oci.dll

    综上所述,oci.dll是Navicat与Oracle数据库通信的关键组件,它的正确配置和使用对于确保Navicat的Oracle连接功能正常运行至关重要。在遇到相关问题时,应首先检查oci.dll的版本、位置和权限设置,以确保其能正常工作...

    OCI,oracle 总结资料

    13. **连接池**:OCI连接池(Connection Pooling)可以管理多个数据库连接,提高资源利用率,减少连接建立和释放的开销。 文档"OCI操作oracle数据库.doc"可能详细介绍了如何使用OCI与Oracle数据库进行交互,"Oracle...

    基于OCI的跨平台的oracle数据库读取类

    这个封装可能包含了一些特定的错误处理机制、连接池管理、事务控制策略以及数据转换等功能,以适应实际项目的特定需求。通过下载和使用KOracle,开发者可以直接应用这些预设的功能,减少开发时间和工作量。 在Linux...

    oracle连接需要的驱动

    标题提到的"oracle连接需要的驱动"指的是Oracle JDBC驱动,它允许Java应用程序通过JDBC(Java Database Connectivity)接口与Oracle数据库进行通信。 Oracle JDBC驱动主要有四种类型: 1. ** Thin Driver (jdbc:...

Global site tag (gtag.js) - Google Analytics