oracle的oci和thin区别

合集下载

oci后缀

oci后缀

oci后缀OCI后缀是指Object Connector Interface的简称,是Oracle公司推出的一种数据库连接技术。

通过OCI,开发人员可以使用各种编程语言与Oracle数据库进行交互,实现数据的读取、写入和修改等操作。

本文将介绍OCI后缀的概念、优势以及使用方法。

一、概念介绍OCI后缀即Object Connector Interface,它是Oracle数据库提供的一种应用编程接口,用于实现程序与数据库的连接和交互。

通过OCI后缀,开发者可以使用C、C++等编程语言来编写与Oracle数据库的应用程序,实现数据的访问和操作。

二、优势分析1. 高性能:OCI后缀采用了Oracle数据库底层的C语言接口,能够直接与数据库进行交互,因此具有较高的性能优势。

相比其他的数据库连接方式,OCI可以更高效地对数据库进行读写操作,提供更好的响应速度和并发性能。

2. 数据安全:OCI后缀支持使用Oracle数据库的安全特性,如数据加密、访问控制等,可以有效保护数据库中的数据安全。

开发者可以通过OCI来实现对敏感数据的加密处理,避免数据泄露和非法访问。

3. 多语言支持:OCI后缀提供了对多种编程语言的支持,如C、C++等。

这意味着开发者可以根据自己的编程习惯和需求,选择合适的编程语言来编写与Oracle数据库的应用程序。

同时,OCI还提供了一系列的开发工具和文档,方便开发者进行开发和调试。

三、使用方法1. 安装OCI驱动程序:在开始使用OCI后缀之前,首先需要安装相应的OCI驱动程序。

可以从Oracle官方网站下载并安装最新的OCI驱动程序,根据操作系统和编程语言选择合适的版本。

2. 配置连接参数:在编写OCI应用程序时,需要正确配置连接参数。

包括数据库的地址、端口、用户名、密码等信息。

使用OCI提供的API或者相关库函数,可以方便地进行连接参数的配置和管理。

3. 连接数据库:使用OCI提供的连接函数,可以与Oracle数据库建立起连接。

oracle jdbc url 参数

oracle jdbc url 参数

oracle jdbc url 参数Oracle JDBC URL参数详解一、概述在Java应用程序中连接Oracle数据库时,需要使用JDBC(Java Database Connectivity)来进行连接和操作。

而Oracle JDBC URL(Uniform Resource Locator)是用于指定连接到Oracle数据库的地址和参数的字符串。

本文将详细介绍Oracle JDBC URL中常用的参数及其作用。

二、参数列表1. user该参数用于指定连接数据库所使用的用户名。

2. password该参数用于指定连接数据库所使用的密码。

3. url该参数用于指定连接数据库所使用的URL地址。

URL地址的格式为jdbc:oracle:thin:@host:port:SID,其中host为主机名或IP地址,port为端口号,SID为数据库的唯一标识符。

4. driverType该参数用于指定使用的Oracle驱动类型。

常用的驱动类型有thin、oci和kprb。

其中thin为使用TCP/IP协议连接数据库的驱动类型,oci为使用Oracle客户端连接数据库的驱动类型,kprb为使用Kerberos协议连接数据库的驱动类型。

5. networkProtocol该参数用于指定连接数据库所使用的网络协议。

常用的协议有TCP、TCPS和IPC。

其中TCP为使用TCP/IP协议连接数据库,TCPS为使用TCP/IP协议加密连接数据库,IPC为使用本地进程间通信连接数据库。

6. encryptionLevel该参数用于指定连接数据库时的加密级别。

常用的级别有REQUIRED、ACCEPTED和REQUESTED。

其中REQUIRED表示必须进行加密连接,ACCEPTED表示可以进行加密连接但不强制要求,REQUESTED表示请求进行加密连接但不强制要求。

7. authenticationMode该参数用于指定连接数据库时的认证模式。

Oracle数据库连接的几种方式

Oracle数据库连接的几种方式

Oracle数据库连接的⼏种⽅式⼀、本地通过JDBC获得Oracle数据库连接通过JDBC获得Oracle数据库连接,有三种⽅式:OCI⽅式、thin⽅式和JdbcOdbc桥⽅式。

OCI⽅式依赖于本地的动态链接库,如果在本地安装了Oracle数据库客户端可以采⽤该⽅式;⽽thin⽅式为纯java的数据库连接⽅式;JdbcOdbc桥⽅式依赖于本地ODBC数据库源的配置,这种⽅式⼀般不太被采⽤。

