分布式数据库中数据交换的实现

2018-01-11 11:05刘继敏
数字技术与应用 2017年11期

刘继敏

摘要:本文以某个商品业务数据库和验证平台数据库的分布式应用为例,介绍Oracle分布式数据库如何通过编写数据库后台运行的脚本来实现同构和异构数据库之间的数据交换。

关键词:分布式数据库;ORACLE;数据验证平台;同构分布式数据库;异构分布式数据库

中图分类号:TP311 文献标识码:A 文章编号:1007-9416(2017)11-0073-02

1 分布式数据库连接的概念

ORACLE支持同构或异构的分布式数据库环境。ORACLE允许应用程序连接到一个本地数据库后,可以同时访问本地和多个远程数据库中的数据,这个本地数据库和多个远程数据库则构成了分布式数据库环境。分布式数据库连接DBLINK是分布式数据库环境的核心概念,它指代两个物理数据库之间的连接,即分布式数据库环境中本地数据库与远程数据库之间的连接。在建立完成本地数据库到远程数据库之间的DBLINK后,应用程序可以透明地访问远程数据库中的表数据,无需关心本地数据库与远程数据库在物理上是如何连接的。

同構的分布式数据库环境是指所有的数据库都是ORACLE数据库,而异构的分布式环境则是指至少有一个数据库为非ORACLE数据库。对于同构环境来说,可以简单地建立ORACLE数据库到ORACLE数据库的DBLINK即可实现。对于异构环境来说,ORACLE使用透明网关组件来实现对非ORALCE数据库的访问。透明网关是一个代理程序Agent(通过ODBC/OLEDB驱动),通过它来连接到非ORACLE数据库,同时创建一个ORACLE实例。ORACLE数据库通过DBLINK连接到透明网关创建的ORACLE实例,该实例通过代理程序Agent连接到非ORACLE数据库,这样就完成了从ORACLE到非ORACLE数据库的连接。

2 数据验证平台数据库系统说明

数据验证平台的开发目是为了实现监督部门管理的企业相关认证信息与总局主干系统的及时数据交换。数据验证平台作为一个中间数据提取和转换平台,可以避免业务系统数据与总局数据之间的直接交换,屏蔽双方数据交换中的格式等问题,及时了解对接双方数据发送及接收的情况,保障相关业务系统与主干系统接口的稳定运行。

数据验证平台是完全以ORACLE数据库为中心进行架构设计的,通过编写数据库后台运行的PL/SQL脚本来实现数据接收、数据准备、数据打包和数据发送功能。数据验证平台数据库需要能够直接连接到多个业务系统的数据库来读取证书和产品数据。数据验证平台数据库共计要连接4个ORACLE数据库和2个DB2数据库。

3 数据验证平台数据库的设计方案

3.1 创建证书历史变更表和产品历史变更表

对于每一个业务系统,在业务系统证书表所属的数据库用户下,创建数据验证平台需要访问的证书历史变更表和产品历史变更表。无论业务系统数据库是ORACLE还是DB2,分别有对应的证书变更历史表和产品历史变更表的建表脚本。在业务系统中创建触发器,无论是签发新证书(insert操作)还是变更证书(update操作),该触发器能够将最新证书和产品数据插入到证书历史变更表和产品历史变更表中。

3.2 创建ECIQINTF用户

对于每一个业务系统数据库,都要创建一个ECIQINTF数据库用户,该用户用于建立从数据验证平台数据库到业务系统数据库的分布式数据库连接,数据验证平台并不使用业务系统原有的数据库用户。为什么不使用数据库原有的用户,而是单独创建一个用户和相关表来读取业务系统的数据呢?其主要目的就在于要进行彻底隔离,从业务系统的数据库用户,到表名称、表结构、字段名称、字段数据类型都要与业务系统的原有内容进行隔离。这样可以保证即使业务系统的内容(用户、表名称、表结构、字段名称、字段数据类型)发生变化,但并不会影响用户ECIQINTF的内容。

在业务系统数据库中执行如下操作,以出口系统数据库为例。

(1)在出口系统数据库中创建一个针对平台系统数据库的用户ECIQINTF,密码也为ECIQINTF。

CREATE USER ECIQINTF IDENTIFIED BY ECIQINTF;

(2)给该用户分配连接和使用资源的权限;

GRANT CONNECT,RESOURCE TO ECIQINTF。

