最近在做一个项目,涉及到数据库同步的相关知识,后来通过向单位的dba学习,最终选择了oracle的自身同步:使用物化视图完成数据的同步,具体步骤如下:
需求:要求从源数据库用户向目标数据库用户同步数据。
第一步:创建源数据库(schema)--source用户
SQL> create user source identified by "password"; SQL> grant connect,resource to source; SQL> GRANT CREATE MATERIALIZED VIEW TO source; SQL> grant CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK to source;
第二步:创建目标数据库(schema)--target用户
SQL> create user target identified by "password"; SQL> grant connect,resource to target ; SQL> GRANT CREATE MATERIALIZED VIEW TO target ; SQL> grant CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK to target ;
第三步:登录源数据库用户--source用户,执行所有sql语句。
SQL> conn source/password;(此语句为linux,登录用户命令)
SQL> @/home/dengqs/all.sql; (注意:假设你所有表的all.sql文件在/home/dengqs/目录下)
第四步:登录目标数据库用户--target用户,创建目标用户下的dblink。
SQL>conn target/password;(此语句为linux,登录用户命令)
SQL> CREATE PUBLIC DATABASE LINK 名称 CONNECT TO 用户名(原库) IDENTIFIED BY "密码" USING '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(Host = 源库ip)(PORT = 源库端口))) (CONNECT_DATA = (SERVER = DEDICATED) (SID= 源库sid)))'; 例子如下: CREATE PUBLIC DATABASE LINK link_target CONNECT TO source IDENTIFIED BY "password" USING '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(Host = 192.168.1.1)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SID= dengqsxxx)))';
第五步:登录源数据库--source用户,创建物化视图log
SQL> conn source/password;
SQL> create materialized view log on 要同步的表名称; 注意:如果需要同步的表有多个要同步到目标数据,就执行多次,假设要同步t_users,t_message.则执行:如下: SQL> create materialized view log on t_users; SQL> create materialized view log on t_message;
第六步:登录目标数据用户--target用户,创建物化视图
SQL> conn source/password;
CREATE MATERIALIZED VIEW 物化视图名称(就是同步数据的表名称) refresh force on demand start with sysdate next sysdate + 1/1440 AS SELECT * FROM 要同步的表的名称(跟物化视图名称一样)@第四步创建的dblink的名称; 例如:CREATE MATERIALIZED VIEW t_office refresh force on demand start with sysdate next sysdate + 1/1440 AS SELECT * FROM t_office@link_target;
第七步骤:登录目标数据库用户--target用户,创建不同步表的数据结构
SQL> conn source/password;
SQL> @/home/dengqs/butongbu.sql; (注意:假设你不同步的表的butongbu.sql文件在/home/dengqs/目录下)
以上 步骤完成之后,元数据库就会向目标数据库同步要同步的表的数据。
相关推荐
Oracle物化视图是一种数据库对象,它存储了查询结果,以提供快速的数据访问,特别适合于需要频繁查询但计算过程复杂或涉及大量数据连接的场景。物化视图的使用可以显著提高查询性能,因为它避免了每次查询时的计算...
Oracle物化视图日志是一种强大的数据同步技术,尤其适用于分布式数据库和分布式应用系统之间的数据一致性维护。在当今信息化系统中,随着技术的快速发展,数据的分布性和实时性需求日益增强,数据同步成为了一个关键...
【Oracle物化视图实现数据同步复制】 Oracle物化视图是一种高级的数据管理工具,用于在数据库间实现数据的同步复制。物化视图的概念首次出现在Oracle8i中,它是一个实际存储在数据库中的预计算结果集,可以提高查询...
Oracle物化视图是一种在数据库中预先计算并存储视图查询结果的数据对象,它与普通的视图不同,普通视图在查询时动态地基于基表数据生成结果,而物化视图则拥有自己的物理存储,提供了对数据的快速访问。在本篇循序渐...
1. **ONDEMAND**:默认情况下,物化视图采用的是ONDEMAND模式,即只有当用户显式地请求刷新时,Oracle才会更新物化视图中的数据。这是一种最简单的创建方式,适用于数据变化不频繁或者对数据新鲜度要求不高的场景。 ...
"利用ORACLE物化视图建立报表数据库.pdf" ...利用ORACLE物化视图建立报表数据库是建立独立报表数据库的有效方法,可以满足报表查询的需求,提高生产数据库服务器的处理效率,并为过渡到数据仓库打下基础。
此外,物化视图还可以用于数据复制和移动计算,例如在一个数据中心创建的物化视图可以在另一个数据中心同步,以实现数据的分布和备份。 在使用物化视图时,需要注意的是,由于物化视图需要占用额外的存储空间,并且...
Oracle的物化视图是一种数据库对象,它存储了查询结果,从而提供了一种高效的数据访问方式。物化视图的主要目标是提升查询性能,尤其是在处理复杂查询、连接操作或聚合计算时。它们在数据仓库环境中尤其有用,因为...
Oracle物化视图是Oracle数据库中一种非常重要的特性,它提供了数据的一致性视图,通常用于实现数据的异步复制。本配置指导书主要针对Oracle高级复制中的物化视图,旨在帮助用户理解并成功配置物化视图,以满足在实际...
Oracle物化视图是数据库管理系统Oracle中的一种高级特性,它为用户提供了一种高效的数据管理和查询优化手段。物化视图的出现,主要是为了解决复杂查询的性能问题以及实现数据的分布式管理。从早期的快照概念到9i版本...
Oracle物化视图是一种在数据库管理系统中用于提升性能和数据整合的重要工具,尤其适用于处理大量数据和复杂的查询。物化视图本质上是一个预先计算并存储的查询结果集,它不仅提供了一种数据缓存的方式,还可以实现...
Oracle物化视图是Oracle数据库系统中一种强大的性能优化工具,它允许用户预先计算和存储复杂的查询结果,以便后续的查询能快速获取数据。物化视图是数据库中实际存储的表,其内容反映了某个查询在创建时的结果,而...
Oracle到Oracle的数据同步是一个常见的需求,特别是在企业级应用中,为了保证多个数据库实例间的数据一致性,需要进行实时或定时的数据同步。在这个场景中,我们关注的是如何在两个不同的Oracle数据库之间实现数据表...
物化视图是Oracle数据库提供的一种强大工具,用于提高查询性能和简化数据分发。 1. **物化视图的基本概念**: - 物化视图是预先计算好的查询结果,存储在表的形式中,可以提供快速的数据访问。它们是基于源表的...
Oracle物化视图是数据库管理系统中的一个重要特性,尤其在实现高效的数据复制和系统容灾方案中扮演着关键角色。在Oracle数据库中,物化视图是预先计算并存储查询结果的一种方式,它允许用户快速访问汇总或特定时点的...
6. 为了管理物化视图的刷新,可以使用`DBMS_MVIEW.REFRESH`过程,如`EXEC DBMS_MVIEW.REFRESH('MV1')`或`EXEC DBMS_MVIEW.REFRESH('MV1', 'C')`,其中`'C'`参数表示完成刷新。 7. ITPUX技术网提供了更多关于Oracle ...
3. **高性能应用**:在对性能要求极高的应用中,物化视图日志可以提供近乎实时的数据同步能力。 #### 四、Oracle 物化视图日志的具体操作案例 以下是一些具体的物化视图日志创建示例: 1. **创建物化视图日志**:...
整个数据迁移过程,分为两部分:全量迁移增量迁移过程描述:增量数据收集 (创建oracle表的增量物化视图)进行全量复制进行增量复制 (可并行进行数据校验)原库停写,切到新库架构说明: 一个Jvm Container对应多个...