oracle物化视图 plsql,PL/SQL Challenge 每日一题:2018-10-3 物化视图刷新

最先答对且答案未经编辑的puber将获得纪念章一枚(答案不可编辑但可发新贴补充或纠正),其他会员如果提供有价值的分析、讨论也可获得纪念章一枚。

每两周的优胜者可获得itpub奖励的技术图书一本。

以往旧题索引:

http://www.itpub.net/forum.php?m ... eid&typeid=1808

原始出处:

http://www.plsqlchallenge.com/

作者:Chris Saxon

运行环境:SQLPLUS, SERVEROUTPUT已打开

注:本题给出答案时候要求给予简要说明才能得到奖品

你的应用在如下的表存储订单信息。它有一个汇总物化视图来帮助产生报表:

create table qz_orders (

order_id       integer not null primary key,

customer_id    integer not null,

order_datetime date not null

);

create materialized view log on qz_orders

with rowid, sequence ( order_datetime ) including new values ;

create materialized view qz_order_mv

refresh fast as

select trunc ( order_datetime ) dt, count (*) ct

from   qz_orders

group  by trunc ( order_datetime );

作为测试过程的一部分,你向qz_orders表加入了新数据,如下:

insert into qz_orders

with rws as (

select level x from dual

connect by level <= 1000

)

select rownum, mod ( rownum, 131 ), sysdate + ( rownum / 24 )

from   rws;

commit;

exec dbms_mview.refresh ( 'qz_order_mv', 'C' );

随后又删除了它们。在这个过程中,你也需要重置这个MV。哪些选项让你可以在上述的INSERT之后执行,从而:

删除qz_orders的所有行,并且刷新MV?

在正确的选项执行之后,这个查询:

select count (*) from qz_order_mv;

应该返回如下输出:

COUNT(*)

----------

0

(A)

delete qz_orders;

commit;

exec dbms_mview.refresh ( 'qz_order_mv', 'F' );

(B)

delete qz_orders;

commit;

exec dbms_mview.refresh ( 'qz_order_mv', 'C' );

(C)

truncate table qz_orders;

exec dbms_mview.refresh ( 'qz_order_mv', 'F' );

(D)

truncate table qz_orders;

exec dbms_mview.refresh ( 'qz_order_mv', 'C' );

(E)

truncate table qz_orders;

exec dbms_mview.refresh ( 'qz_order_mv', '?' );

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值