(3)授予证书历史变更表和产品历史变更表的SELECT权限给ECIQINTF用户,使ECIQINTF用户能够查询变更表数据。EFPT为当前出口系统数据库中的用户,把该用户所拥有的证书变更历史表ECIQ_INTF_CERT_CHANGE_HIS中的查看权限赋予给ECIQINTF;同理,把EFPT用户的产品变化历史表ECIQ_INTF_PROD_CHANGE_HIS的查看权限也赋予给用户ECIQINTF。

GRANT SELECT ON EFPE.ECIQ_INTF_CERT_CHANGE_HIS TO ECIQINTF;

GRANT SELECT ON EFPE.ECIQ_INTF_PROD_CHANGE_HIS TO ECIQINTF;

(4)分配权限后,此时ECIQINTF可以使用如下SQL语句访问EFPE下的变更表。

SELECT * FROM EFPE.ECIQ_INTF_CERT_CHANGE_HIS;

(5)创建同义词,将用户EFPE 下的表ECIQ_INTF_CERT_CHANGE_HIS 映射到ECIQINTF下的表ECIQ_INTF_CERT_CHANGE_HIS_05;同理,也对用户EFPE 下的表ECIQ_INTF_PROD_CHANGE_HIS 映射到ECIQINTF下的表ECIQ_INTF_PROD_CHANGE_HIS_05endprint

CREATE SYNONYM ECIQINTF.ECIQ_INTF_CERT_CHANGE_HIS_05 FOR EFPE.ECIQ_INTF_CERT_CHANGE_HIS;

CREATE SYNONYM ECIQINTF.ECIQ_INTF_PROD_CHANGE_HIS_05 FOR EFPE.ECIQ_INTF_PROD_CHANGE_HIS;

此时,ECIQINTF可以使用如下SQL语句访问变更表,无需指定EFPE,简化了数据表的访问:

SELECT * FROM ECIQ_INTF_CERT_CHANGE_HIS_05;

3.3 创建同构分布式数据库连接

在数据验证平台数据库,创建从数据验证平台数据库到出口系统数据库的分布式数据库连接INTF_DB_05,链接的用户名为ECIQINTF。业务系统数据库的服务名称为EFPE。

CREATE DATABASE LINK INTF_DB_05

CONNECT TO ECIQINTF IDENTIFIED BY "XXXXX" USING '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.2)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = EFPE) ) )';

在数据验证平台可以使用如下SQL语句访问变更表:

SELECT * FROM ECIQ_INTF_CERT_CHANGE_HIS_05@INTF_DB_05;

在数据验证平台数据库,创建同义词,进一步简化历史变更的数据访问。用当前用户INTF下的表ECIQ_INTF_CERT_CHANGE_HIS_05来映射业务系统数据库INTF_DB_05下ECIQ_INTF_CERT_CHANGE_HIS_05表。同样对产品表也做同样的映射关联。

CREATE SYNONYM INTF.ECIQ_INTF_CERT_CHANGE_HIS_05 FOR ECIQ_INTF_CERT_CHANGE_HIS_05@INTF_DB_05;

数据验证平台可以使用如下SQL语句访问变更表

SELECT * FROM ECIQ_INTF_CERT_CHANGE_HIS_05;

3.4 创建异构分布式数据库连接

到目前为止,对于使用ORACLE数据库的业務系统来说,数据验证平台使用简单的SQL语句能够实现对业务系统的历史变更表的访问。但对于使用DB2数据库的业务系统来说,需要在一台单独服务器(也可以是通关验证平台数据库服务器)配置操作系统的ODBC数据源连接DB2数据库,并测试连接通过,图1。

在该服务器上安装Oracle Database Gateway for ODBC/OLE DB,修改配置文件指向ODBC数据源名称。

HS_FDS_TIMESTAMP_MAPPING=TIMESTAMP

HS_FDS_CONNECT_INFO=XXX(数据源名称)

HS_FDS_TRACE_LEVEL=off

启动该服务器上的ORACLES实例的监听程序,等待数据验证平台数据库连接。在数据验证平台上,与刚才连接业务系统ORAC LE数据库一样,创建到该服务器ORACLE实例的分布式数据库连接。这样,数据验证平台就建立起与DB2数据库的分布式数据库连接,可以访问DB2数据库中证书和产品数据。

4 结语

通过以上的数据库脚本,可以实现通关验证平台下面多个数据库的分布式连接,从而实现数据的有效传递。

Abstract:In this paper, a distributed application business database and verification platform database as an example, introduced the Oracle distributed database how to write database scripts run to achieve exchange between homogeneous and heterogeneous database data.

Key Words:distributed database;ORACLE;data authentication platform; homogeneous distributed database;heterogeneous distributed databaseendprint