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自己的同步技术有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的物化视图是包括⼀个查询结果的对像,它是远程数据的的本地副本,或者⽤来⽣成基于数据表求和的汇总表。
物化视图存储基于远程表的数据,也可以称为快照。
物化视图可以⽤于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执⾏查询时,就可以避免进⾏这些耗时的操作,⽽从快速的得到结果。
物化视图有很多⽅⾯和索引很相似:使⽤物化视图的⽬的是为了提⾼查询性能;物化视图对应⽤透明,增加和删除物化视图不会影响应⽤程序中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物化视图及创建索引物化视图是⼀种特殊的物理表,“物化”(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+物化视图同步两个数据库的表数据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
物化视图与表同名的作用及用法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中物化视图的使用
询 的速度 问题 显得 尤为重要 。 传统 的查询 要修 改原有 的查 询语句 , 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为记录更新,在物化视图内也是以此为更新的原则。
oracle 数据库表同步方法
oracle 数据库表同步方法Oracle数据库是一种关系型数据库管理系统,可以用于存储和管理大量数据。
在日常的数据库管理工作中,经常会遇到需要将数据从一个表同步到另一个表的情况。
本文将介绍几种常见的Oracle数据库表同步方法。
方法一:使用INSERT INTO SELECT语句INSERT INTO SELECT语句可以将一个表的数据插入到另一个表中。
首先,我们需要创建目标表,确保目标表的结构与源表相同。
然后,使用INSERT INTO SELECT语句将源表的数据插入到目标表中。
该方法适用于数据量较小、结构相同的表之间的同步。
方法二:使用MERGE语句MERGE语句可以同时执行插入、更新和删除操作,可以将源表的数据同步到目标表中。
首先,我们需要创建目标表,确保目标表的结构与源表相同。
然后,使用MERGE语句将源表的数据同步到目标表中。
该方法适用于数据量较大、需要同时进行插入、更新和删除操作的表之间的同步。
方法三:使用Oracle GoldenGateOracle GoldenGate是一种高性能的数据同步和复制工具,可以实现实时的、零数据丢失的数据同步。
使用Oracle GoldenGate可以将源表的数据实时同步到目标表中,并保持数据的一致性。
该工具适用于对数据同步要求较高的场景,但需要购买和配置相应的许可证和环境。
方法四:使用Oracle Data PumpOracle Data Pump是Oracle数据库自带的一种数据导入导出工具,可以将表数据导出为二进制文件,然后再导入到目标表中。
使用Oracle Data Pump可以将源表的数据导出为.dmp文件,然后再导入到目标表中。
该方法适用于数据量较大、需要跨不同数据库实例进行数据同步的场景。
方法五:使用外部表外部表是一种特殊的表,它不存储数据,而是通过定义外部表和数据文件的映射关系,实现对外部文件中数据的查询和操作。
可以使用外部表将数据从源表同步到目标表。
Oracle数据库的视图
Oracle数据库的视图使⽤视图的优点:1.简化数据操作:视图可以简化⽤户处理数据的⽅式。
2.着重于特定数据:不必要的数据或敏感数据可以不出现在视图中。
3.视图提供了⼀个简单⽽有效的安全机制,可以定制不同⽤户对数据的访问权限。
4.提供向后兼容性:视图使⽤户能够在表的架构更改时为表创建向后兼容接⼝。
创建或修改视图语法CREATE [OR REPLACE] [FORCE] VIEW view_nameAS subquery[WITH CHECK OPTION ][WITH READ ONLY]OR REPLACE :若所创建的试图已经存在,ORACLE ⾃动重建该视图;FORCE :不管基表是否存在 ORACLE 都会⾃动创建该视图;subquery :⼀条完整的 SELECT 语句,可以在该语句中定义别名;WITH CHECK OPTION :插⼊或修改的数据⾏必须满⾜视图定义的约束;WITH READ ONLY :该视图上不能进⾏任何 DML 操作。
删除视图语法DROP VIEW view_name键保留表是理解连接视图修改限制的⼀个基本概念。
该表的主键列全部显⽰在视图中,并且它们的值在视图中都是唯⼀且⾮空的。
也就是说,表的键值在⼀个连接视图中也是键值,那么就称这个表为键保留表。
物化视图:创建物化视图语法、CREATE METERIALIZED VIEW view_name[BUILD IMMEDIATE | BUILD DEFERRED ]REFRESH [FAST|COMPLETE|FORCE][ ON [COMMIT |DEMAND ] | START WITH (start_time) NEXT(next_time) ] ASsubqueryBUILD IMMEDIATE 是在创建物化视图的时候就⽣成数据BUILD DEFERRED 则在创建时不⽣成数据,以后根据需要再⽣成数据。
默认为 BUILD IMMEDIATE。
oracle数据同步方法
oracle数据同步方法Oracle数据库同步是指将一个数据库的数据和变化同步到另一个数据库中,以保证数据的一致性和可用性。
Oracle提供了多种数据同步方法,包括物理备份和还原、逻辑备份和还原、数据泵导出和导入、基于日志的增量备份和还原、GoldenGate数据复制等。
下面将详细介绍这些方法。
1.物理备份和还原:物理备份是将数据库的数据文件、控制文件和日志文件复制到备份目录,还原则是将备份文件拷贝到目标数据库中恢复。
这种方法适用于大规模数据库,具有高效性和实时性,但需要占用大量的存储空间。
2.逻辑备份和还原:逻辑备份是将数据库中的逻辑对象(如表、视图、索引等)导出为可读的SQL语句,还原则是将导出的SQL语句在目标数据库中执行。
这种方法适用于小规模数据库,具有可读性和可移植性,但不适用于大规模数据库,因为导出和导入的过程较为耗时。
3. 数据泵导出和导入:数据泵是Oracle提供的一种高效的逻辑备份和还原方法,它通过使用数据库内部的数据泵工具,将数据库中的逻辑对象和数据导出为二进制文件,再通过导入工具将二进制文件恢复到目标数据库中。
数据泵导出和导入可以实现高效的数据同步和迁移,支持并发处理和并行执行,适用于大规模数据库。
4.基于日志的增量备份和还原:基于日志的增量备份是指将源数据库的日志文件传送给目标数据库,目标数据库通过解析和应用这些日志文件,实现源数据库和目标数据库之间的数据同步。
这种方法实时性较高,适用于大规模数据库的实时备份和恢复。
5. GoldenGate数据复制:GoldenGate是Oracle提供的一种高性能、实时数据复制解决方案。
它通过捕获源数据库的日志文件并将其传送到目标数据库,实现源数据库和目标数据库之间的数据同步和一致性保证。
GoldenGate具有较低的延迟、高可用性和强大的数据筛选和转换能力,适用于大规模和复杂的数据同步场景。
除了上述方法,Oracle还提供了一些辅助工具和技术来增强数据同步的效率和可靠性,如使用数据库链接进行数据复制、使用物化视图进行数据汇总和聚合、使用数据同步代理进行数据分发等。
Oracle物化视图,物化视图日志,增量刷新同步远程数据库
Oracle物化视图,物化视图⽇志,增量刷新同步远程数据库1.创建DBLINK-- Drop existing database linkdrop public database link LQPVPUB;-- Create database linkCREATE DATABASE LINK LQPVPUB 6CONNECT TO "INTEPDM" identified by "password" 8using "LQPVPUB"2.创建物化视图⽇志(远程主机操作)CREATE MATERIALIZED VIEW LOG ON dm_basicmodelWITH PRIMARY KEYINCLUDING NEW VALUES;3.创建物化视图CREATE MATERIALIZED VIEW mv_model --创建物化视图BUILD IMMEDIATE --在视图编写好后创建REFRESH FAST WITH PRIMARY KEY--根据主表主键增量刷新(FAST,增量)ON DEMAND -- 在⽤户需要时,由⽤户刷新ENABLE QUERY REWRITE --可读写ASSELECT bm_id,bm_partid,bm_code from dm_basicmodel@LQPVPUB t --查询语句4.删除物化视图和⽇志⽇志和物化视图要分开删除DROP MATERIALIZED VIEW LOG ON GG_ZLX_ZHU@TOCPEES;DROP MATERIALIZED VIEW GG_ZLX_ZHU;5.物化视图更新CREATE OR REPLACE PROCDURE P_MVIEW_REFRESH ASBEGINDBMS_MVIEW.REFRESH('GG_ZLX_ZHU,GG_ZLX_FU','ff');END P_MVIEW_REFRESH;注意:5.1、如果需要同时刷新多个物化视图,必须⽤逗号把各个物化视图名称连接起来,并对每个视图都要指明刷新⽅式(f、增量刷新,c、完全刷新,?、强制刷新)。
oracle两台数据库数据同步
oracle两台数据库数据同步在企业应用中,数据库是承载重要数据的核心存储系统。
为了满足不同业务需求和数据处理能力的要求,有些企业会设计和建立多台数据库。
然而,在多台数据库使用的情况下,数据同步成为一个关键问题。
本文将介绍Oracle数据库中两台数据库数据同步的方法和步骤。
一、概述数据同步是指在不同数据库之间保持数据的一致性,确保多台数据库中的数据始终保持同步。
在Oracle数据库中,有多种方法可以实现数据同步,如使用Oracle Data Guard、Oracle GoldenGate和Oracle Streams等。
下面将针对Data Guard和GoldenGate进行详细介绍。
二、Oracle Data GuardOracle Data Guard是Oracle数据库的一种内置工具,用于在两台或多台数据库之间实现数据同步和容灾。
它通过将主数据库上的事务日志传输给备用数据库,实现数据的同步。
Data Guard提供了两种数据同步模式:物理数据同步和逻辑数据同步。
1. 物理数据同步物理数据同步是指直接将主数据库的数据文件复制到备用数据库,实现数据的一致性。
物理数据同步可以通过Data Guard的物理备用来实现。
在物理备用中,主数据库和备用数据库通过Redo Apply进程将主数据库上的事务日志应用到备用数据库上,从而实现数据的同步。
2. 逻辑数据同步逻辑数据同步是指将主数据库中的逻辑变更操作转换为备用数据库上的等效操作。
逻辑数据同步可以通过Data Guard的逻辑备用来实现。
在逻辑备用中,主数据库和备用数据库之间使用SQL Apply进程将主数据库上的逻辑变更应用到备用数据库上。
逻辑备用还可以实现跨操作系统平台的数据同步。
三、Oracle GoldenGateOracle GoldenGate是Oracle提供的一套高效灵活的实时数据复制、迁移和整合解决方案。
它可以在Oracle数据库之间,或者Oracle数据库与其他非Oracle数据库之间实现数据同步。
oracle-----视图物化视图
oracle-----视图物化视图什么是视图视图(view),也称虚表, 不占⽤物理空间,这个也是相对概念,因为视图本⾝的定义语句还是要存储在数据字典⾥的。
视图只有逻辑定义。
每次使⽤的时候,只是重新执⾏SQL。
视图是从⼀个或多个实际表中获得的,这些表的数据存放在数据库中。
那些⽤于产⽣视图的表叫做该视图的基表。
⼀个视图也可以从另⼀个视图中产⽣。
视图的定义存在数据库中,与此定义相关的数据并没有再存⼀份于数据库中。
通过视图看到的数据存放在基表中。
视图看上去⾮常象数据库的物理表,对它的操作同任何其它的表⼀样。
当通过视图修改数据时,实际上是在改变基表中的数据;相反地,基表数据的改变也会⾃动反映在由基表产⽣的视图中。
由于逻辑上的原因,有些Oracle视图可以修改对应的基表,有些则不能(仅仅能查询)。
还有⼀种视图:物化视图(MATERIALIZED VIEW ),也称实体化视图,快照(8i 以前的说法),它是含有数据的,占⽤存储空间。
视图的作⽤1)提供各种数据表现形式, 可以使⽤各种不同的⽅式将基表的数据展现在⽤户⾯前, 以便符合⽤户的使⽤习惯(主要⼿段: 使⽤别名);2)隐藏数据的逻辑复杂性并简化查询语句, 多表查询语句⼀般是⽐较复杂的, ⽽且⽤户需要了解表之间的关系, 否则容易写错; 如果基于这样的查询语句创建⼀个视图, ⽤户就可以直接对这个视图进⾏"简单查询"⽽获得结果. 这样就隐藏了数据的复杂性并简化了查询语句.这也是oracle提供各种"数据字典视图"的原因之⼀,all_constraints就是⼀个含有2个⼦查询并连接了9个表的视图(在catalog.sql中定义);3)执⾏某些必须使⽤视图的查询. 某些查询必须借助视图的帮助才能完成. ⽐如, 有些查询需要连接⼀个分组统计后的表和另⼀表, 这时就可以先基于分组统计的结果创建⼀个视图, 然后在查询中连接这个视图和另⼀个表就可以了;4)提供某些安全性保证. 视图提供了⼀种可以控制的⽅式, 即可以让不同的⽤户看见不同的列, ⽽不允许访问那些敏感的列, 这样就可以保证敏感数据不被⽤户看见;5)简化⽤户权限的管理. 可以将视图的权限授予⽤户, ⽽不必将基表中某些列的权限授予⽤户, 这样就简化了⽤户权限的定义。
Oracle数据库数据同步方案
Oracle数据库数据同步⽅案
⼀、⽐较原始的⽅案:触发器/Job/快照+dblink的⽅式,可实现同步和定时刷新;
⼆台不同的数据库服务器,从⼀台数据库服务器A的⼀个⽤户读取另⼀台数据库服务器B下某个⽤户的数据,可以通过dblink来完成。
⼆、通过物化视图定时刷新来实现数据同步。
物化视图刷新⽅式有增量刷新和完全刷新两种模式;
三、⾼级复制,分为多主复制和物化视图复制两种模式。
其中多主复制能进⾏双向同步复制和异步复制;物化视图⽤于单向复制,定时刷新,与第⼆条类似;
四、流复制,可实现实时和⾮实时同步;
五、GoldenGate复制,Oracle新买的复制产品,后⾯应当会取代流复制。
它不仅能提供Oracle数据库之间的数据复制⽀持,还⽀持在不同种数据库之间的数据同步,也可设置实时和⾮实时同步;
六、DataGurd,此技术主要⽤于容灾备份,是整个库级别的备份。
其中第⼀、⼆和三采⽤的是Oracle数据库内部的机制来实现;⽽第四、五和六采⽤挖掘数据库⽇志的⽅式实现;后三种在性能上会更好⼀些。
oracle数据同步解决方案
oracle数据同步解决方案
《Oracle数据同步解决方案》
Oracle数据库作为业界领先的关系型数据库管理系统,被广泛应用于企业的核心业务系统中。
在日常运营过程中,数据同步是一个非常重要的问题,特别是在多个地点或多个数据库之间需要实时同步数据时。
为了解决这个问题,需要一套稳定可靠的数据同步解决方案。
首先,Oracle自身提供了多种数据同步工具,比如GoldenGate 和Data Guard。
这些工具可以使用户在多个数据库之间实现高效的数据同步,确保数据的一致性和完整性。
GoldenGate可以在不同数据库之间实时同步数据,而Data Guard则可以提供可靠的数据备份和灾难恢复功能。
另外,还有一些第三方的数据同步工具,比如DBSync和HVR,它们可以与Oracle数据库无缝集成,并提供更加灵活和定制化的数据同步方案。
这些工具通常提供了更多的功能和配置选项,可以满足不同企业的特定需求。
除了工具之外,还可以考虑使用云平台提供的数据同步服务。
比如Oracle自己的Oracle Cloud,以及亚马逊的AWS和微软的Azure等云平台,都提供了数据同步服务,可以帮助企业快速搭建稳定可靠的数据同步方案。
总之,针对Oracle数据库的数据同步需求,企业可以根据自身的实际情况选择合适的解决方案。
无论是使用自带的工具、
第三方的数据同步软件,还是运用云平台的数据同步服务,都需要根据数据量、频次、实时性等因素进行考量,以确保数据同步的效率和稳定性。
选择合适的数据同步解决方案,将为企业带来更高的生产效率和数据安全。
物化视图(materializedview)实现数据迁移、数据定时同步
物化视图(materializedview)实现数据迁移、数据定时同步近⽇公司有⼀个9i 的Oracle数据库,运⾏效率低下。
想要将其升级到11G. 但是升级之前要将数据进⾏同步,好在表不是很多。
只有三张表。
业务压⼒也不⼤,就想到了使⽤物化视图的⽅式将数据同步过来。
1.1 环境数据库主机IP地址TNS DB_LINK ORACLE 版本db210.100.99.114to_11811Gdb110.100.99.1189iG上⾯是本次操作测试的环境。
说明: 将9i 数据库中的表实时同步到11G.1.2 在db2配置指向db1的tns配置tns ⽅便创建db link。
当然不配置也可以创建。
此步完全依赖于个⼈爱好。
我习惯配置,在创建db link时,会更简洁⼀些。
TNS如下: t118 =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.100.99.114)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = ktdb)))1.3 在db2的数据库中创建db linkcreate public database link to_118 connect to test identified by test123 using 't118';1.4 给db1中相应的表上添加物化视图⽇志1.4.1 有主键表create table test(id number,name varchar2(20));alter table test add constraint pk_testid primary key(id);create materialized view log on test with primary key;对于有主键的表,⽇志依赖于主键。
create materialized view log on test with primary key;1.4.2 ⽆主键表对于⽆主键的表,依赖于rowidcreate table test_noprimarykey(id number,name varchar2(20));create materialized view log on test_noprimarykey with rowid;1.5在db2上创建物化视图分布式查询中(也就是使⽤db_link),不能以on commit ⽅式指定刷新⽅式,创建时会遇到ORA-12054.1.5.1 有主键表的物化视图CREATE MATERIALIZED VIEW dbmon.test(id,name)REFRESH forcestart with sysdate next sysdate+1/1440 # 指定刷新频率为1分钟ASSELECT id,name FROM dbmon.test@to_118;1.5.2 ⽆主键表的物化视图CREATE MATERIALIZED VIEW test_noprimarykey(id,name)REFRESH forcestart with sysdate next sysdate+1/1440 # 指定刷新频率为1分钟WITH rowidASSELECT id,name FROM dbmon.test_noprimarykey@to_118;1.6 测试数据同步在db1数据库插⼊数据后,稍等 1分钟,然后连到db2数据库查看结果。
oracle物化视图实现数据同步
ORACLE物化视图实现数据同步简介NC56新增双引擎查询功能,以下报表支持此功能:财务:总账—辅助余额表总账—辅助明细账总账—辅助属性余额表总账—多维分析表应收—余额表应收—应收账龄分析应付—余额表应付—应付账龄分析供应链:采购管理—供应商暂估余额表销售管理—综合日报库存管理—收发存汇总表库存管理—出入库流水账存货核算—收发存汇总表存货核算—入库汇总表存货核算—出库汇总表本功能只支持oracle数据库。
要使用此功能,需要在oracle 数据库上按以下步骤进行配置。
一、按照NC标准创建一个oracle空用户,假设为nc56des(以下称为目标用户)二、使用该空用户创建到NC数据库的数据库链接,假设NC数据库用户为nc56(以下称为源用户)Create database link dblink connect to nc56 identified by密码using ora10g_127.0.0.1;需要注意:如果源用户和目标用户未在同一台数据库服务器上,则在目标数据库服务器上的tnsnames.ora中已经配置了源用户所在数据库服务器,本例假设源用户和目标用户在同一台服务器上。
三、在源用户上执行以下sql:1、对于已定义主键的表,分别执行以下sql:create materialized view log on 表名with primary key;2、对于未定义主键的表,分别执行以下sql:create materialized view log on 表名with rowid;四、在目标用户上执行以下sql:1、对于已定义主键的表,分别执行以下sql:create materialized view 表名refresh fast start with sysdate next sysdate+10/1440 as select * from 表名@dblink;以上假设为10分钟同步一次,可以根据需要进行修改同步的频率,单位为“分钟”2、对于未定义主键的表,分别执行以下sql:create materialized view 表名refresh fast with rowid start with sysdate next sysdate+10/1440 as select * from表名@dblink;以上假设为10分钟同步一次,可以根据需要进行修改同步的频率,单位为“分钟”需要特别注意,不要将同步时间间隔设置的太短,最短不要低于10分钟,否则对数据库服务器压力太大。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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同步来的,只可以做查询操作,无增改删操作。