如何编写脚本以查找跨模式的表依赖项?

时间:2014-07-02 17:06:55

标签: oracle11g

来自SQL Server后台后,我对Oracle很痛苦。这是我的问题:

我感兴趣的有两种模式:ABC_OWNERXYZ_OWNER

我想知道的是XYZ_OWNER架构中ABC_OWNER架构中对表的所有引用。这主要用于存储过程。该查询将返回XYZ_OWNER ABC_OWNER中引用的所有表和列的列表。我已经尝试运行我在SO上找到的一些查询但我遇到了问题,因为我登录的帐户无法访问DBA表。

我这样做的原因是因为我打算删除XYZ_OWNER表并插入新数据库。我想看看我在新数据库中需要哪些列以及它们是否存在。

1 个答案:

答案 0 :(得分:1)

我在查找对象的依赖项时捕获了TOAD执行的查询。您可以调整的精简版本如下:

    SELECT uo1.object_name
      FROM (SELECT object_id, referenced_object_id
              FROM public_dependency
             WHERE referenced_object_id <> object_id) pd,
           all_objects uo1
     WHERE uo1.object_id = pd.object_id
CONNECT BY PRIOR pd.object_id = pd.referenced_object_id
START WITH pd.referenced_object_id IN (SELECT object_id
                                         FROM all_objects
                                        WHERE     object_name = <your table>
                                              AND owner = <your schema name> )

如果没有,则需要授予all_objects和public_dependency视图的访问权限。