问题描述
嗨,大师们,
抱歉,还有一个问题 :-) 再次非常非常感谢您的辛勤工作和我们问题的答案!!
你能看看我的测试用例吗?有些语句失败,因为我没有liveSQL中的所有privs。但我认为你可以忽略它们。请关注lastselect语句。它查询user_mvref_stmt_stats中的行,但找不到任何行。因为以前的代码执行了一些刷新,所以我期望我在此数据字典视图中看到一些统计信息,包括SQLIDs等。
为什么什么都没有显示?
我错过特权了吗?
我在文档中监督有什么先决条件吗?
我用了:https://docs.oracle.com/database/122/DWHSG/monitoring-materialized-view-refresh.htm#DWHSG-GUID-8F9CC2EC-9CFC-4F56-97D5-5EB099BD852A
我还在开发人员VM中尝试了此测试用例 (可在此处下载:http://www.oracle.com/technetwork/database/enterprise-edition/databaseappdev-vm-161299.html)。我还尝试读取具有更高特权架构的等效dba_ * 视图。
非常感谢您的帮助!
最好的,
乔纳斯
附加了一个脚本版本,您可以在没有liveSQL的情况下运行:
抱歉,还有一个问题 :-) 再次非常非常感谢您的辛勤工作和我们问题的答案!!
你能看看我的测试用例吗?有些语句失败,因为我没有liveSQL中的所有privs。但我认为你可以忽略它们。请关注lastselect语句。它查询user_mvref_stmt_stats中的行,但找不到任何行。因为以前的代码执行了一些刷新,所以我期望我在此数据字典视图中看到一些统计信息,包括SQLIDs等。
为什么什么都没有显示?
我错过特权了吗?
我在文档中监督有什么先决条件吗?
我用了:https://docs.oracle.com/database/122/DWHSG/monitoring-materialized-view-refresh.htm#DWHSG-GUID-8F9CC2EC-9CFC-4F56-97D5-5EB099BD852A
我还在开发人员VM中尝试了此测试用例 (可在此处下载:http://www.oracle.com/technetwork/database/enterprise-edition/databaseappdev-vm-161299.html)。我还尝试读取具有更高特权架构的等效dba_ * 视图。
非常感谢您的帮助!
最好的,
乔纳斯
附加了一个脚本版本,您可以在没有liveSQL的情况下运行:
drop table t_master; drop materialized view mv_complete_refresh; drop materialized view mv_fast_refresh; drop materialized view mv_atomic_false; create table t_master ( m_id number ,m_text varchar2(3) ); --prepare some test data --(total of 60 rows) we will see this number later in the stats begin for anz in (select 11 rec from dual union all select 2 rec from dual union all select 17 rec from dual union all select 30 rec from dual) loop insert into t_master (m_id,m_text) select to_number(anz.rec || level) m_id ,dbms_random.string('U',3) as m_text from dual connect by level <= anz.rec; end loop; end; / commit; alter table t_master add primary key (m_id); create materialized view log on t_master with primary key including new values; create materialized view mv_complete_refresh (m_id, m_text) build deferred refresh complete on demand --!!!! disable query rewrite as select m_id, m_text from t_master; --same definition again...we will compare atomic refresh create materialized view mv_atomic_false (m_id, m_text) build deferred refresh complete on demand --!!!! disable query rewrite as select m_id, m_text from t_master; create materialized view mv_fast_refresh (m_id, m_text) build deferred refresh fast on demand --!!!! disable query rewrite as select m_id, m_text from t_master; --settings for stats is not allowed in liveSQL...maybe this is a problem and I would need to set something here? begin dbms_mview_stats.set_system_default ('COLLECTION_LEVEL','TYPICAL'); --DBMS_MVIEW_STATS.SET_MVREF_STATS_PARAMS (NULL, 'ADVANCED'); dbms_mview_stats.set_mvref_stats_params ('MV_FAST_REFRESH','ADVANCED',60); -- The retention period is set to 60 days commit; end; / --since the above statements fail they all have one year... --otherwise two out of three have retention period of a whole year. The other one 60 days select * from user_mvref_stats_sys_defaults; select * from user_mvref_stats_params; --let's refresh begin dbms_mview.refresh('MV_COMPLETE_REFRESH', 'C'); dbms_mview.refresh('MV_ATOMIC_FALSE', 'C', atomic_refresh => false); --...intial load required dbms_mview.refresh('MV_FAST_REFRESH', 'C', atomic_refresh => false); dbms_mview.refresh('MV_FAST_REFRESH', 'F', atomic_refresh => false); end; / --updates on master update t_master set m_id = to_number('123'||substr(m_id,3)) where to_char(m_id) like '11%'; commit; --populate changes to MVs begin dbms_mview.refresh('MV_COMPLETE_REFRESH', 'C'); dbms_mview.refresh('MV_ATOMIC_FALSE', 'C', atomic_refresh => false); dbms_mview.refresh('MV_FAST_REFRESH', 'F', atomic_refresh => false); end; / --I am used to this view in older releases... select * from user_mvref_stats; --NEW: reports about the change data load information on the master tables associated with a refresh run select * from user_mvref_change_stats; --NEW: Reports about each refresh operation select * from user_mvref_run_stats; -- is something shown here? It never returns any data... -- should show SQLID of the refresh statement, and execution plan of the statement. -- but not in my environments...please help :-) select * from user_mvref_stmt_stats;复制
专家解答
只是为了澄清一下:
这是在您所有的12.2数据库中发生的,还是只是LiveSQL?
User_mvref_stmt_stats给了我结果:
所以我们之间有些不同。
您的用户有哪些特权?授予DBA可以解决此问题吗?
注意: 有一个内部错误记录与此视图相关,不返回任何数据。所以你有可能击中它,但我不是出于某种原因。
这是在您所有的12.2数据库中发生的,还是只是LiveSQL?
User_mvref_stmt_stats给了我结果:
create table t_master ( m_id number ,m_text varchar2(3) ); --prepare some test data --(total of 60 rows) we will see this number later in the stats begin for anz in (select 11 rec from dual union all select 2 rec from dual union all select 17 rec from dual union all select 30 rec from dual) loop insert into t_master (m_id,m_text) select to_number(anz.rec || level) m_id ,dbms_random.string('U',3) as m_text from dual connect by level <= anz.rec; end loop; end; / commit; alter table t_master add primary key (m_id); create materialized view log on t_master with primary key including new values; create materialized view mv_complete_refresh (m_id, m_text) build deferred refresh complete on demand --!!!! disable query rewrite as select m_id, m_text from t_master; --same definition again...we will compare atomic refresh create materialized view mv_atomic_false (m_id, m_text) build deferred refresh complete on demand --!!!! disable query rewrite as select m_id, m_text from t_master; create materialized view mv_fast_refresh (m_id, m_text) build deferred refresh fast on demand --!!!! disable query rewrite as select m_id, m_text from t_master; --settings for stats is not allowed in liveSQL...maybe this is a problem and I would need to set something here? begin dbms_mview_stats.set_system_default ('COLLECTION_LEVEL','TYPICAL'); --DBMS_MVIEW_STATS.SET_MVREF_STATS_PARAMS (NULL, 'ADVANCED'); dbms_mview_stats.set_mvref_stats_params ('MV_FAST_REFRESH','ADVANCED',60); -- The retention period is set to 60 days commit; end; / --let's refresh begin dbms_mview.refresh('MV_COMPLETE_REFRESH', 'C'); dbms_mview.refresh('MV_ATOMIC_FALSE', 'C', atomic_refresh => false); --...intial load required dbms_mview.refresh('MV_FAST_REFRESH', 'C', atomic_refresh => false); dbms_mview.refresh('MV_FAST_REFRESH', 'F', atomic_refresh => false); end; / --updates on master update t_master set m_id = to_number('123'||substr(m_id,3)) where to_char(m_id) like '11%'; commit; --populate changes to MVs begin dbms_mview.refresh('MV_COMPLETE_REFRESH', 'C'); dbms_mview.refresh('MV_ATOMIC_FALSE', 'C', atomic_refresh => false); dbms_mview.refresh('MV_FAST_REFRESH', 'F', atomic_refresh => false); end; / select * from user_mvref_stmt_stats; MV_OWNER MV_NAME REFRESH_ID STEP SQLID STMT EXECUTION_TIME EXECUTION_PLAN CHRIS MV_FAST_REFRESH 143 1 9xj7u7fnn9zdw /* MV_REFRESH (IND_UNUSABLE) */ ALTER INDEX "CHRIS"."SYS_C0054529" UNUSABLE 0 CHRIS MV_FAST_REFRESH 143 2 5b1j8x93ntbdf BEGIN sys.dbms_index_utl.multi_level_build(index_list=>'"CHRIS"."SYS_C0054529"' 1复制
所以我们之间有些不同。
您的用户有哪些特权?授予DBA可以解决此问题吗?
注意: 有一个内部错误记录与此视图相关,不返回任何数据。所以你有可能击中它,但我不是出于某种原因。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
603次阅读
2025-04-15 17:24:06
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
588次阅读
2025-04-18 14:18:38
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
496次阅读
2025-04-08 09:12:48
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
479次阅读
2025-04-20 10:07:02
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
464次阅读
2025-04-22 00:20:37
Oracle 19c RAC更换IP实战,运维必看!
szrsu
440次阅读
2025-04-08 23:57:08
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
438次阅读
2025-04-22 00:13:51
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
429次阅读
2025-04-17 17:02:24
火焰图--分析复杂SQL执行计划的利器
听见风的声音
371次阅读
2025-04-17 09:30:30
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
361次阅读
2025-04-15 14:48:05