一直在使用ODAC做开发,没时间仔细研究一下,目前采用的是3层结构,ODAC+TDataSetProvider+TClientDataSet做数据处理,也没有多大问题。下一步要开发B/S的程序了,打算用ODAC+uniGUI来完成,数据处理上其实可以按照2层结构,相比3层结构要简单些,性能预计也要好些。所以需要仔细研究一下ODAC的功能。岁数大了,做个笔记免得忘了。以下大部分材料来自于ODAC的帮助文件,E文不是太好,只能大概了解意思,难免有错,阅读和使用时需要进一步核实。

1.1.  简介

ODAC(Oracle Data Access Components)是RAD下用于直接访问Oracle数据库的专用控件组。其最大的特点是:可以不用安装Oracle客户端就能够直接访问Oracle数据库,并对Oracle数据库中的众多特色功能进行了封装。

ODAC目前最新版本为9.5.15,本文以此版本为基础进行介绍。该版本支持Delphi、C++Builder和Lazarus下的多个版本,支持VCL或FMX控件。该版本对直接访问模式(Direct mode)进行了开源。开发的软件支持Android、IOS、Windows32/64等多个平台。不过我们开发的与Oracle相关的程序,一般是C/S/S或B/S架构的服务器端程序,所以只考虑Windows32/64平台下的开发。

ODAC采用了原生态的网络连接(TCP/IP)与Oracle服务器通信(Direct mode),越过了Oracle的客户端程序,性能更加优越。当然为稳定也可以使用Oracle的客户端连接。

1.2.  特点

按照官方文件说明,ODAC的9.5.15版主要具有以下特点:

1、  Direct模式下可以直接访问Oracle数据库,不需要安装Oracle客户端,不需要BDE或ODBC等数据库客户端引擎,安装和部署更方便。

2、  支持目前Oracle的所有服务器版本,包括12c、11g、10g、9i、8i、8.0、7.3,支持Oracle简化版(Oracle Express Edition 11g/10g)。

3、  支持数据离线模式(Disconnected Mode),在数据缓冲到客户端后,可以断开与服务器的连接,以减少Oracle服务器资源的开销,所有操作在本地内存中完成,当需要提交数据时重新连接Oracle服务器。

4、  支持所有数据类型的本地索引和过滤,包括计算字段和Lookup字段。

5、  自动进行数据更新,包括ODAC自动生成的更新SQL或自定义的SQL,能够自动提交到数据库服务器,或缓冲模式下手工提交到数据库。

6、  支持SQL脚本执行,这样一来很多升级脚本可以通过软件自动运行了。

7、  支持对包(Package)的封装和运行。只需要一个控件就可以控制一个包中所有过程和函数的执行了。

8、  支持失效备援模式(Transparent application failover ,TAF)当数据库连接因各种原因断开(最常见的是网络原因),ODAC能够自动进行重新连接并确保客户端数据不丢失,相比传统2层架构软件的数据库连接有巨大优势。

9、  支持SQL语句的监控,即SQLMonitor。

10、            支持内存表,可以在客户端内存中建立数据表进行操作。

11、            支持Oracle的消息队列功能。

12、            其他功能,如分布式事务处理、双字节字符处理等。

04-26 17:00