【问题标题】:Oracle More than one materialized view on a materialized logOracle 一个物化日志的多个物化视图
【发布时间】:2015-07-31 14:25:37
【问题描述】:

我希望有多个物化视图在提交时快速刷新。

对于“提交时快速刷新”,您需要一个物化视图日志。显然,提交时快速刷新需要日志。问题是我能否有多个物化视图访问日志。

显然我仍然需要日志来满足正常的先决条件(在所有视图中): http://docs.oracle.com/cd/B19306_01/server.102/b14223/basicmv.htm

提前为任何帮助干杯。

【问题讨论】:

    标签: oracle oracle11g


    【解决方案1】:

    绝对的。

    create table data_table as (
      select * 
      from dba_users
    );
    
    alter table data_table
    add constraint data_table_test_pk PRIMARY KEY (user_id);
    
    select * from data_table;
    

    所以现在我们有一个看起来像dba_users 的表,带有PRIMARY KEY 约束。

    create materialized view log on data_table;
    
    create materialized view mat_view_one
    refresh fast on commit
    as
    select username, user_id
    from data_table
    ;
    
    create materialized view mat_view_two
    refresh fast on commit
    as
    select user_id, username, account_status
    from data_table;
    

    我们的日志和 2 个视图创建成功。 测试表中的SYS记录:

    select * from mat_view_one
    where user_id=0;
    
    USERNAME                          USER_ID
    ------------------------------ ----------
    SYS                                     0
    
    select * from mat_view_two
    where user_id=0;
    
       USER_ID USERNAME                       ACCOUNT_STATUS                 
    ---------- ------------------------------ --------------------------------
             0 SYS                            OPEN                             
    

    现在让我们更新SYS 的名称并提交,看看我们的视图显示了什么:

    update data_table
    set username='WALTERWHITE'
    WHERE USER_ID=0
    ;
    COMMIT;
    USERNAME                          USER_ID
    ------------------------------ ----------
    WALTERWHITE                             0 
    
       USER_ID USERNAME                       ACCOUNT_STATUS                 
    ---------- ------------------------------ --------------------------------
             0 WALTERWHITE                    OPEN                             
    

    所以是的,绝对的。只要保持适当的约束,1 个物化视图日志就可以提供尽可能多的物化视图。

    【讨论】:

      【解决方案2】:

      是的。物化视图日志可以支持任意数量的物化视图。

      支持多个物化视图可能会导致日志比它支持单个物化视图时更大,尽管这在这里可能不是非常重要,因为您的日志可能不会长时间存储数据。如果您将数据复制到远程数据库(根据定义,您不能使用快速刷新的物化视图来做到这一点),如果其中一个远程物化视图停止刷新或消失而源不知道,这可能会有点棘手,因为它可能导致数据在日志中无限期地排队。但是,再一次,这听起来不像您所面临的情况。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-04
        • 2020-04-22
        • 2016-02-20
        • 2020-07-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多