- 浏览: 523560 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (422)
- 重要 (12)
- BUG解决备忘录 (32)
- 环境搭建 (17)
- 开源组件 (4)
- 数据库 (16)
- 设计模式 (4)
- 测试 (3)
- javascript (5)
- Android (14)
- jdk相关 (9)
- struts2 (10)
- freemark (3)
- 自定义扩展及工具类 (5)
- jdk5新特性及java基础 (13)
- ssh及其他框架 (15)
- linux (32)
- tcp-ip http协议 (8)
- 服务器集群与负载均衡 (34)
- 项目管理相关 (11)
- 实用小技术 (10)
- 架构相关 (14)
- firefox组件 (11)
- spider (6)
- 产品设计 (11)
- PHP (1)
- ws (4)
- lucene (10)
- 其他 (2)
- BI (1)
- NoSQL (3)
- gzip (1)
- ext (4)
- db (6)
- socket (1)
- 源码阅读 (2)
- NIO (2)
- 图片处理 (1)
- java 环境 (2)
- 项目管理 (4)
- 从程序员到项目经理(一):没有捷径 (1)
- bug (1)
- JAVA BASE (8)
- 技术原理 (0)
- 新框架新技术 (1)
- 量化与python (1)
- 系统编程 (0)
- C语言 (0)
- 汇编 (0)
- 算法 (0)
最新评论
-
hyspace:
别逗了,最后一个算法根本不是最优的,sort(function ...
数组去重——一道前端校招试题 -
washingtin:
楼主能把策略和路由的类代码贴出来吗
Spring + iBatis 的多库横向切分简易解决思路 -
sdyjmc:
初略看了一下,没有闹明白啊,均衡负载使用Nginx,sessi ...
J2EE集群原理 I -
shandeai520:
谢谢大神!请教大神一个问题:假如我有三台服务器,连接池的上限是 ...
集群和数据库负载均衡的研究 -
hekuilove:
给lz推荐一下apache commonsStringUtil ...
request 获取 ip
这些细节包括:
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)))
即可
发表评论
-
存储过程
2013-02-15 18:44 775CREATE DEFINER=`root`@`loca ... -
(转)PowerDesigner 连接oracle表与数据库中的表导入到PowerDesigner中
2011-10-11 09:55 1342PowerDesigner 连接oracle直接生成数据库中的 ... -
Oracle数据导入导出imp/exp命令 10g以上expdp/impdp命令
2011-09-27 14:51 874Oracle数据导入导出imp/e ... -
MySql性能的检查和调优方法
2011-03-06 04:30 849转自:http://www.sudone.com/ ... -
关系数据库还是NoSQL数据库
2011-02-12 22:24 1037上一篇 简单的说明了 ... -
NoSQL开篇——为什么要使用NoSQL
2011-02-12 22:22 937非常荣幸能受邀在Inf ... -
两个库数据对copy
2010-12-08 10:10 859insert into lxx2.t_info_interfa ... -
Mysql 数据库缓存cache功能总结[转]
2010-12-01 21:28 3050mysql cache功能分析: 1 mysql的ca ... -
MySQL集群简介与配置详解
2010-12-01 21:05 11031. 先了解一下你是否应该用MySQL集群。 减少数据中 ... -
MySQL集群在Ubuntu 9.0上的配置方法
2010-12-01 21:03 1173大家在网上都能找到都是RedHat系统等等,对Ubuntu系统 ... -
Oracle集群的概念
2010-12-01 20:50 1418大多数情况下,Oracle集群实质上就是使多个服务器访问同一个 ... -
比较经典的sql
2010-11-17 17:26 1107学生成绩表(stuscore): ... -
SQL面试题[经典收录]
2010-11-17 17:01 1232SQL面试题(1) create table tes ... -
SQL基础实例(学生课程系统)
2010-11-17 16:52 1208drop table student,course ... -
Oracle执行外部文件:
2010-11-03 10:19 1112Oracle 执行外部文件: c:>sqlplu ...
相关推荐
四、在C++中实现Oracle连接池 1. 初始化:首先,需要初始化环境和会话,设置必要的参数,如数据库服务器地址、端口、用户名、密码等。 2. 创建连接池:通过oci池化函数ociPoolCreate创建连接池,指定最小、最大连接...
6. **性能和优化**:OCI提供了连接池(Connection Pooling)功能,可以通过管理多个预分配的数据库连接来提高性能并减少资源消耗。此外,了解如何正确设置Oracle的性能参数也是很重要的。 7. **安全考虑**:在使用...
个人开发的通过OCI、OTL操作Oracle数据库类,其改版已成功应用在商业项目中,经观察很稳定,支持批量导入记录,实际应用中个人PC上3秒大概可存储12000条记录。...另外数据库连接池中的连接数注意根据实际需要进行修改!
6. **连接池**:支持连接池技术,有效管理和重用数据库连接,降低资源消耗。 7. **游标**:支持服务器端和客户端的游标,使得应用程序能够执行多次提取和更新操作。 8. **LOB(Large Object)支持**:处理大对象...
Oracle OCI提供了全面的API,用于执行SQL语句、处理游标、管理事务、处理数据库事件以及进行连接池管理等。通过OCI,开发者可以直接访问Oracle数据库的低级别功能,实现高效的数据操作和复杂的数据库应用开发。 在...
7. **性能优化**:虽然oci.dll提供了直接的数据库访问,但相比ODP.NET,它的性能可能略逊一筹,因为缺乏高级功能如连接池。为了提高性能,可以考虑手动实现连接池管理。 8. **兼容性和版本问题**:oci.dll与Oracle...
总之,使用C++和OCI连接Oracle数据库涉及多个步骤,包括环境配置、连接初始化、SQL执行、结果处理和资源释放。通过封装好的C++类,可以极大地提高开发效率,减少出错的可能性。理解这些基本概念和操作流程是成功实现...
8. 高级特性:可能涉及连接池管理、并发控制、LOB处理、事件和通知、XML处理等高级主题。 9. 示例代码:通常,教程会包含丰富的示例代码,帮助读者理解并实践上述概念。 “www.pudn.com.txt”文件可能是发布者提供...
7. **连接池管理**:如何创建和管理连接池以提高资源利用率。 8. **数据类型映射**:Oracle数据库中的数据类型如何映射到C语言的数据类型。 9. **游标和结果集处理**:如何使用 OCI 函数获取和遍历查询结果。 10....
在OracleC3P0-Connector.jar文件中,包含了实现Oracle数据库连接池功能所需的类和资源。这些类通常包括了数据库连接的创建、管理、回收等核心逻辑,通过c3p0的配置,可以实现数据库连接的复用,避免频繁创建和关闭...
9. **连接池管理**:如果需要,可以使用Oracle的Connection Pooling(OCIPool)特性来管理多个会话,提高性能和效率。 10. **事务控制**:利用`OCITransCommit`、`OCITransRollback`进行事务的提交和回滚。 Oracle...
- 考虑到性能和并发性,适当使用连接池(Connection Pooling)可以有效管理数据库连接。 oci连接Oracle是一个复杂的主题,需要理解Oracle数据库的工作原理和C++编程。`dbconn.cpp`和`dbconn.h`的实现将封装这些...
10. 数据库连接池:oci_pconnect()和oci_pool_connect()用于使用连接池,减少连接创建和销毁的开销,提高系统效率。 这个CHM合集不仅包含了OCI的基本使用方法,还可能涵盖了oci子程序的详细描述、示例代码、最佳...
在IT行业中,C#是一种广泛使用的面向对象的编程语言,尤其在开发Windows应用...在实际开发中,可以根据项目需求进一步扩展和优化这个封装库,例如添加连接池管理、事务控制、性能监控等功能,以满足更复杂的应用场景。
- `OCISessionPoolCreate` 和 `OCISessionPoolDestroy`:创建和销毁会话池,实现连接复用,提高性能。 2. **游标(Statement)管理**: - `OCIServerAttach` 和 `OCIServerDetach`:附加和分离到服务器实例。 - ...
综上所述,oci.dll是Navicat与Oracle数据库通信的关键组件,它的正确配置和使用对于确保Navicat的Oracle连接功能正常运行至关重要。在遇到相关问题时,应首先检查oci.dll的版本、位置和权限设置,以确保其能正常工作...
13. **连接池**:OCI连接池(Connection Pooling)可以管理多个数据库连接,提高资源利用率,减少连接建立和释放的开销。 文档"OCI操作oracle数据库.doc"可能详细介绍了如何使用OCI与Oracle数据库进行交互,"Oracle...
这个封装可能包含了一些特定的错误处理机制、连接池管理、事务控制策略以及数据转换等功能,以适应实际项目的特定需求。通过下载和使用KOracle,开发者可以直接应用这些预设的功能,减少开发时间和工作量。 在Linux...
标题提到的"oracle连接需要的驱动"指的是Oracle JDBC驱动,它允许Java应用程序通过JDBC(Java Database Connectivity)接口与Oracle数据库进行通信。 Oracle JDBC驱动主要有四种类型: 1. ** Thin Driver (jdbc:...
手册会详述`OCILogon`和`OCILogon2`函数的用法,以及如何管理连接池。 3. 会话管理:包括创建、切换和断开会话的API,如`OCISessionBegin`和`OCISessionEnd`。理解会话状态和事务管理是OCI编程的关键。 4. SQL执行...