访问 Oracle 数据库的实例描述

数据库 Oracle
本文主要讲述的是再安装Oracle 数据库时瘦驱动程序是如何进行实际运行的,如果你对其感兴趣的话,以下的文章就可以满足你的兴趣。

如果你要使用本文中所给出的相关示例来访问 Oracle 数据库,那么你的开发计算机上就需要安装下面的软件组件(请参见“下载”portlet 以获得链接):即支持 JDK 1.6 的 Oracle JDBC 瘦驱动程序 。

Oracle 通用连接池库

Oracle JDBC 瘦驱动程序是一个 Type IV JDBC 驱动程序,这意味着它独立于平台,并且在与 Oracle 数据库交互的客户端上不需要任何额外的 Oracle 软件。因此,您可以从 JDBC 驱动程序下载页面下载包含相应瘦驱动程序版本类别的 JAR 文件,然后将该驱动程序安装在您的计算机上,无需安装/升级任何其他的 Oracle 软件。

要安装该驱动程序,您只需将其 JAR 文件复制到本地文件系统,然后将这些 JAR 的路径包括在 CLASSPATH 环境变量中。例如,您可能包括以下路径:

ORACLE_HOME/jdbc/lib/ojdbc6.jar ORACLE_HOME/jlib/orai18n.jar
如果您的计算机上已经安装了 Oracle 数据库,则瘦驱动程序也已经随 Oracle 数据库安装到您的计算机上。

但是,由于瘦驱动程序独立于任何其他 Oracle 软件,因此您可以通过使用相应的 JAR 文件(可以在 JDBC 驱动程序下载页面找到)轻松升级到该驱动程序的***版本。

UCP 是从 11.1.0.7 版开始引入 Oracle 数据库 11g 的一个新特性。该特性从 Oracle 应用服务器 11g 第 1 版开始就包含在 Oracle 应用服务器中。如果您使用的是未装载 UCP 的 JAR 文件(名为 ucp.jar)的旧版本软件,或者您希望升级到***的 UCP 版本,可以从 Oracle 数据库 UCP 下载页面获取 ucp.jar。

该程序包包含 UCP 的类,以便于将其包括在类路径中来启用该特性。所包括的路径可能如下所示:

ORACLE_HOME/ucp/lib/ucp.jar

使用 UCP 缓存 JDBC 连接

如果您要开发数据库密集型应用程序,可能会因使用连接池获益。因为这样您能够重用连接,而不是在每次请求连接时都重新创建一个新连接。连接池节约了创建新数据库连接所需的资源,并提高了应用程序的性能,因为创建新连接始终是一个性能密集型操作。

Oracle Universal Connection Pool for JDBC 表示一个用于缓存 JDBC 连接的全功能实现。UCP 是一个非常有用的特性,它将使您可以重用连接对象,从而可以提高获取连接过程的速度并节约打开新数据库连接所需的资源。

假设您希望创建一个 UCP JDBC 连接池来重用到 HR/HR Oracle 数据库示例模式的已建立连接。以下程序是一个 UCP JDBC 连接池实际运行的简单示例,将向您展示如何完成此操作。您将首先创建一个支持池的数据源实例,然后设置连接和池的属性。完成后,您将从池中借用一个连接,然后使用该连接与数据库交互。***,您将关闭该连接,将其返回到池。

  1. import java.sql.*; import oracle.ucp.jdbc.PoolDataSourceFactory; 
    import oracle.ucp.jdbc.PoolDataSource; 
    public class UcpConnection { public static void main(String args[]) 
    throws SQLException 
    { try { //Creating a pool-enabled data source PoolDataSource 
    pds 
    PoolDataSourceFactory.getPoolDataSource(); 
    //Setting connection properties of the data source pds.
    setConnectionFactoryClassName("oracle.jdbc.pool.OracleDataSource"); 
    pds.setURL("jdbc:oracle:thin:@//localhost:1521/XE"); pds.setUser("hr"); 
    pds.setPassword("hr"); //Setting pool properties pds.setInitialPoolSize(5); 
    pds.setMinPoolSize(5); pds.setMaxPoolSize(10); 
    //Borrowing a connection fro th oo Connection 
    con = pds.getConnection();  
  2. ount(); System.out.println("\nAvailable connections: " + avlConnCount); 
    int 
    brwConnCount = pds.getBorrowedConnectionsCount(); 
    System.out.println("\nBorrowed connections: " + brwConnCount); 
    //Working with the connection Statement 
    stmt = conn.createStatement(); 
    ResultSet 
    rs = stmt.executeQuery("select user from dual"); 
    while(rs.next()) System.out.println("\nConnected as: "+rs.getString(1)); 
    rs.close(); //Returning the connection to the pool conn.close(); 
    conn=null
    System.out.println("\nConnection returned to the pool"); 
    //Checking the number of available and borrowed connections again 
    avlConnCount = 
    pds.getAvailableConnectionsCount(); 
    System.out.println("\nAvailable connections: " + avlConnCount); 
    brwConnCount = pds.getBorrowedConnectionsCount(); 
    System.out.println("\nBorrowed connections: " + brwConnCount); } 
    catch(SQLException e) { System.out.println("\nAn SQL exception occurred : " + e.getMessage()); } } } 

