热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

Oracle物化视图创建实例-mysql教程

司的项目中遇到需要从其它系统的数据库中取数据进行统计分析的问题,初步选择使用ORACLE的ODI工具进行抽数,但是对方提供的数据库

司的项目中遇到需要从其它系统的数据库中取数据进行统计分析的问题,初步选择使用ORACLE的ODI工具进行抽数,但是对方提供的数据库

公司的项目中遇到需要从其它系统的数据库中取数据进行统计分析的问题,初步选择使用Oracle的ODI工具进行抽数,但是对方提供的数据库用户下没有任何对象,只是有查询所有表的权限,因此无法做数据反向。于是决定使用物化视图,把对方数据库中的数据拿过来,虽然数据量比较大,但是每月只拿一次,而且如果设置成增量更新,也不会太慢。现在记录下物化视图的创建过程(以一张表为例)。

一、准备条件以及备注

假设双方数据库都是ORACLE10g,需要同步过来的表名叫:GG_ZLX_ZHU,对方数据库用户名:username,密码:password,SID:CPEES。

二、开始干活

1、首先要创建DB_LINK

CREATE DATABASE LINK to_cpees

CONNECT TO "username" identified by "password"

using "CPEES"

其中CPEES为新建的到对方数据库的TNS。执行,现在我们就已经创建了到对方数据库的DB_LINK TO_CPEES。

2、创建物化视图快速刷新日志

因为上面说过,以后视图的刷新将采用增量刷新的方式,因此,为配合增量刷新,ORACLE要求要在住表上建立物化视图日志。

CREATE MATERIALIZED VIEW LOG ON GG_ZLX_ZHU

WITH PRIMARY KEY

INCLUDING NEW VALUES;

(上面的SQL要在远程数据库上执行,不能在本地执行)

3、创建物化视图

物化视图,从名字上面来开,它应该是属于视图,但是确实物化。其物化是针对普通视图并没有真正的物理存储而言,其实可以简单的把物化视图看做一个物理表(不再做具体解释)。

CREATE MATERIALIZED VIEW GG_ZLX_ZHU --创建物化视图

BUILD IMMEDIATE --在视图编写好后创建

REFRESH FAST WITH PRIMARY KEY --根据主表主键增量刷新(FAST,增量)

ON DEMAND -- 在用户需要时,由用户刷新

ENABLE QUERY REWRITE --可读写

AS

SELECT * FROM GG_ZLX_ZHU@TO_CPEES; --查询语句

4、视图刷新

根据业务需要,每月不定时刷新,所以不能是JOB,而且数量多,所以也不能一个一个刷新。根据以上条件,选择使用ORACLE自带工具DBMS_MVIEW工具包中REFRESH方法对物化视图进行刷新。该方法有两个参数,,第一个参数是需要刷新的物化视图名称,第二个参数是刷新方式。我们可以写存储过来,对每个物化视图调用一次REFRESH方法,也可以使用“,”把物化视图连接以来,一次刷新。如下:

CREATE OR REPLACE PROCDURE P_MVIEW_REFRESH AS

BEGIN

DBMS_MVIEW.REFRESH('GG_ZLX_ZHU','f');

END P_MVIEW_REFRESH;

或者使用

CREATE OR REPLACE PROCDURE P_MVIEW_REFRESH AS

BEGIN

DBMS_MVIEW.REFRESH('GG_ZLX_ZHU,GG_ZLX_FU','ff');

END P_MVIEW_REFRESH;

注意:

1、如果需要同时刷新多个物化视图,必须用逗号把各个物化视图名称连接起来,并对

每个视图都要指明刷新方式(f、增量刷新,c、完全刷新,?、强制刷新)。

2、当日志和物化视图创建好后,删除日志,则需要重新创建物化视图,否则无法增量

刷新。

3、因为上面写的物化视图时根据主键进行更新,因此,主表必须有主键。

4、以上文章中红色是为可替换的,大家可以根据自己项目需求来修改。

希望上面的内容对大家能有帮助。

忘了写删除方法了,日志和物化视图要分开删除

DROP MATERIALIZED VIEW LOG ON GG_ZLX_ZHU@TOCPEES;

DROP MATERIALIZED VIEW GG_ZLX_ZHU;

linux

推荐阅读
  • 在使用SQL Server进行动态SQL查询时,如果遇到LIKE语句无法正确返回预期结果的情况,通常是因为参数传递方式不当。本文将详细探讨这一问题,并提供解决方案及相关的技术背景。 ... [详细]
  • 本文介绍如何通过创建替代插入触发器,使对视图的插入操作能够正确更新相关的基本表。涉及的表包括:飞机(Aircraft)、员工(Employee)和认证(Certification)。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • openGauss每日一练:第6天 - 模式的创建、修改与删除
    本篇笔记记录了openGauss数据库中关于模式(Schema)的创建、修改和删除操作。通过这些操作,用户可以更好地管理和控制数据库对象。实验环境为openGauss 2.0.0,并使用由墨天轮提供的线上环境。 ... [详细]
  • 本文详细介绍了 MySQL 中 LAST_INSERT_ID() 函数的使用方法及其工作原理,包括如何获取最后一个插入记录的自增 ID、多行插入时的行为以及在不同客户端环境下的表现。 ... [详细]
  • 深入解析三大范式与JDBC集成
    本文详细探讨了数据库设计中的三大范式,并结合Java数据库连接(JDBC)技术,讲解如何在实际开发中应用这些概念。通过实例和图表,帮助读者更好地理解范式理论及其在数据操作中的重要性。 ... [详细]
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 本文探讨了领域驱动设计(DDD)的核心概念、应用场景及其实现方式,详细介绍了其在企业级软件开发中的优势和挑战。通过对比事务脚本与领域模型,展示了DDD如何提升系统的可维护性和扩展性。 ... [详细]
  • 本文探讨了MariaDB在当前数据库市场中的地位和挑战,分析其可能面临的困境,并提出了对未来发展的几点看法。 ... [详细]
  • 本文探讨了在Oracle数据库中,动态SQL语句的执行及其对事务管理的影响,特别是关于回滚操作的有效性。重点讨论了一个具体场景:将预警短信从当前表迁移到历史表时遇到的字段长度不匹配问题及相应的异常处理。 ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • 本文详细介绍了Python编程语言的学习路径,涵盖基础语法、常用组件、开发工具、数据库管理、Web服务开发、大数据分析、人工智能、爬虫开发及办公自动化等多个方向。通过系统化的学习计划,帮助初学者快速掌握Python的核心技能。 ... [详细]
  • 作者:守望者1028链接:https:www.nowcoder.comdiscuss55353来源:牛客网面试高频题:校招过程中参考过牛客诸位大佬的面经,但是具体哪一块是参考谁的我 ... [详细]
  • 本文将深入探讨使用IMPDP工具进行分区表导入时需要注意的事项,涵盖最佳实践和常见问题。通过详细的分析与解释,帮助读者更好地理解和应用这些知识。 ... [详细]
author-avatar
钟爱gyt_201
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有