[转]ODAC 应用技巧 (一)使用 ODAC 的 Net 方式

原文地址:ODAC 应用技巧 (一)使用 ODAC 的 Net 方式

使用 ODAC 的 Net 方式

nxyc_twz@163.com

大多数应用程序使用 OCI 的ODAC 标准方式来连接 Oracle 数据库服务器。这是使用第三方开发语言设计 Oracle 应用程序最常用的方法。 所有的 OCI 接口都作为内部库来使用,使得编译生成的应用程序非常小。但是,这需要在客户机上安装 Oracle 客户端软件,这使得安装和管理要花费额外的开销。 有时,安装 Oracle 客户端程序甚至是不可能的。 例如,如果你需要在远程计算机上设置你的应用程序,你不能提供特殊的文件支持。

ODAC Net 允许你的应用程序直接通过 TCP/IP 协议来连接 Oracle,而不需要 Oracle 客户端软件。运行使用 ODAC Net 的应用程序,仅需要有一个支持 TCP/IP 协议的操作系统。
使用 ODAC Net 连接 Oracle 服务器,你需要知道 Oracle 服务器的地址,监听端口号以及数据库实例名称。
在你的应用程序中使用 Net 选项前,你只需要设置 TOraSession 对象的选项 Net 为 True 且指定它的Server 属性为指定的数据库。如果使用 ODAC 的标准方式通过 OCI 来连接数据库,你必须设置 Server 属性为 TNS 别名,但现在使用 ODAC 的 Net 选项,你只需要指定数据库字符串,格式如下: Host:Port:SID.

这里, Host 指服务器地址, Port 指服务器监听端口号, SID 指特定的系统实例名称。

这里有个例子示范不使用 OCI 而 连接数据库:

var
Session: TOraSession;
. . .
Session.Options.Net := True;
Session.Username := 'Scott';
Session.Password := 'tiger';
Session.Server := '205.227.44.44:1521:orcl';
Session.Connect;

注意:这些是你的应用程序要支持 Net 选项时所必须的。你不需要重写应用程序的其它部分。除此之外,你还可以在任何时候通过 OCI 连接 Oracle 。要实现它,你仅需要设置 TOraSession.Options.Net 选项为 False.

OCI 与 Net:

使用 ODAC 标准方式和 Net 方式编译的应用程序,在程序大小和运行速度上非常相似。使用 Net 选项在安全方面,与使用 OCI 的 Oracle 的加密方式并不相同。 Net 使用 DES 来验证安全性,现在它并不支持 Oracle 的加密方式。

ODAC Net 的优势:

- 不需要安装和管理 Oracle 客户端软件;
- 减少系统需求。

ODAC Net 选项的限制:

仅支持通过 TCP/IP 协议来连接 Oracle;
不支持 Oracle 8 的对象,数组;
不支持 TOraLoader 的直接装载;
请注意:我们并不能保证 ODAC Net 可以在所有网络上的所有 Oracle 服务器上运行。我们使用 Net 选项在本地局域网上测试了 Windows 平台上 Oracle 7.3 以后的所有版本。
ODAC 通过 OCI 可以运行在所有的 Oracle 服务器上。Net 选项在 Window 及 Linux 平台上的所有Oracle 服务器上被测试过。我们不能保证它可以运行在其它平台上。

使用防火墙时可能会出现验证问题。
Net 选项在本地语言下运行时会有些不同。它不支持客户端的 NLS 转换。
BreakExec 过程不能运行。
TOraLoader 组件不在运行在直接路径接口模式(lmDirect 模式)。

Net 选项还有一些其它问题。例如,进行截断日期比较时会出现错误。

SELECT * FROM scott.emp WHERE hiredate >= TRUNC(:hiredate)

执行该查询时会出现 ORA-00932 错误: 不支持的数据类型。

如果没有上面的限制,你可以通过 OCI 在任何时间关闭连接。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/nxyc_twz/archive/2003/02/15/16060.aspx

 

--

使用ODAC方式最大的好处在于可以不用在系统运行的机器上部署Oracle客户端,不过此方式与客户端方式相比有一定限制,使用时需注意。详细信息可参考nxyc_twz的博客。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/406492.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

adam算法效果差原因_冷库制冷效果差原因

冷库常见的现象有冷库温度降不下来和下降缓慢的时候,现在对库温下降缓慢的原因简单分析:1、冷库工程由于隔热或密封性能差,导致冷量损耗大隔热性能差是由于管道、库房隔热墙等的保温层厚度不够,隔热和保温效果不良,它主…

解决hive交互模式退格键乱码

在hive的交互模式下,输入退格、方向键等,出现乱码,可以通过如下方法解决: 1、修改bashrc文件: vi ~/.bashrc 在文件最后添加一行: stty erase ^H。 2、使修改生效: source ~/.bashrc 这样&#…

element弹框的的this.$alert、this.$prompt方法用法

element弹框的的this.alert、this.alert、this.alert、this.prompt方法用法

VS2010删除所有断点时不弹出提示窗口