这里值得注意的是关闭连接时的变化。以上程序的输出阐释了关闭从 UCP JDBC 连接池中借用的连接将使该连接返回到池,以供下一次连接请求使用。

该应用程序的输出应如下所示:

  1. Connection borrowed from the poolAvailable connections: 
    4Borrowed connections: 1Connected as: 
    HRConnection returned to the poolAvailable 
    connections: 5Borrowed connections: 0 


使用 JNDI 借用连接
您还可以提前创建支持池的数据源并将其绑定到 Java 命名和目录接口 (JNDI) 上下文和逻辑名称,而不是像在之前的示例中那样即时创建。将数据源注册到 JNDI 后,可以通过执行 JNDI 查找(指定与数据源绑定的 JNDI 名称)来获取其实例。

假设您要注册一个支持池的数据源以重用到 HR/HR 数据库模式的连接,并将该数据源与 JNDI 树中的逻辑名称 jdbc/HRPool 相关联。为此,必须创建一个表示上述数据源的 PoolDataSource 对象,设置其属性,然后将其注册到一个 JNDI 命名服务。使用以下 Java 程序可以完成此操作:

  1. import oracle.ucp.jdbc.PoolDataSourceFactory; 
    import oracle.ucp.jdbc.PoolDataSource; import javax.naming.*; 
    import java.util.Hashtable; public class JNDIRegister 
    { public static void main(String argv[]) 
    { try { //Creating a pool-enabled data source instance and 
    setting its properties PoolDataSource 
    pds = PoolDataSourceFactory.
    getPoolDataSource(); pds.setConnectionFactoryClassName
    ("oracle.jdbc.pool.OracleDataSource"); pds.setURL
    ("jdbc:oracle:thin:@//localhost:1521/XE"); 
    pds.setUser("hr"); pds.setPassword("hr"); 
    pds.setInitialPoolSize(5); pds.setMinPoolSize(5); 
    pds.setMaxPoolSize(10); //Registering the data source with 
    JNDI Hashtable 
    env = new Hashtable(); 
    env.put(Context.INITIAL_CONTEXT_FACTORY,"
    com.sun.jndi.fscontext.RefFSContextFactory"); 
    Context 
    ctx = new InitialContext(env); 
    ctx.bind("jdbc/HRPool", pds); } catch 
    (Exception e) { System.out.println(e); } } } 

必须先设置 Sun 的文件系统 JNDI 服务提供程序(可在此处下载),然后才能运行此程序。确保将以下 JAR 文件添加到类路径中,

【编辑推荐】

  1. Oracle动态Web开发实例演示
  2. 转移Oracle海量数据到另外的用户流程
  3. Oracle进程中出现带锁状况的解决
  4. Oracle内存结构里Process Memory实际操作步骤
  5. 用Oracle屏蔽英文来提示信息的正确方法
责任编辑:佚名 来源: 互联网
相关推荐

2010-04-13 10:55:35

Oracle数据库

2010-04-09 10:32:03

Oracle 数据库

2009-09-15 10:02:44

Linq to SQL

2010-04-26 09:10:09

Oracle数据库

2010-04-22 16:16:35

Oracle数据库

2011-05-19 13:25:14

Oracle数据库

2010-04-15 08:57:29

Oracle数据库

2010-04-16 16:09:41

Oracle数据库

2010-04-14 10:56:07

Oracle数据库

2011-03-29 10:47:49

ORACLE数据库

2011-04-13 14:07:17

OracleSybase数据库

2010-04-06 11:30:09

Oracle 数据库

2010-04-15 09:27:37

Oracle数据库

2010-04-15 10:51:52

2010-04-08 18:54:32

Oracle数据库

2011-03-07 17:51:00

Oracle数据库优缺点

2010-04-09 13:59:48

Oracle数据库索引

2010-04-19 11:30:34

Oracle数据库

2010-04-14 17:57:52

Oracle数据库

2011-07-05 16:08:10

点赞
收藏

51CTO技术栈公众号