【问题标题】: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_OWNER 和 REFERENCED_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