• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      分布式數(shù)據(jù)庫中數(shù)據(jù)交換的實現(xiàn)

      2018-01-11 11:05劉繼敏

      劉繼敏

      摘要:本文以某個商品業(yè)務(wù)數(shù)據(jù)庫和驗證平臺數(shù)據(jù)庫的分布式應(yīng)用為例,介紹Oracle分布式數(shù)據(jù)庫如何通過編寫數(shù)據(jù)庫后臺運行的腳本來實現(xiàn)同構(gòu)和異構(gòu)數(shù)據(jù)庫之間的數(shù)據(jù)交換。

      關(guān)鍵詞:分布式數(shù)據(jù)庫;ORACLE;數(shù)據(jù)驗證平臺;同構(gòu)分布式數(shù)據(jù)庫;異構(gòu)分布式數(shù)據(jù)庫

      中圖分類號:TP311 文獻標(biāo)識碼:A 文章編號:1007-9416(2017)11-0073-02

      1 分布式數(shù)據(jù)庫連接的概念

      ORACLE支持同構(gòu)或異構(gòu)的分布式數(shù)據(jù)庫環(huán)境。ORACLE允許應(yīng)用程序連接到一個本地數(shù)據(jù)庫后,可以同時訪問本地和多個遠程數(shù)據(jù)庫中的數(shù)據(jù),這個本地數(shù)據(jù)庫和多個遠程數(shù)據(jù)庫則構(gòu)成了分布式數(shù)據(jù)庫環(huán)境。分布式數(shù)據(jù)庫連接DBLINK是分布式數(shù)據(jù)庫環(huán)境的核心概念,它指代兩個物理數(shù)據(jù)庫之間的連接,即分布式數(shù)據(jù)庫環(huán)境中本地數(shù)據(jù)庫與遠程數(shù)據(jù)庫之間的連接。在建立完成本地數(shù)據(jù)庫到遠程數(shù)據(jù)庫之間的DBLINK后,應(yīng)用程序可以透明地訪問遠程數(shù)據(jù)庫中的表數(shù)據(jù),無需關(guān)心本地數(shù)據(jù)庫與遠程數(shù)據(jù)庫在物理上是如何連接的。

      同構(gòu)的分布式數(shù)據(jù)庫環(huán)境是指所有的數(shù)據(jù)庫都是ORACLE數(shù)據(jù)庫,而異構(gòu)的分布式環(huán)境則是指至少有一個數(shù)據(jù)庫為非ORACLE數(shù)據(jù)庫。對于同構(gòu)環(huán)境來說,可以簡單地建立ORACLE數(shù)據(jù)庫到ORACLE數(shù)據(jù)庫的DBLINK即可實現(xiàn)。對于異構(gòu)環(huán)境來說,ORACLE使用透明網(wǎng)關(guān)組件來實現(xiàn)對非ORALCE數(shù)據(jù)庫的訪問。透明網(wǎng)關(guān)是一個代理程序Agent(通過ODBC/OLEDB驅(qū)動),通過它來連接到非ORACLE數(shù)據(jù)庫,同時創(chuàng)建一個ORACLE實例。ORACLE數(shù)據(jù)庫通過DBLINK連接到透明網(wǎng)關(guān)創(chuàng)建的ORACLE實例,該實例通過代理程序Agent連接到非ORACLE數(shù)據(jù)庫,這樣就完成了從ORACLE到非ORACLE數(shù)據(jù)庫的連接。

      2 數(shù)據(jù)驗證平臺數(shù)據(jù)庫系統(tǒng)說明

      數(shù)據(jù)驗證平臺的開發(fā)目是為了實現(xiàn)監(jiān)督部門管理的企業(yè)相關(guān)認證信息與總局主干系統(tǒng)的及時數(shù)據(jù)交換。數(shù)據(jù)驗證平臺作為一個中間數(shù)據(jù)提取和轉(zhuǎn)換平臺,可以避免業(yè)務(wù)系統(tǒng)數(shù)據(jù)與總局數(shù)據(jù)之間的直接交換,屏蔽雙方數(shù)據(jù)交換中的格式等問題,及時了解對接雙方數(shù)據(jù)發(fā)送及接收的情況,保障相關(guān)業(yè)務(wù)系統(tǒng)與主干系統(tǒng)接口的穩(wěn)定運行。

      數(shù)據(jù)驗證平臺是完全以O(shè)RACLE數(shù)據(jù)庫為中心進行架構(gòu)設(shè)計的,通過編寫數(shù)據(jù)庫后臺運行的PL/SQL腳本來實現(xiàn)數(shù)據(jù)接收、數(shù)據(jù)準(zhǔn)備、數(shù)據(jù)打包和數(shù)據(jù)發(fā)送功能。數(shù)據(jù)驗證平臺數(shù)據(jù)庫需要能夠直接連接到多個業(yè)務(wù)系統(tǒng)的數(shù)據(jù)庫來讀取證書和產(chǎn)品數(shù)據(jù)。數(shù)據(jù)驗證平臺數(shù)據(jù)庫共計要連接4個ORACLE數(shù)據(jù)庫和2個DB2數(shù)據(jù)庫。

      3 數(shù)據(jù)驗證平臺數(shù)據(jù)庫的設(shè)計方案

      3.1 創(chuàng)建證書歷史變更表和產(chǎn)品歷史變更表

      對于每一個業(yè)務(wù)系統(tǒng),在業(yè)務(wù)系統(tǒng)證書表所屬的數(shù)據(jù)庫用戶下,創(chuàng)建數(shù)據(jù)驗證平臺需要訪問的證書歷史變更表和產(chǎn)品歷史變更表。無論業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫是ORACLE還是DB2,分別有對應(yīng)的證書變更歷史表和產(chǎn)品歷史變更表的建表腳本。在業(yè)務(wù)系統(tǒng)中創(chuàng)建觸發(fā)器,無論是簽發(fā)新證書(insert操作)還是變更證書(update操作),該觸發(fā)器能夠?qū)⒆钚伦C書和產(chǎn)品數(shù)據(jù)插入到證書歷史變更表和產(chǎn)品歷史變更表中。

      3.2 創(chuàng)建ECIQINTF用戶

      對于每一個業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫,都要創(chuàng)建一個ECIQINTF數(shù)據(jù)庫用戶,該用戶用于建立從數(shù)據(jù)驗證平臺數(shù)據(jù)庫到業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫的分布式數(shù)據(jù)庫連接,數(shù)據(jù)驗證平臺并不使用業(yè)務(wù)系統(tǒng)原有的數(shù)據(jù)庫用戶。為什么不使用數(shù)據(jù)庫原有的用戶,而是單獨創(chuàng)建一個用戶和相關(guān)表來讀取業(yè)務(wù)系統(tǒng)的數(shù)據(jù)呢?其主要目的就在于要進行徹底隔離,從業(yè)務(wù)系統(tǒng)的數(shù)據(jù)庫用戶,到表名稱、表結(jié)構(gòu)、字段名稱、字段數(shù)據(jù)類型都要與業(yè)務(wù)系統(tǒng)的原有內(nèi)容進行隔離。這樣可以保證即使業(yè)務(wù)系統(tǒng)的內(nèi)容(用戶、表名稱、表結(jié)構(gòu)、字段名稱、字段數(shù)據(jù)類型)發(fā)生變化,但并不會影響用戶ECIQINTF的內(nèi)容。

      在業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫中執(zhí)行如下操作,以出口系統(tǒng)數(shù)據(jù)庫為例。

      (1)在出口系統(tǒng)數(shù)據(jù)庫中創(chuàng)建一個針對平臺系統(tǒng)數(shù)據(jù)庫的用戶ECIQINTF,密碼也為ECIQINTF。

      CREATE USER ECIQINTF IDENTIFIED BY ECIQINTF;

      (2)給該用戶分配連接和使用資源的權(quán)限;

      GRANT CONNECT,RESOURCE TO ECIQINTF。

      (3)授予證書歷史變更表和產(chǎn)品歷史變更表的SELECT權(quán)限給ECIQINTF用戶,使ECIQINTF用戶能夠查詢變更表數(shù)據(jù)。EFPT為當(dāng)前出口系統(tǒng)數(shù)據(jù)庫中的用戶,把該用戶所擁有的證書變更歷史表ECIQ_INTF_CERT_CHANGE_HIS中的查看權(quán)限賦予給ECIQINTF;同理,把EFPT用戶的產(chǎn)品變化歷史表ECIQ_INTF_PROD_CHANGE_HIS的查看權(quán)限也賦予給用戶ECIQINTF。

      GRANT SELECT ON EFPE.ECIQ_INTF_CERT_CHANGE_HIS TO ECIQINTF;

      GRANT SELECT ON EFPE.ECIQ_INTF_PROD_CHANGE_HIS TO ECIQINTF;

      (4)分配權(quán)限后,此時ECIQINTF可以使用如下SQL語句訪問EFPE下的變更表。

      SELECT * FROM EFPE.ECIQ_INTF_CERT_CHANGE_HIS;

      (5)創(chuàng)建同義詞,將用戶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,簡化了數(shù)據(jù)表的訪問:

      SELECT * FROM ECIQ_INTF_CERT_CHANGE_HIS_05;

      3.3 創(chuàng)建同構(gòu)分布式數(shù)據(jù)庫連接

      在數(shù)據(jù)驗證平臺數(shù)據(jù)庫,創(chuàng)建從數(shù)據(jù)驗證平臺數(shù)據(jù)庫到出口系統(tǒng)數(shù)據(jù)庫的分布式數(shù)據(jù)庫連接INTF_DB_05,鏈接的用戶名為ECIQINTF。業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫的服務(wù)名稱為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) ) )';

      在數(shù)據(jù)驗證平臺可以使用如下SQL語句訪問變更表:

      SELECT * FROM ECIQ_INTF_CERT_CHANGE_HIS_05@INTF_DB_05;

      在數(shù)據(jù)驗證平臺數(shù)據(jù)庫,創(chuàng)建同義詞,進一步簡化歷史變更的數(shù)據(jù)訪問。用當(dāng)前用戶INTF下的表ECIQ_INTF_CERT_CHANGE_HIS_05來映射業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫INTF_DB_05下ECIQ_INTF_CERT_CHANGE_HIS_05表。同樣對產(chǎn)品表也做同樣的映射關(guān)聯(lián)。

      CREATE SYNONYM INTF.ECIQ_INTF_CERT_CHANGE_HIS_05 FOR ECIQ_INTF_CERT_CHANGE_HIS_05@INTF_DB_05;

      數(shù)據(jù)驗證平臺可以使用如下SQL語句訪問變更表

      SELECT * FROM ECIQ_INTF_CERT_CHANGE_HIS_05;

      3.4 創(chuàng)建異構(gòu)分布式數(shù)據(jù)庫連接

      到目前為止,對于使用ORACLE數(shù)據(jù)庫的業(yè)務(wù)系統(tǒng)來說,數(shù)據(jù)驗證平臺使用簡單的SQL語句能夠?qū)崿F(xiàn)對業(yè)務(wù)系統(tǒng)的歷史變更表的訪問。但對于使用DB2數(shù)據(jù)庫的業(yè)務(wù)系統(tǒng)來說,需要在一臺單獨服務(wù)器(也可以是通關(guān)驗證平臺數(shù)據(jù)庫服務(wù)器)配置操作系統(tǒng)的ODBC數(shù)據(jù)源連接DB2數(shù)據(jù)庫,并測試連接通過,圖1。

      在該服務(wù)器上安裝Oracle Database Gateway for ODBC/OLE DB,修改配置文件指向ODBC數(shù)據(jù)源名稱。

      HS_FDS_TIMESTAMP_MAPPING=TIMESTAMP

      HS_FDS_CONNECT_INFO=XXX(數(shù)據(jù)源名稱)

      HS_FDS_TRACE_LEVEL=off

      啟動該服務(wù)器上的ORACLES實例的監(jiān)聽程序,等待數(shù)據(jù)驗證平臺數(shù)據(jù)庫連接。在數(shù)據(jù)驗證平臺上,與剛才連接業(yè)務(wù)系統(tǒng)ORAC LE數(shù)據(jù)庫一樣,創(chuàng)建到該服務(wù)器ORACLE實例的分布式數(shù)據(jù)庫連接。這樣,數(shù)據(jù)驗證平臺就建立起與DB2數(shù)據(jù)庫的分布式數(shù)據(jù)庫連接,可以訪問DB2數(shù)據(jù)庫中證書和產(chǎn)品數(shù)據(jù)。

      4 結(jié)語

      通過以上的數(shù)據(jù)庫腳本,可以實現(xiàn)通關(guān)驗證平臺下面多個數(shù)據(jù)庫的分布式連接,從而實現(xiàn)數(shù)據(jù)的有效傳遞。

      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

      云梦县| 肥东县| 安丘市| 东方市| 开原市| 万全县| 和静县| 洮南市| 伊春市| 麦盖提县| 桂阳县| 兴城市| 浦县| 忻州市| 鄂尔多斯市| 汉中市| 岳阳市| 醴陵市| 泗水县| 赣州市| 云龙县| 南康市| 苍梧县| 社旗县| 汉沽区| 神农架林区| 万安县| 伊宁县| 南乐县| 镇沅| 渭南市| 南乐县| 云龙县| 荔波县| 德令哈市| 博野县| 清远市| 宣恩县| 霍山县| 台南县| 井陉县|