1、OCI⽅式 先在本地安装Oracle客户端,安装完之后,在安装的路径中可以找到…/jdbc/lib/classes12.zip⽂件,我们在环境变量classpath中设置classes12.zip所在的路径。

然后通过以下的数据库连接类,在本地通过OCI⽅式获得Oracle数据库连接。

/*** 在本地获得数据库连接*/package com.j2ee.db;import java.util.*;import java.sql.*;import javax.sql.*;import java.io.*;import oracle.jdbc.driver.*;import javax.naming.*;/*** 通过OCI⽅式获得Oracle数据库连接*/public class DbConnection{ final static String sDBDriver = "oracle.jdbc.driver.OracleDriver"; final static String sConnStr = "jdbc:oracle:oci8:sr/sr@ora199"; /** * */ public DbConnection() { } /** * 获得Oracle数据库连接 */ public java.sql.Connection connectDbByOci() { java.sql.Connection conn=null; try { Class.forName(sDBDriver); conn = DriverManager.getConnection(sConnStr); } catch (Exception e) { System.out.println("ERROR:"+e.getMessage()); } return conn; }}/*** 在本地获得数据库连接*/package com.j2ee.db;import java.util.*;import java.sql.*;import javax.sql.*;import java.io.*;import oracle.jdbc.driver.*;import javax.naming.*;/*** 通过thin⽅式获得Oracle数据库连接*/public class DbConnection{ private String sConnStr = ""; /** * 缺省构造器 */ public DbConnection() { sConnStr = "jdbc:oracle:thin:@10.1.4.199:1521:ora199"; } /** * @param ip,serviceName */ public DbConnection(String ip,String serviceName) { sConnStr = "jdbc:oracle:thin:@"+ip+":1521:"+serviceName; } /** * 通过thin⽅式获得Oracle数据库的连接. */ public java.sql.Connection connectDbByThin() { java.sql.Connection conn=null; try { Class.forName(sDBDriver); conn = DriverManager.getConnection(sConnStr,"sr","sr"); } catch (Exception e) { System.out.println("ERROR:"+e.getMessage()); } return conn; } /** * 通过thin⽅式获得Oracle数据库的连接. * @param userId,password */ public java.sql.Connection connectByJdbc(String userId,String password) { java.sql.Connection conn=null; try {  Class.forName(sDBDriver); conn = DriverManager.getConnection(sConnStr,userId,password); } catch (Exception e) { System.out.println("ERROR:"+e.getMessage()); } return conn; }} 这种⽅式运⽤起来⽐较灵活,简单,具有较强的移植性和适⽤性。

oracle 接口标准

oracle 接口标准

oracle 接口标准
Oracle 提供了多种接口标准,包括 OCI(Oracle Call Interface)、JDBC (Java Database Connectivity)、ODBC(Open Database Connectivity)和 FQTI(灵活的查询文本接口)等。

OCI 是 Oracle 公司提供的由头文件和库函数等组成的一个访问 Oracle 数据库的应用程序编程接口(API)。

它允许开发人员在第三代编程语言(包括C、C++、COBOL 与 FORTRAN)中通过 SQL(Structure Query Language)来操纵 Oracle 数据库。

OCI 是一种开放标准,其规范被广泛应用于各种应用程序开发,使得不同的软件和系统可以相互协作。

OCI 接口标准提供了一组通用的函数和协议,用于与 Oracle 数据库进行交互。

这些函数和协议使得开发人员可以执行 SQL 查询、管理数据库连接、处理数据等操作。

JDBC 和 ODBC 是两种用于与数据库交互的接口,它们分别使用 Java 和C/C++ API 将数据从应用程序传输到数据库中。

FQTI 是一种灵活的查询文本接口,用户可以创建和检索文本和文档。

结合FQTI 可以使用文本查询来访问数据库,从而实现快速可靠的数据操作。

如需了解更多有关 Oracle 接口标准的信息,建议访问 Oracle 官网获取或咨询相关专业人士。

oracle协议

oracle协议

Oracle协议1. 简介Oracle协议是针对Oracle数据库的一种通信协议,用于在客户端和Oracle服务器之间进行数据交互和通信。

Oracle协议支持在各种平台和网络环境中使用,提供了高效、安全和可靠的数据库连接和操作功能。

2. 协议特性2.1 客户端-服务器架构Oracle协议采用客户端-服务器架构,客户端应用程序通过Oracle协议与远程的Oracle服务器进行通信。

这种架构可以实现服务器的负载均衡和故障转移,提高系统的可用性和稳定性。

2.2 多种网络传输方式支持2.3 数据安全性保障Oracle协议提供了多种安全机制,确保数据在传输过程中的机密性和完整性。

其中包括加密技术、身份验证、访问控制等。

