Sql 视图的从属对象列表(来自不同架构)

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',但由于

问题:从模式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'
    ,但由于某些原因,这个特定的MV不在所有MVIEW\u DETAIL\u关系表中(我的同事建议这是因为基础视图V2的复杂性)

  • 2.我试图建议我知道最底层视图V2的名称,并使用此查询从引用的所有依赖项中选择*。\u name='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是一个基于同名表的视图。我对这件事还是一无所知。令我不安的是,我的同事设法以某种方式看到了这些关系,但他不记得他是怎么做到的-_-