【问题标题】:query to get all tables in a materialized view查询以获取物化视图中的所有表
【发布时间】:2021-11-11 21:29:36
【问题描述】:

朋友们下午好,

一个查询有没有办法(select * from)来可视化哪些表形成一个物化视图? 例如:

CREATE MATERIALIZED VIEW table_vm
 
  REFRESH COMPLETE ON COMMIT
  as
SELECT * FROM table1;
UNION ALL
SELECT * FROM table2;

我想输出如下内容:

查看名称 |表名 表_m |表格1 表_m |表 2 表 |表3 …… ....

非常感谢,

如有任何信息,我将不胜感激。

【问题讨论】:

    标签: oracle oracle11g oracle10g oracle-sqldeveloper


    【解决方案1】:

    您可以使用视图DBA_DEPENDENCIES 来查看编译到数据库中的对象的任何依赖关系。使用物化视图的名称查询该视图应列出所有表以及物化视图所依赖的任何其他依赖项。 REFERENCED_OWNERREFERENCED_NAME 将保存物化视图正在使用的表的值。

    SELECT *
      FROM dba_dependencies
     WHERE owner = 'OWNER_OF_MV' AND name = 'TABLE_MV';
    

    【讨论】:

      【解决方案2】:

      一种选择是

      SQL> create table t1 ( c1 number, c2 varchar2(1) ) ;
      
      Table created.
      
      SQL>  create table  t2 ( c1 number , c3 varchar2(1) ) ;
      
      Table created.
      
      SQL> create table t3  ( c1 number , c3 varchar2(1) ) ;
      
      Table created.
      
      SQL> create materialized view mv1 refresh complete on demand as
        2  select a.c1 , b.c3 as c2, c.c3
        3  from t1 a inner join t2 b on a.c1 = b.c1
        4   left join t3 c on a.c1 = c.c1 ;
      
      Materialized view created.
      
      SQL> select name as mv, listagg(referenced_name || ' - ' || referenced_type , '|' ) 
       within group ( order by referenced_name ) as list_dep
       from dba_dependencies where name='MV1' and name != referenced_name 
       group by name
      
      MV                             LIST_DEP
      ------------------------------ --------------------------------------------------
      MV1                            T1 - TABLE|T2 - TABLE|T3 - TABLE
      

      【讨论】:

        猜你喜欢
        • 2021-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-20
        • 2011-05-15
        • 1970-01-01
        • 2016-02-20
        • 2019-06-04
        相关资源
        最近更新 更多