这些安全机制可以有效防止数据泄漏和非法访问,提高数据库的安全性。

2.4 数据库事务支持Oracle协议支持数据库事务的提交、回滚和锁定操作。

这使得应用程序可以在Oracle数据库上进行事务性操作,确保数据的一致性和可靠性。

同时,Oracle协议还提供了并发控制机制,解决了多个用户同时访问数据库的竞争问题。

2.5 数据库连接池管理Oracle协议支持数据库连接池的管理,提供了连接池的创建、销毁、连接分配和回收等功能。

连接池可以减少应用程序与数据库的连接开销,提高系统的性能和资源利用率。

此外,连接池还可以实现连接的复用和共享,提高系统的可扩展性。

3. 协议通信过程Oracle协议的通信过程主要包括建立连接、会话管理、数据交互和连接终止等步骤:3.1 建立连接客户端应用程序通过指定Oracle服务器的主机名和监听端口建立与服务器的连接。

连接请求经过网络传输到服务器端,服务器端根据连接请求进行身份验证等操作,并返回连接响应给客户端。

3.2 会话管理连接建立后,客户端和服务器之间可以进行会话管理。

客户端可以发送SQL语句和其他数据库操作请求到服务器端,服务器端执行相应的操作并返回结果给客户端。

期间还可以进行数据的查询、插入、更新、删除等操作。

ociserverattach ocilogon 例子

ociserverattach ocilogon 例子

ociserverattach ocilogon 例子在Oracle 数据库中,`OCIServerAttach` 和`OCILogon` 是OCI(Oracle Call Interface)中的两个关键函数,用于连接到Oracle 数据库服务器。

以下是一个简单的 C 语言例子,演示了如何使用这两个函数建立与Oracle 数据库的连接。

```c#include <oci.h>#include <stdio.h>void check_error(OCIError *err, sword status) {text errbuf[512];ub4 buflen;sb4 errcode;if (status == OCI_SUCCESS) {return;}switch (status) {case OCI_SUCCESS_WITH_INFO:printf("OCI_SUCCESS_WITH_INFO\n");break;case OCI_NEED_DATA:printf("OCI_NEED_DATA\n");break;case OCI_NO_DATA:printf("OCI_NO_DATA\n");break;case OCI_ERROR:OCIErrorGet((dvoid *)err, (ub4)1, (text *)NULL, &errcode, errbuf, (ub4)sizeof(errbuf), OCI_HTYPE_ERROR);printf("OCI_ERROR %.*s\n", 512, errbuf);break;case OCI_INVALID_HANDLE:printf("OCI_INVALID_HANDLE\n");break;case OCI_STILL_EXECUTING:printf("OCI_STILL_EXECUTING\n");break;case OCI_CONTINUE:printf("OCI_CONTINUE\n");break;default:printf("Unknown OCI status\n");break;}exit(EXIT_FAILURE);}int main() {OCIEnv *env;OCIError *err;OCIServer *srv;OCISession *ses;OCISvcCtx *svc;OCIStmt *stmt;sword status;OCIInitialize(OCI_DEFAULT);OCIEnvInit(&env, OCI_DEFAULT, 0, 0);OCIHandleAlloc((dvoid *)env, (dvoid )&err, OCI_HTYPE_ERROR, 0, 0);OCIHandleAlloc((dvoid *)env, (dvoid )&srv, OCI_HTYPE_SERVER, 0, 0);OCIHandleAlloc((dvoid *)env, (dvoid )&svc, OCI_HTYPE_SVCCTX, 0, 0);OCIHandleAlloc((dvoid *)env, (dvoid )&ses, OCI_HTYPE_SESSION, 0, 0);OCIHandleAlloc((dvoid *)env, (dvoid )&stmt, OCI_HTYPE_STMT, 0, 0);OCIServerAttach(srv, err, (text *)"YOUR_DB_NAME", strlen("YOUR_DB_NAME"), OCI_DEFAULT);OCIAttrSet((dvoid *)svc, OCI_HTYPE_SVCCTX, (dvoid *)srv, 0, OCI_ATTR_SERVER, err);OCIAttrSet((dvoid *)ses, OCI_HTYPE_SESSION, (dvoid *)"YOUR_USERNAME", strlen("YOUR_USERNAME"), OCI_ATTR_USERNAME, err);OCIAttrSet((dvoid *)ses, OCI_HTYPE_SESSION, (dvoid *)"YOUR_PASSWORD", strlen("YOUR_PASSWORD"), OCI_ATTR_PASSWORD, err);status = OCISessionBegin(svc, err, ses, OCI_CRED_RDBMS, OCI_DEFAULT);check_error(err, status);OCIAttrSet((dvoid *)svc, OCI_HTYPE_SVCCTX, (dvoid *)ses, 0, OCI_ATTR_SESSION, err);// Now you have a connected session and can execute SQL statements usingOCIStmtExecute, etc.OCISessionEnd(svc, err, ses, OCI_DEFAULT);OCIServerDetach(srv, err, OCI_DEFAULT);OCIHandleFree((dvoid *)env, OCI_HTYPE_ERROR);OCIHandleFree((dvoid *)env, OCI_HTYPE_SERVER);OCIHandleFree((dvoid *)env, OCI_HTYPE_SVCCTX);OCIHandleFree((dvoid *)env, OCI_HTYPE_SESSION);OCIHandleFree((dvoid *)env, OCI_HTYPE_STMT);OCIEnvFree(env);OCIInitialize(OCI_DEFAULT);return 0;}```请注意,此示例是一个简化的版本,实际应用中需要更多的错误处理和安全措施。

