Sql 视图的从属对象列表(来自不同架构)
问题:从模式a和B中获取存储在B模式中的视图V的从属对象列表 我可以肯定的是:视图V从模式B中的物化视图MV中提取数据,然后 MV从驻留在模式a中的视图V2中提取数据 理想情况下我会得到如下列表:B.V->B.MV->a.V2 到目前为止我一直在做的事情:Sql 视图的从属对象列表(来自不同架构),sql,oracle,oracle11g,Sql,Oracle,Oracle11g,问题:从模式a和B中获取存储在B模式中的视图V的从属对象列表 我可以肯定的是:视图V从模式B中的物化视图MV中提取数据,然后 MV从驻留在模式a中的视图V2中提取数据 理想情况下我会得到如下列表:B.V->B.MV->a.V2 到目前为止我一直在做的事情: 从name='V'的所有_依赖项中选择*-这只提供了 告诉我V从MV-id收集数据的信息没有深入 比那 1.1我尝试过使用第一个查询中的MV名称从所有MVIEW\u DETAIL\u关系中选择*,其中MVIEW\u NAME='MV',但由于
从name='V'的所有_依赖项中选择*代码>-这只提供了
告诉我V从MV-id收集数据的信息没有深入
比那
1.1我尝试过使用第一个查询中的MV名称从所有MVIEW\u DETAIL\u关系中选择*,其中MVIEW\u NAME='MV'
,但由于某些原因,这个特定的MV不在所有MVIEW\u DETAIL\u关系表中(我的同事建议这是因为基础视图V2的复杂性)请花点时间通读这篇文章,让我知道如何解决这个问题,因为我开始有点绝望了;) 目前我还没有具体化视图,但我的理解是: 这应该给你B.MV
--query 1
select referenced_owner, referenced_name
from all_dependencies where name = 'V'
这应该给你一个.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'
)
)
它起作用了吗?或者也许只是一些值得思考的东西……这是一个很好的答案,但是:)由于某种原因,您的查询2在我的特殊情况下不会返回任何结果,因为B.MV并没有显示在所有的细节关系中。我现在还没有找到“为什么?”的答案;)您可以尝试改用所有依赖项。在所有依赖项中,B.MV引用自身。这是一个死胡同:)另一个想法,MV是一个基于视图的表,对吗?也许你还需要一个步骤,比如这部MV所基于的视图。然后,对于该视图,您可能能够看到依赖关系。我可能错了-没有设备来测试idea.MV是一个基于同名表的视图。我对这件事还是一无所知。令我不安的是,我的同事设法以某种方式看到了这些关系,但他不记得他是怎么做到的-_-