视图的从属对象列表(来自不同的模式)

时间:2014-04-18 13:12:13

标签: sql oracle oracle11g

问题:从模式A和B获取存储在B模式中的视图V的依赖对象列表。

我肯定知道的是: View V从架构B中的物化视图MV中提取数据 MV从视图V2中提取数据,视图V2位于模式A中。

理想情况我会得到如下列表:B.V - > B.MV - > A.V2

到目前为止我尝试过的做法

  1. select * from all_dependencies where name = 'V'; - 这只是给了 来自MV-id的V池数据的信息并没有更深入 比那个

    1.1我尝试过select * from ALL_MVIEW_DETAIL_RELATIONS where MVIEW_NAME = 'MV' - 使用第一个查询中的MV名称,但由于某种原因,这个特定的MV不在ALL_MVIEW_DETAIL_RELATIONS表中(我的同事认为这是因为它的复杂性基础观点V2)

  2. 2.我试图建议我知道最底层视图V2的名称,然后使用此查询select * from all_dependencies where referenced_name = 'V2'上升到层次结构 - 它没有帮助

    请花点时间阅读本文并告诉我如何解决这个问题,因为我开始有点绝望了;)

1 个答案:

答案 0 :(得分:1)

我目前没有实质性的观点,但这是我的理解:

这应该给你B.MV

--query 1
select referenced_owner, referenced_name 
from all_dependencies where name = 'V'

这应该给你A.V2

--query 2
select detailobj_owner, detailobj_name 
from all_mview_detail_relations where 
(owner, mview_name) in 
(
--query 1
select referenced_owner, referenced_name 
from all_dependencies where name = 'V'
)

这应该会为您提供用于构建A.V2

的所有表/视图
select referenced_owner, referenced_name 
from all_dependencies where  
(owner, name) in 
(
--query 2
select detailobj_owner, detailobj_name 
from all_mview_detail_relations where 
(owner, mview_name) in 
(
--query 1
select referenced_owner, referenced_name 
from all_dependencies where name = 'V'
)
)

有效吗?或许只是一些值得思考的东西......