由于历史的原因在多数企业都同时存在多个数据库平台在每个数据库平台上都运行着相关的一套或多套应用随着单位业务不断扩大如何在不影响现有应用运行的前提下快速有效地整合这些分布在单位内部不同数据库平台上的数据是一个困扰CIO们的问题面对这一问题现有解决方案大致可分为以下两种
.在应用程序上建立连接不同数据源的数据连接这样做要求程序员分清哪个连接是对应哪个数据库的而且如果设计时涉及到存储过程还要按照不同数据库的要求分别编写加重了程序员的要求
.在数据库中设立快照定时把其他数据源的数据复制到本地数据库这样虽然解决了前一种方法中不同数据源的问题但是由于是定时复制数据不能实时同步在实时性要求高的应用中这种方法便不能使用
由于上述两种方法都存在一定的缺点这里介绍一种Oracle提供的解决oracle数据库与异种数据源的连接问题的解决方案—Oracle的异构服务(Heterogeneous Services)
程序运行效果截图异构服务
异构服务是集成在Oracle i数据库软件中的功能它提供了从Oracle数据库访问其他非Oracle数据库的通用技术熟悉Oracle的读者都很清楚Oracle提供通过建立DB Link的方法访问非本地数据库而异构服务提供通过建立DB Link使你能够执行Oracle SQL查询透明地访问其他非Oracle数据库里的数据就像访问Oracle远程数据库一样异构服务分为两种
. 事务处理服务(Transation Service)通过事务处理服务使用户在访问非Oracle数据库中支持事务处理功能
. SQL服务: 通过SQL服务使用户直接在Oracle数据库中执行对非Oracle数据库的各种SQL语句
根据异构服务代理程序的不同异构服务连接方式可以分为透明网关和通用连接两种
透明网关(Transparent Gateways) 透明网关使用Oracle提供的特定网关程序来设置代理例如连接SQL Server则必须要有SQL Transparent Gateway for SQL Server
通用连接(Generic Connectivity) 通用连接又分为ODBC连接和OLE DB连接两种其连接方法和透明网关没有本质区别只不过通用连接是和数据库一起提供的功能你不需要向Oracle购买相关的透明网关程序
连接实例
这个实例的应用环境是Oracle 操作系统Windows Server英文版采用通用连接的ODBC for SQL Server连接SQL Server 中文版安装步骤如下
. 安装HS部件
缺省情况下HS服务是和Oracle 一起安装的你可以查询SYS用户下是否存在HS_BASE_CAPS视图以确认HS部件是否安装如果没有可以用相关的安装盘进行安装
. 配置ODBC系统连接字
在控制面板选择Data Sources (ODBC)在系统DNS内配置ODBC for SQL Server连接字(dnsorasql)
.配置tnsnamesora它位于ORACLE_HOME\NETWORK\ADMIN
在这个文件中增加如下代码
Lnksql =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = HOSTNAME)(PORT = )))
(CONNECT_DATA =
(SID = hssql) |< 服务的SID名称要和Listener里配置的sid相同)
(HS=OK) |<打开HS服务选项
)
.配置listenerora它位于ORACLE_HOME\NETWORK\ADMIN
在这个文件中增加如下代码
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = hssql) |<服务的SID名称与tnsname名称相对应
(ORACLE_HOME = C:\oracle\ora)
(PROGRAM = hsodbc) |<要使用的HS服务程序如果使用OLE DB程序名为hsole )
)
. 重新启动Oracle listener
. 编辑位于ORACLE_HOME\HS\ADMIN内initora这里是inithssql
修改如下两行代码
HS_FDS_CONNECT_INFO = dnsorasql |<ODBC系统名
HS_FDS_TRACE_LEVEL =
. 创建DATABASE LINK
create database link orasql connect
to sql identified by sql using lnksql;
. 测试连接如
SQL> select * from region@orasql;
到此我们已经完成了使用ODBC连接SQL SERVER的配置工作
总体上说异构服务扩展了Oracle数据库连接异种数据源的能力加强了企业数据的整合是一个快速有效经济地整合企业内部异构数据的解决方案