Oracle程序两种接口ADO与OCI对比

Oracle程序两种接口ADO与OCI对比

目前,Oracle应用程序可以在VB、Delphi等高级开发语言中开发,也可以以C++开发,或者Java语言开发,甚至可以通过ASP、JSP、Perl等脚本语言来访问Oracle。

这些语言环境各有其优势,C++无疑是追求极致速度的首选。

在C++中我们也可以有多种接口方式,可以使用ADO通用接口,可以使用OCI/OCCI,还可以使用ODBC、OO4O及OLEDB等方式。

在这些方式中,ADO与OCI是应用最为广泛的两种方式,本文将集中力量介绍在Visual C++ 6.0 中这两种接口的开发方法及它们的特点对比。

一、ADO开发接口简介ADO(ActiveX Data Objects,ActiveX数据对象)是Microsoft为强大的数据访问接口OLEDB(对象链接和嵌入数据库)而设计的,是一个便于使用的应用层的编程接口。

使用ADO编写的应用程序可以通过OLEDB提供者访问和操作数据库服务器中的数据。

ADO 最主要的优点是易于使用、可以访问多种数据库及可以在多种语言中开发。

由于ADO 建立在自动化(Automation)的基础上,所以ADO的应用场合非常广泛,不仅可在Visual Basic 这样的高级语言开发环境中使用,还可以在一些脚本语言中使用,这对于开发Web应用和在ASP(Active Server Page,动态服务器主页)的脚本代码中访问数据库提供了操作应用的捷径。

ADO是以OLE DB为基础,它对OLE DB进行了封装,所以ADO其实是OLE DB的应用层接口,是介于OLE DB与应用程序之间的中间层。

这种结构为一致的数据访问接口提供了很好的扩展性,不再局限于特定的数据源,只要OLE DB支持的数据源,ADO都可以很好地支持。

ADO的另一个特性是使用简单,它封装了OLE DB的复杂的接口,以Connection、Recordset、Command三个主体对象及Errors、Properties、Parameters和Fields四个集合对象搭建起了ADO对象模型。

oracle url 参数

oracle url 参数

oracle url 参数
Oracle数据库中的URL参数通常用于连接数据库,指定数据库的连接属性。

以下是常见的Oracle数据库URL参数:
1.jdbc:oracle:thin:@hostname:port:database:指定数据库的主
机名、端口和数据库名称。

er:指定连接数据库的用户名。

3.password:指定连接数据库的密码。

4.driverType:指定使用的驱动程序类型,通常是thin表示使
用OCI(Oracle Call Interface)驱动程序。

5.sid:指定Oracle数据库的系统标识符(SID),用于标识唯一
的数据库实例。

6.service_name:指定Oracle数据库的服务名称,用于标识唯
一的数据库服务。

7.fetchSize:指定从数据库检索数据时的批量大小,默认为10。

8.maxRows:指定从数据库返回的最大行数限制。

9.autoCommit:指定是否自动提交事务,默认为true。

10.ssl:指定是否使用SSL加密通信。

这些是常用的Oracle数据库URL参数,具体需要根据数据库连接需求和驱动程序的要求来进行配置。

在使用数据库连接时,确保正确配置连接参数,以便正确连接到目标数据库。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

oracle的oci和thin区别经过上网查询,得到如下结果:jdbc:oracle连接的是oracle数据库thin是一种方法angel/oracle那个angel是用户名,oracle是密码192.168.55.11是你要连的电脑ip1530是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. ThatC 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 isplatform-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 isplatform-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 h arm in doing so. This is true whether you are using getConnection () or defaultConnection() to make the connection. Any user name orpassword 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比较常见的原因。

相关文档
最新文档