如何获取物化ios 子视图获取父视图的ddl

怎么批量获取物化视图的ddl_百度知道
怎么批量获取物化视图的ddl
我有更好的答案
) FROM DUALselect dbms_.get_ddl('mv name'MATERIALIZED_VIEW&#39,&#39
其他类似问题
为您推荐:
物化视图的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁Oracle DW(6)
物化视图在数据仓库中常用,将结果预先计算好并存储在物化视图中,Oracle数据库通过Query Rewrite访问物化视图。可以提高SQL反应速度,改善用户体验。整个过程对用户是透明的。对于每个物化视图,Oracle会自动建立一个同名表来存储物化视图的数据。
物化视图支持两种刷新方式:
Fast Refresh
Complete Refresh.
Fast refresh的好处在于增量式更新MV,而Complete Refresh需要重新执行MV的Select语句。一个数据量大的基表一次Complete Refresh比Fast Refresh需要更多时间。
聚合式物化视图Fast Refresh的条件:
1. 基表上建立MV Log,MV log必须包含:
Rowid所有在MV中出现的列INCLUDING NEW VALUESSequence
2. MV的select包含
count(*)对于每个做了聚合的列,都必须有count()
更多条件请见:Oracle Data Warehousing Guide第九章Basic Materialized Views的Restrictions on Fast Refresh on Materialized Views with Aggregates
Refresh on commit
物化视图的刷新将作为事务的一部分,因而事务提交时间将稍微长一点。
物化视图的统计信息
每一个物化视图都有一个同名的表。收集物化视图的统计信息就是收集这个表的统计信息。例如,物化视图T_AGG
exec dbms_stats.gather_table_stats(&schema&,'T_AGG', cascade=&true)
CREATE MATERIALIZED VIEW LOG ON T_fact WITH ROWID, SEQUENCE (
T_START_DATE,
Customer_key,
serve_company,
SUCCESS_COUNT
INCLUDING NEW VALUES;
DROP MATERIALIZED VIEW T_
CREATE MATERIALIZED VIEW T_AGG
PARTITION BY RANGE(T_START_DATE) INTERVAL(NumToYMInterval(1, 'MONTH'))
SUBPARTITION BY HASH(Customer_key) SUBPARTITIONS 512
( PARTITION part_dummy VALUES LESS THAN (to_date('','yyyy/mm/dd')))
BUILD IMMEDIATE
REFRESH FAST ON DEMAND
ENABLE QUERY REWRITE
SELECT T_START_DATE,
Customer_key,
serve_company,
SUM(SUCCESS_COUNT),
COUNT(SUCCESS_COUNT),
FROM T_fact
GROUP BY T_START_DATE,Customer_key,T_id,serve_
PL/SQL辅助包
Oracle提供了两个PL/SQL包
DBMS_MVIEWDBMS_ADVISOR
dbms_mview.explain_mview 函数分析指定MV是否支持Fast Refresh, Query Rewrite,将结果存入mv_capabilities_table.。
该表需要事先运行$ORACLE_HOME/rdbms/admin/utlxmv.sql创建。表中还会给出不支持Fast Refresh, Query Rewrite的原因。
truncate table mv_capabilities_
EXEC dbms_mview.refresh('T_AGG');
exec DBMS_MVIEW.EXPLAIN_MVIEW('T_AGG');
select * from mv_capabilities_
dbms_advisor.tune_mview:调优MV及其Log的DDL语句,使之能支持Fast Refresh和Query Rewrite。返回一个Task Name,用户可以根据该Task Name去User_tune_mview中查询优化后的DDL。
v_msg varchar2(4000);
v_ddl varchar2(32767) := '';
dbms_ADVISOR.TUNE_MVIEW(v_msg,v_ddl);
dbms_output.put_line(v_msg);
Select * from user_tune_mview where task_name='&v_msg&';
为什么Query Rewrite没有发生?
我们用一个例子说明,采用Oracle自带的SH schema,该schema预定义一个sales表和物化视图CAL_MONTH_SALES_MV。我们做一个很简单的测试:手工执行物化视图的select部分。预期的执行计划如下:
这里Oracle没有使用物化视图,即Query Rewrite没有发生。但是Oracle提供了一个非常有用的工具:dbms_mview.EXPLAIN_REWRITE
DBMS_MVIEW.EXPLAIN_REWRITE (
query VARCHAR2,
mv VARCHAR2(30),
statement_id VARCHAR2(30));
This procedure enables you to learn why a query failed to rewrite, or, if it rewrites,&which materialized views will be used. Using the results from the procedure, you can&take the appropriate action needed to&
make a query rewrite if at all possible. The query&specified in the EXPLAIN_REWRITE statement is never actually executed.
在这之前,运行一次$ORACLE_HOME/rdbms/admin/utlxrw.sql在当前schema创建REWRITE_TABLE。
然后我们可以运行这个存储过程来得知为什么Query Rewrite没有发生。
v_sql varchar2(1000) := 'SELECT
t.calendar_month_desc
sum(s.amount_sold) AS dollars
s.time_id = t.time_id
GROUP BY t.calendar_month_desc';
DBMS_MVIEW.EXPLAIN_REWRITE (v_sql,'SH.CAL_MONTH_SALES_MV', 'TEST1');
query, rewritten_txt, message, pass from
REWRITE_TABLE where statement_id='TEST1';
对照着这个结果,我们一个个改正就行了!里面详细内容请见下一篇
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:97902次
积分:2482
积分:2482
排名:第8627名
原创:129篇
转载:13篇
(4)(10)(8)(28)(126)请问DB2如何查询表、存储过程等的DDL脚本_百度知道
请问DB2如何查询表、存储过程等的DDL脚本
但我是需要在SQL或者JAVA中实现我的需求是要在WEB应用中查询数据库对象的DDL脚本?db2look可以在命令行中实现,在DB2中有类似的实现方案吗.GET_DDL获取各种数据库对象的DDL脚本。在ORACLE中可以调用DBMS_METADATA
我有更好的答案
视图DDL脚本的方法?目前只找到查询存储过程的SQL.sysroutines,还没找到获取表。select routinename,text from sysibm难道只有在命令行用db2look
表、视图DDL,DB2不支持直接查看的,只能倒出后才能看到。
找到视图的查询语句,还差表的获取方法,请提供点建议。SELECT TEXT FROM syscat.views WHERE viewschema=:viewschema AND viewname=:viewname
使用db2look生成文本文件
其他类似问题
为您推荐:
db2的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 ios 获取当前视图 的文章

 

随机推荐