问题:从模式A和B获取存储在B模式中的视图V的依赖对象列表。
我肯定知道的是: View V从架构B中的物化视图MV中提取数据 MV从视图V2中提取数据,视图V2位于模式A中。
理想情况我会得到如下列表:B.V - > B.MV - > A.V2
到目前为止我尝试过的做法:
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.我试图建议我知道最底层视图V2的名称,然后使用此查询select * from all_dependencies where referenced_name = 'V2'
上升到层次结构 - 它没有帮助
请花点时间阅读本文并告诉我如何解决这个问题,因为我开始有点绝望了;)
答案 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'
)
)
有效吗?或许只是一些值得思考的东西......