Oracle基于固化视图的表选择性同步

简介:

在有些业务场景下,有些数据需要共享给第三方,但不想实现全表或者全库的共享,所以就有了以下的文档操作。

前提条件: 1. A 库 主库 B库为远端库 A库部分数据传给B库

1) IP 可以ping通
2) 两边数据库端口1521相通

在B库上面的操作如下:

第一步

在B库上面找到业务数据库账号(例如 此实例 账户为对外业务数据库,需要A库数据,就授权给此账户以下权限)

注意:用DBA账户给testdbuser_B账户授权

grant create database link to testdbuser_B; --创建dblink的权限。

grant create materialized view to testdbuser_B; --创建物化视图的权限。

connect testdbuser_B /xxxxx --连接数据库账户

第二步创建Dblink

create public database link  dblink02
 connect to  testdbuser_A identified by testdb_A
 using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)
(HOST = 192.168.0.129)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME
 = orcl)))'; 

上面语句中 标红的地方输入A库需要给数据的账户 让B库可以通过Dblink访问A数据库

第二步测试Dblink
Select * from store_area@ dblink02;

测试是否可以查询数据库的表

A库操作
在A数据库的表上创建物化视图日志,这个日志记录了主表的变化。

SQL> create materialized view log on E表 with rowid; 主库执行 A 代表表

create materialized view log on F表 with rowid;

选择8张表做物化视图日志则都要用以上命令

在B库操作
单表的物化视图的查询方法 fast

SQL> create materialized view test_A refresh fast with rowid start with sysdate next sysdate+1/1440 as select A.name,A.id from A@dblink02; -----选择特定的字段查询出来
注意:8张表都要创建不同的物化视图方便后面在B库的 联合查询
sysdate +1/1440 指10分钟增量同步一次

在这里说明以下为何不用多表连接的方式:
Oracle 官方有以下说明

      ORA-12015: cannot create a fast refresh snapshot from a complex query

compele
在复杂查询上只能建立全刷新的物化视图. (这种方法比较慢,影响DBlink的性能从而容易拉低数据库的性能,高并发情况下会导致数据库出现卡顿及崩溃)

fast
另外一种可选的方法是在本地建立快速刷新的远程基表的物化视图,然后在本地创建视图. 可以在单表物化视图的方式选择特定的查询参数 从而可有效避免表中所有字段过来

至此 物化视图部署完成。

B库操作联合查询 把物化视图中的筛选出来的字段全部查询出来,在共享表执行以下语句即可(前提条件是在建立物化视图阶段把响应的数据字段查询出来然后根据以下语句进行查询)
select a001,a003,a021,a008,a002,a011,sum(a034+a035),a044,a077,a070,decode(a197,'0','否','是') ,(case when a008 in (select g013 from gd_sq_sqr )then '是' else '否' end ) ,(case when a008 in (select g230 from gd_db_dydb )then '是' else '否' end ),decode(b.xb,'1','男','女') from gz_gr_zz a join cr_gr b on a.a111=b.grbh group by a001,a003,a021,a008,a002,a011,a044,a077,a070,decode(a197,'0','否','是'),decode(b.xb,'1','男','女')

在之前的最优解决方案里面 加上 一个 dblink 用户的授权 只可以让此用户的dblink 同步8张表 对于 dblink 不可同步表的不可控的方式 有了 权限控制的解决方法

-----新建用户只能查看指定的表------------
create user test identified by Tdba;  
grant connect,resource to test;
grant select on yw.JFKH to test;
grant select on yw.JFKH_DETAIL to test;

-----新建用户可以查看、修改指定的表------------
create user test identified by testdba;  
grant connect,resource to test;
grant select ,update on yws.JFKH to test;
grant select,update on yws.JFKH_DETAIL to test;

同时 在 创建 DBlink 的时候 用被权限控制的 账号做 物化视图 可以有效避免 因权限问题 造成的 多表都被同步过去的 情况

相关文章
|
6月前
|
消息中间件 关系型数据库 Kafka
实时计算 Flink版产品使用合集之oracle cdc 抽取新增一张表 可以从savepoint恢复吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
3月前
|
SQL Oracle 关系型数据库
[oracle]使用impdp导入数据时卡在视图
[oracle]使用impdp导入数据时卡在视图
231 2
|
6月前
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用合集之从Oracle数据库同步数据时,checkpoint恢复后无法捕获到任务暂停期间的变更日志,如何处理
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
5月前
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用问题之oracle无主键的表支持同步吗如何实现
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
5月前
|
Oracle 关系型数据库 数据处理
实时计算 Flink版产品使用问题之如何进行Oracle到HBase的同步
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
5月前
|
运维 DataWorks Oracle
DataWorks产品使用合集之在标准模式下,当同步Oracle的表或视图时,是否需要在源端的测试和生产环境中都存在要同步的表或视图
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
47 3
|
6月前
|
Oracle Java 关系型数据库
实时计算 Flink版产品使用合集之在同步Oracle数据时,需要下载并添加到项目中的jar包主要包括哪些
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
6月前
|
资源调度 Oracle 关系型数据库
实时计算 Flink版产品使用合集之同步Oracle数据时,一张表产生了大量的连接数,如何处理
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
6月前
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用合集之如何SQL同步数据到Oracle数据库中
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
6月前
|
消息中间件 Oracle 关系型数据库
实时计算 Flink版操作报错之同步Oracle时出现主题为空的报错该怎么解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。

推荐镜像

更多