zoukankan      html  css  js  c++  java
  • oracle物化视图和视图的数据不一致

    问题: oracle物化视图和视图的数据不一致

    问题描述

    一个考试系统, 创建了一个统计分数的视图: v_score, 根据这个视图创建了一个物化视图:

    -- drop materialized view mv_score;
    create  materialized view mv_score
    refresh complete on demand    
    start with sysdate 
    next trunc(sysdate,'mi')+1/24 /* 每隔一小时刷新一次  */
    as
    select * from v_score;
    

    创建物化视图之后立即查询视图和物化视图:
    (立即查询避免物化视图没有刷新导致的问题)

    select * from v_score ;
    select * from mv_score ;
    

    查询出来的两个结果不一致:
    视图的结果:

    物化视图的结果:

    其中count_score_xx字段表示各个分数段的数量, score_xx_avg表示各个分数段的平均值;
    count_score_xx字段视图和物化视图的结果一致; score_xx_avg视图的数据正常, 但是物化视图只有score_90_avg数据正常, 其他字段全是null;

    oracle版本:

    select * from v$version;
    
    Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
    PL/SQL Release 12.2.0.1.0 - Production
    "CORE	12.2.0.1.0	Production"
    TNS for Linux: Version 12.2.0.1.0 - Production
    NLSRTL Version 12.2.0.1.0 - Production
    

    尝试解决

    搜索的关键词:

    oracle materialized view some column is null
    oracle materialized view missing data
    oracle materialized view losing  data
    oracle view materialized data not same
    oracle view materialized wrong different
    

    只找到很少的相关内容, 没有找到解决方案;
    oracle - Materialized View data different from View with same source - Stack Overflow

    Materialized view do not show the data - Page 2 — oracle-tech

    猜测可能的原因: create物化视图的时候某些选项不合适, 看看官方文档;
    (翻了一圈没结果)
    CREATE MATERIALIZED VIEW

    分析sql

    count正常、avg不正常, avg换个计算方式试试:
    原方式:

    avg(v.review_score_80_90) score_80_90_avg,
    

    新方式:

    sum(v.review_score_80_90)/count(v.review_score_80_90) score_80_90_avg,
    

    改造之后恢复正常, 物化视图和视图的数据一致了;

    根本原因

    表面上解决了问题, 根本原因没搞清楚, 猜测可能是oracle的bug, 还望大佬赐教.

  • 相关阅读:
    ubuntu下配置Apache
    ubuntu 下配置Web服务器
    ubuntu 笔记一
    域名解析
    C# Enum,Int,String的互相转换
    C# 得到本机局域网IP地址
    C# 连接 SQLServer 及操作
    C# OpenFileDialog 使用
    如何解决 IntelliJ Idea 编译 Java 项目时,找不到包或找不到符号的问题?
    阿里巴巴 MySQL 数据库之 SQL 语句规约 (三)
  • 原文地址:https://www.cnblogs.com/QIAOXINGXING001/p/15539346.html
Copyright © 2011-2022 走看看