用VS.NET平台程序时,如何才能在删除所有断点时不弹出提示窗口呢?请看下图,马上明白:

如何使用Chrome的Network面板分析HTTP报文

Chrome教程之NetWork面板分析网络请求 如何使用Chrome的Network面板分析HTTP报文

关于Eclipse基本设置(字体大小、项目导入、简单)

1、如果事先你用其他软件写好了一个项目文件夹,导入到Eclipse继续编辑,可以: 打开File→Import→Genral→File System→ Next ,然后选择文件夹(建议在导入之前,先建立一个工程object) 2、字体大…

多通道_人机交互界面的多通道RGB LED驱动设计

现在的产品变得非常智能且彼此相互连接。扬声器、电视、冰箱、机顶盒和烟雾探测器等器件不再只是处在某一位置的工具 - 用户可远程或通过语音唤醒控制它们。这些器件比以前更加智能,这意味着它们还需要更加智慧的人机交互界面。  人机交互的界面可以多种多样&…

转,rsa算法

[编辑] 公钥和私钥的产生 假设Alice想要通过一个不可靠的媒体接收Bob的一条私人訊息。她可以用以下的方式来产生一个公钥和一个私钥:随意选择两个大的质数p和q,p不等于q,计算Npq。 根据歐拉函數,不大于N且与N互质的整数个数为(p-1…

VC按最小化、关闭按钮、Esc都隐藏主窗口

VC按最小化、关闭按钮、Esc键都隐藏主窗口,在托盘处程序图标的右键菜单中点击,显示主窗口。 1. 按最小化时隐藏主窗口:为窗口添加WM_SIZE消息响应函数 void CdDlg::OnSize(UINT nType, int cx, int cy) {CDialogEx::OnSize(nType, cx, cy);i…

越是聪明人越要懂得下笨功夫!

很多人认为聪明的人才会成功,其实,事情恰恰相反。 很多聪明的人做事情往往难以成功。人们常说“聪明反被聪明误”,说的就是这个道理。很多聪明人做事情不能成功,原因有二:一是不能下笨功夫;二是他们没有找到…

Taro+react开发(65):h5全局重置背景样式

.taro_page{height:100% }.onlineQuetion_body{background: linear-gradient(0deg,#5a70a6,#5c7cc9);height:100%; } body,html{height:100%; }

Vue项目 开启gzip

Vue项目 开启gzip Nginx 动态压缩与静态压缩,显著提高前后端分离项目响应速度 Gzip Precompression模块(Gzip Precompression) nginx缓存配置及开启gzip压缩 理解http浏览器的协商缓存和强制缓存 一文读懂前端缓存

宿舍管理系统项目管理师_2020下半年信息系统项目管理师真题——案例分析(带解析)...

2020下半年信息系统项目管理师真题——案例分析(带解析~强哥版)案例分析这次继续是计算题分析题的分布,但这个题由于理解上有歧义,所以也是大家经常争论的一个题,但无论第一列还是第二列对考分影响不会很大,所以大家还是要耐心等成…

C# DateTime ToString

From: http://www.cnblogs.com/yangdj2000/archive/2009/04/29/1446063.html 字符型转换为字符串 // C 货币 2.5.ToString("C"); // ¥2.50 // D 10进制数 25.ToString("D5"); // 25000 // E 科学型 25000.ToString("E"); // 2.5…

PHP异常与错误处理机制

先区别一下php中错误 与 异常的概念吧 PHP错误:是属于php程序自身的问题,一般是由非法的语法,环境问题导致的,使得编译器无法通过检查,甚至无法运行的情况。平时遇到的warming、notice都是错误,只是级别不同…

python 计算小于某个数_python 列表寻找满足某个条件的开始索引和结束索引、区间范围...

在使用python列表的时候,我们经常需要找到满足某个条件的数的开始索引和结束索引,即满足某个条件的数的区间范围,本文以寻找绝对值大于等于0且小于等于3的数值区间为例,代码如下所示:这是我在做项目写python代码的时候…

vue项目发布时去除console语句

在vue.config.js中添加下面的代码即可 // vue-cli version > 3 modeule.exports {configureWebpack: config > {if (process.env.NODE_ENV "production") {config.optimization.minimizer[0].options.terserOptions.compress.drop_console true;}}, }

Robotium编写测试用例如何模拟Junit4的BeforeClass和AfterClass方法1 - 条件判断法

Robotium的测试类ActivityInstrumentationTestCase2是继承于Junit3的TestCase类,所以并没有提供Junit4的特性.如网上总结说的 不能通过annotate的方式来识别子类的新特征,如不能实现beforeclass,afterclass等特征。只能通过写setup和teardown…

DateTimeFormatInfo 类

From: http://127.0.0.1:47873/help/0-3684/ms.help?methodpage&idT%3ASYSTEM.GLOBALIZATION.DATETIMEFORMATINFO&productVS&productVersion100&topicVersion100&localeZH-CN&topicLocaleZH-CN 定义如何根据区域性设置 DateTime 值的格式并显示这些值…