日期:2014-05-16  浏览次数:20385 次

ORACLE数据快照技术在数据交换中的应用
Oracle数据快照技术在数据交换中的应用


摘要:该文介绍了ORACLE数据快照技术在数据交换中的应用,并且举例说明了如何应用数据快照来实现跨库数据间的同步。

关键词:ORACLE;SNAPSHOT The Snapshot Technology of Oracle in the Data Exchange Application

PAN Cheng-bin

(Touris College of Zhejiang,Hangzhou 311231,China)

Abstract: This paper describe the snapshot technology of oracle in the data exchange application,and illustrate how to apply snapshot to achieve inter-library data synchronization.

Key words: ORACLE; SNAPSHOT



      ORACLE数据库的快照是包括一个查询结果的数据库对象,它包含有对一个本地或远程数据库上一个或多个表或视图的查询的结果。正因为快照是一个主表的查询子集,使用快照可以加快数据的查询速度;在保持不同数据库中的两个表的同步中,利用快照刷新,数据的更新性能也会有很大的改善。快照允许你在本地维护远程数据的副本,但这些副本是只读的。如果你想修改本地副本,必须用高级复制的功能。当你想从一个表或视图中抽取数据时, 你可以从快照中抽取。

1 快照的具体结构

快照的用途比较广泛,主要可以用于性能优化,数据抽取等方面,是Oracle数据仓库处理中的一个重要技术。限于快照技术的复杂性和本人能力的有限,具体内容请查询相关官方帮助文档。

快照技术提供给我们三种刷新机制,分别是:

1) Complete 完全刷新机制,即对表的所有数据进行刷新,如果表的数据量十分庞大的,此法会消耗相当的时间;

2) Fast 快速刷新,即只对数据增量进行刷新;

3) Force 强制刷新,首先判断是否能用快速刷新机制,如不行则用完全刷新机制。

建立快照的基本语法如下:

Create snapshot<具体快照名字>as
建立刷新机制语句如下:

Alter snapshot<具体快照名字>refresh<刷新方式>start with<第一次刷新时间>next<间隔时间表达式>

下面将对Complete和Fast两种刷新机制分别进行介绍

首先我们假定已创建了一个名testshot的快照,具体语句如下:

Create snapshot testshot as< select查询语句>

1.1 完全刷新快照

1)完全刷新快照的建立

Alter snapshot testshot refresh complete start with sysdate 1/720 next sysdate 1/2

上述语句的意思在快照建立的后的第2分钟,将进行第一次刷新,然后每隔12小时,快照自动进行刷新

2)如果想要进行手动刷新,既不受间隔时间的限制,具体语句如下

begin

dbms_refresh.refresh(‘testshot’,’c’)

end

1.2 快速刷新快照即增量刷新快照

如要创建快速快照,则先要的源端数据表上建立快照日志,具体流程如图1所示。

1)在源端数据表上建立快照日志

Create snapshot log on test

2)设定快照刷新时间

Alter snapshot testshot refresh fast start with sysdate next sydate 1/2

从上面的语句中我们可以到其实完全刷新和快速刷新的基本语句是一样,只是刷新机制有所不同,需要的注意的如果你想使用快速刷新方式,则源端主表不能是视图,因为快照日志不能建立在视图上。

如果在应用过程发现快照不能正常工作,我们可以通过查询表user_jobs,来获取相应的信息,其表结构如表1所示。

2 数据快照建立前的准备工作

上面我们基本介绍了快照语句的基本写法和刷新时间的设置,下面我们将介绍应用数据快照我们所要做的准备工作,首先我们需要在本地Oracle数据上建立一个数据库账号,并在其下建立远程数据库链接。
创建账号的语句如下:

Create user binbin identified by binbin default tablespace pan temporarytablespace temp;

Grant connect ,resource to binbin;

Grant create synonym to binbin;

Grant create snapshot to binbin;

Grant create database link to binbin;

上述语句的意思是创建账号binbin,密码为binbin,并赋予其相应的权限,具体含义请查询Oracle官方介绍

建立远程数据库链接,具体语句如下

Create database link <链接名>connectto<远程服务器用户名>identified by“密码” using “TNS配置的实例名“

下面我们将用上述基本语句创建一个名为 bintobin的数据库链接

Create database linke bintobin connect to sa identifiede by “sa” using“test”

创建好数据库链接,意味着我们可以访问远程数据库上的数据了,并可以具体到其中的一个具体表,下面就是一个访问远程数据库上user表的一个快照

Create snapshot testshot as select * from user@test

3 数据快照技术的具体应用

由于现在学校各个部门都建立有自己的应用系统,各个应用系统数据库的建立时间不一,其中的数据结构、数据类型各不相同,所使用的数据库软件也不尽相同,如何快速准确的实现这些数据之间的交互同步,是我一直在研究的课题。使用快照技术就可以很方便的解决现有的问题。

本文来源于 www.14edu.com(论文网) 原文链接:http://www.14edu.com/ligong/jisuanji/05203H122010.html



下面是我院应用快照技术实现各个子系统间数据读取的实例。图2是各个数据库的分布。

关于快照刷新间隔的方面,由于各应用系统数据的更新要求不一。像一卡通消费数据要求隔天就能查到前一天的数据,而有的数据只需要隔两天进行一次更新即可,所以各个快照的具体刷新方式需要根据具体要求进行相应的设置。该方案至实施以来,在网络情况得以保证的前提下,数据的读取工作基本得以正常进行。

4 结束语

Oracle提供的快照技术为我们提供了一个快速读取远程数据的方法。利用快照可以容易的实现不同数据库间的数据同步和复制问题,特别是在实现数据的增量复制问题。一般都采用增量复制的方法来实现数据的同步,特别是在原数据量很大的情况,可以避免因出错而难以实现数据同步的问题。