oracle物化视图同步

合集下载

基于Oracle物化视图日志的数据同步技术研究

基于Oracle物化视图日志的数据同步技术研究
物 化 视 图 日志 进 行 介 绍 。
作机制 的深入研 究 , 本文分析 了 Orc al e数据库物化视 图 日志对
数 据 操 作 的 记 录 方 式 , 此基 础 上 提 出 了一 种 基 于 Orc 在 al 据 e数
库 物化视图 H志 的数 据同步方法 , 为解决分布 式应用系统 中数
软件 2 1 0 2年第 3 3卷 第 l 期
S F ⅥAR 0T , E
国际 I T传媒 品牌
基于O a 物化视 图 日志 的数据 同步技术研 究 rce l
刘静涛 吴伊萌 张 明安
(15 部 队 ,北京 ,103 ) 96息系统的开发 中, 在 分布 式数据 库和分布 式应 用系统 问的数据 同步 问题是 一个较为常 见且 较难解决 的问
O al 数 据 表 建 立 的 物 化 视 图 日志 主 要 有 两 种 刷 新 类 rce为 型 : 标 识 ( wi)或 主 键 ( r r Ke )3 在 同 一 数 据 库 行 Ro d Pi y y [ ma J 中数 据 表 中 某 条 记 录 的 行标 识 唯 一 且 由 系统 自动 指 定 , 在 不 但 同数 据 库 中 同 一 行 标 识 对 应 的数 据 记 录 可 能 毫 无 关 系 , 此 不 因 适 合 用 于 不 同 节 点 间 表 的 数 据 同 步 。 下 面 对 主 键 刷 新 方 式 的
题 。现有 的各种解决方案存在反映源数据频繁变化比较困难 和数据同步效率低 等问题 。本文通过对 Orc al e数据库的物化视图 日志
机 制的研 究 , 要介 绍 Orc 数据库 物化视 图 日志的数据结构、 数据库记录操作的记录方 式, 出了一种基于 Or l 简 al e 对 提 a e数据库物化 c

Oracle数据库同步技术

Oracle数据库同步技术

基于Oracle数据库的数据同步技术大体上可分为两类:Oracle自己提供的数据同步技术和第三方厂商提供的数据同步技术。

Oracle自己的同步技术有DataGuard,Streams,Advanced Replication和今年刚收购的一款叫做GoldenGate的数据同步软件。

第三方厂商的数据同步技术有Quest公司的SharePlex和DSG的RealSync。

下面对这些技术逐一进行介绍。

一、DataGuard数据同步技术DataGuard是Oracle数据库自带的数据同步功能,基本原理是将日志文件从原数据库传输到目标数据库,然后在目标数据库上应用(Apply)这些日志文件,从而使目标数据库与源数据库保持同步。

DataGuard 提供了三种日志传输(Redo Transport)方式,分别是ARCH传输、LGWR同步传输和LGWR异步传输。

在上述三种日志传输方式的基础上,提供了三种数据保护模式,即最大性能(Maximum Performance Mode)、最大保护(Maximum Protection Mode)和最大可用(Maximum Availability Mode),其中最大保护模式和最大可用模式要求日志传输必须用LGWR同步传输方式,最大性能模式下可用任何一种日志传输方式。

最大性能模式:这种模式是默认的数据保护模式,在不影响源数据库性能的条件下提供尽可能高的数据保护等级。

在该种模式下,一旦日志数据写到源数据库的联机日志文件,事务即可提交,不必等待日志写到目标数据库,如果网络带宽充足,该种模式可提供类似于最大可用模式的数据保护等级。

最大保护模式:在这种模式下,日志数据必须同时写到源数据库的联机日志文件和至少一个目标库的备用日志文件(standby redo log),事务才能提交。

这种模式可确保数据零丢失,但代价是源数据库的可用性,一旦日志数据不能写到至少一个目标库的备用日志文件(standby redo log),源数据库将会被关闭。

Oracle物化视图说明

Oracle物化视图说明

Oracle物化视图说明⼀.物化视图概述Oracle的物化视图是包括⼀个查询结果的对像,它是远程数据的的本地副本,或者⽤来⽣成基于数据表求和的汇总表。

物化视图存储基于远程表的数据,也可以称为快照。

物化视图可以⽤于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执⾏查询时,就可以避免进⾏这些耗时的操作,⽽从快速的得到结果。

物化视图有很多⽅⾯和索引很相似:使⽤物化视图的⽬的是为了提⾼查询性能;物化视图对应⽤透明,增加和删除物化视图不会影响应⽤程序中SQL语句的正确性和有效性;物化视图需要占⽤存储空间;当基表发⽣变化时,物化视图也应当刷新。

物化视图可以查询表,视图和其它的物化视图。

通常情况下,物化视图被称为主表(在复制期间)或明细表(在数据仓库中)。

对于复制,物化视图允许你在本地维护远程数据的副本,这些副本是只读的。

如果你想修改本地副本,必须⽤⾼级复制的功能。

当你想从⼀个表或视图中抽取数据时,你可以⽤从物化视图中抽取。

对于数据仓库,创建的物化视图通常情况下是聚合视图,单⼀表聚合视图和连接视图。

在复制环境下,创建的物化视图通常情况下主键,rowid,和⼦查询视图。

物化视图由于是物理真实存在的,故可以创建索引。

1.1 物化视图可以分为以下三种类型(1)包含聚集的物化视图;(2)只包含连接的物化视图;(3)嵌套物化视图。

三种物化视图的快速刷新的限制条件有很⼤区别,⽽对于其他⽅⾯则区别不⼤。

创建物化视图时可以指定多种选项,下⾯对⼏种主要的选择进⾏简单说明:(1)创建⽅式(BuildMethods):包括BUILD IMMEDIATE和BUILD DEFERRED两种。

BUILD IMMEDIATE是在创建物化视图的时候就⽣成数据。

BUILD DEFERRED则在创建时不⽣成数据,以后根据需要在⽣成数据。

默认为BUILD IMMEDIATE。

(2)查询重写(QueryRewrite):包括ENABLE QUERY REWRITE和DISABLE QUERY REWRITE两种。

oracle物化视图及创建索引

oracle物化视图及创建索引

oracle物化视图及创建索引物化视图是⼀种特殊的物理表,“物化”(Materialized)视图是相对普通视图⽽⾔的。

普通视图是虚拟表,应⽤的局限性⼤,任何对视图的查询,Oracle都实际上转换为视图SQL语句的查询。

这样对整体查询性能的提⾼,并没有实质上的好处。

1、物化视图的类型:ON DEMAND、ON COMMIT⼆者的区别在于刷新⽅法的不同,ON DEMAND顾名思义,仅在该物化视图“需要”被刷新了,才进⾏刷新(REFRESH),即更新物化视图,以保证和基表数据的⼀致性;⽽ON COMMIT是说,⼀旦基表有了COMMIT,即事务提交,则⽴刻刷新,⽴刻更新物化视图,使得数据和基表⼀致。

2、ON DEMAND物化视图物化视图的创建本⾝是很复杂和需要优化参数设置的,特别是针对⼤型⽣产数据库系统⽽⾔。

但Oracle允许以这种最简单的,类似于普通视图的⽅式来做,所以不可避免的会涉及到默认值问题。

也就是说Oracle给物化视图的重要定义参数的默认值处理是我们需要特别注意的。

物化视图的特点:(1) 物化视图在某种意义上说就是⼀个物理表(⽽且不仅仅是⼀个物理表),这通过其可以被user_tables查询出来,⽽得到佐证;(2) 物化视图也是⼀种段(segment),所以其有⾃⼰的物理存储属性;(3) 物化视图会占⽤数据库磁盘空间,这点从user_segment的查询结果,可以得到佐证;创建语句:create materialized view mv_name as select * from table_name 默认情况下,如果没指定刷新⽅法和刷新模式,则Oracle默认为FORCE和DEMAND。

物化视图的数据怎么随着基表⽽更新? Oracle提供了两种⽅式,⼿⼯刷新和⾃动刷新,默认为⼿⼯刷新。

也就是说,通过我们⼿⼯的执⾏某个Oracle提供的系统级存储过程或包,来保证物化视图与基表数据⼀致性。

这是最基本的刷新办法了。

58(转)dblink+物化视图同步两个数据库的表数据

58(转)dblink+物化视图同步两个数据库的表数据

58(转)dblink+物化视图同步两个数据库的表数据dblink+物化视图同步两个数据库的表数据主从库都有download用户注意:如果是在一个库里做物化视图,那么要将查询日志的权限给目标表的用户一、配置tnsnames.ora文件指定到主数据库的网络名,这里是db005二、在从数据库上创建dblink1.给download用户授予创建dblink的权利grant create database link to download;2.创建dblinkconn download/xxcreate database link link_db005_download connect to down load identified by xxx using 'db005';3.测试db-link是否成功select table_name from user_tables@link_db005_download;返回的行数与在master表的查询结果一样三、在主数据库的表上创建物化视图日志,这个日志记录了主表的变化。

1.这里的主表名字是testSQL> create materialized view log on test;2.查看物化视图日志中记录的住表改变行数select count(*) from MLOG$_TEST;四、从数据库上创建物化视图1.给用户download授予create materialized view权限。

grant create materialized view to download;2.创建物化视图create materialized view test refresh fast with primary key st art with sysdate next sysdate+2/1440 as select * from;----这里用的是fast自动更新,fast只更新主表变化的行;with sysdate next sysdate+2/1440 --表示2分钟更新一次----3.测试在主表中insert或者update数据,看物化视图日志中是否记录变化,然后再看到了刷新时间后,主从表的数据是否同步。

物化视图与表同名的作用及用法onprebuilttable

物化视图与表同名的作用及用法onprebuilttable

物化视图与表同名的作用及用法onprebuilttableMaterialized view和snapshot是同义词,都可以使用on prebuilt table。

它的好处是,当删除Materialized view/snapshot 的时候,基表不会被删除,数据仍然有效;为视图/快照的重组带来管理上的方便。

create materialized view emp on prebuilt table as select * from scott.emp;Materialized view created.[@more@]Connected to:Oracle8i Enterprise Edition Release 8.1.7.0.0 - ProductionWith the Partitioning optionJServer Release 8.1.7.0.0 - Production创建物化视图SQL> create materialized view emp as select * from scott.emp;Materialized view created.SQL> select object_name,object_type from user_objects where object_name='EMP';OBJECT_NAME OBJECT_TYPE------------------EMP TABLEEMP UNDEFINED删除物化视图SQL> drop materialized view emp;Materialized view dropped.以上2个对象都被删除了,包括UNDEFINED的EMPSQL> select object_name,object_type from user_objects where object_name='EMP';No row selected。

Oracle中物化视图的使用

Oracle中物化视图的使用
C E R ATE T L T E T (D AB E S UD N I 在 分 布 式 的海 量 数 据 环 境 中 , 息 查 查 询 重 写 (u r e r e 机 制 , 样 不 需 信 q eyrw i ) t 这
询 的速度 问题 显得 尤为重要 。 传统 的查询 要修 改原有 的查 询语句 , rc o al 自动选 VAR HAR2 ( 0) P I e会 C 1 R MARY K Y, E
RFE 等 法 进 刷 : E s 方 来 行 新 RH

ED N;

oN c .创 建 一 个 J OB, J 1 1 n运 叫 OB ,mi 果 想 修 改 本 地 副 本 , 须 用 高 级 复 制 的功 c MM I 指 出 物 化 视 图 在 对 基 表 的 行 1次 必 O T 进 行 调 用 TE T过 程 的 操作 。 S 能 。当想从一个 表或视 图中抽取数 据时 , D ML 操 作 提 交 的 同 时进 行 刷 新
① 查 询 重 写 ( eyRe r e : 括 Qur w i ) 包 t
Ⅲ 本地操作 :
・ 以 HR 登 录 , 建 基 于 远 端 创
解 决 这 种 问 题 , AC E 中 设 计 了 物 化 E OR L NAB E L Q UE Y R R W R TE 和 S O E I C TT 的 主 键 表 S UD NT 的 物 化 视 T E
或 者 用 来 生 成 基 于 数 据 表 求 和 的 汇 总 表 。 询 物 化 视 图 来 得 到 结 果 。 默 认 为 基 于 远 程 表 的 也 可 以 s
T Y R EW RI E

As s L c E E T
u DENT@ M Y

物化视图使用大全

物化视图使用大全

物化视图使用大全物化视图是包括一个查询结果的数据库对象,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。

物化视图存储基于远程表的数据,也可以称为快照。

对于复制,物化视图允许你在本地维护远程数据的副本,这些副本是只读的。

如果你想修改本地副本,必须用高级复制的功能。

当你想从一个表或视图中抽取数据时,你可以用从物化视图中抽取。

对于数据仓库,创建的物化视图通常情况下是聚合视图,单一表聚合视图和连接视图。

物化视图可以查询表,视图和其它的物化视图。

一、关于物化视图日志:查询物化视图日志文件格式:desc mlog$_lzwmvtest;创建物化视图时默认指定物化视图中存在主键,如果不指定,那么创建的物化视图日志文件的基表必须存在主键,否则会报错Demo:对一个表test创建日志:create materialized view log on test;那么会报:表'LZWMVTEST'不包含主键约束条件这种情况下,就必须指定日志文件结构比如:create materialized view log on test with rowid(具体的针对日志内容方面的在另外一个专题里说明,这里就简述到此)二、关于生成数据和刷新:1>生成数据两大选项:build immediate build deferredBuild immediate:在创建物化视图的同时根据主表生成数据Bulid deferred:在创建物化视图的同时,在物化视图内不生成数据,如果此时没有生成数据,以后可以采取:EXEC DBMS_MVIEW.Refresh(‘MV_name’,’C’),注意必须使用全量刷新,默认是增量刷新,所以这里参数必须是C,因为之前都没有生成数据,所以必须全量。

2>关于刷新²刷新方式:complete fast forceComplete :完全刷新整个物化视图,相当于重新生成物化视图,此时即时增量刷新可用也全量刷新ØFast:当有数据更新时依照相应的规则对物化视图进行更新(此时必须创建物化视图日志(物化视图日志记录了数据更新的日志),关于日志的说明,参照“物化视图日志文件介绍”)ØForce:当增量刷新可用则增量刷新,当增量刷新不可用,则全量刷新(此项为默认选项)不过从实际情况出发,应该尽量不使用默认选项,可以考虑使用增量刷新,对大表特别有效,大表全量更新速度是非常慢的,特别是在存在索引的情况下(在创建物化视图语句中,可能某些限制查询的条件,导致了增量刷新无法使用,这个是需要注意的,具体是哪类语句导致fast刷新不可用,有待总结…..)²刷新时间:on demand on commit start with/ nextOn demand:在需要刷新时进行刷新(人工判断)On commit:在基表上有提交操作时,进行更新Start with:指定首次刷新的时间(一般指定的是当前时间,不过也可以在创建物化视图时不生成数据,则可以考虑在指定的时间刷新,从而生成数据)Next:刷新的周期时间三、基于主键的物化视图和ROWID的物化视图的说明创建物化视图日志时,指定了记录更新的原则即with 后面的primary 或者rowid 或者object id等等,后面,默认是以primary key为记录更新,在物化视图内也是以此为更新的原则。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.目标服务器A,数据库oracle,待同步数据表city,用户hnjcfx,口令hnjcfx
2.同步服务器B,数据库oracle,需要同步A中city表数据,服务名192(参见tnsnames.ora文件中配置,按照格式需自己配置)
192 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.192)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = fantlam)
)
)
注:HOST 为目标服务器IP地址
Fantlam为目标服务器数据库实例名
3.登录B数据库,在Boracle数据库中创建连接Aoracle数据库的连接名testlk:Create public database link testlk connect to hnjcfx identified by hnjcfx using ‘192’
注:目标方数据库(A)的init.ora文件中的global_names设为false。

创建数据库链接的帐号(B)必须有CREATE DATABASE LINK或CREATE PUBLIC DATABASE LINK的系统权限,用来登录到远程数据库的帐号(hnjcfx)必须有CREATE SESSION权限。

这两种权限都包含在CONNECT角色中(CREATE PUBLIC DATABASE LINK权限在DBA中)。

4.在A数据库中创建存储日志视图
Create materialized view log on city
5.在B 数据库中创建物化视图city
create materialized view city refresh force on demand with rowid START WITH TO_DATE('08-12-2008 16:40:00','dd-mm-yyyy hh24:mi:ss') NEXT SYSDATE+1/(24*60)as SELECT * from city@testlk;
注:如果24小时同步刷新数据改动SYSDATE+1
6.B数据库中city视图是由A同步来的,只可以做查询操作,无增改删操作。

相关文档
最新文档