【问题标题】:How can I get all the objects connected to a table我怎样才能让所有的对象连接到一个表
【发布时间】:2023-02-09 20:52:26
【问题描述】:

我必须删除一个表并创建一个具有相同字段和名称的视图。 我怎样才能得到以前连接到原始表的所有对象(表、触发器、过程等),以便最终或重新编译修改它们?

甲骨文版本 11g

谢谢!

【问题讨论】:

    标签: oracle oracle11g


    【解决方案1】:

    运行这样的查询;目前,我以特权用户身份连接,能够查询DBA_DEPENDENCIES

    SQL> SELECT owner, name, type
      2    FROM dba_dependencies
      3   WHERE     1 = 1
      4         AND referenced_owner = 'SCOTT'
      5         AND referenced_type = 'TABLE'
      6         AND referenced_name = 'EMP';
    
    OWNER                          NAME                           TYPE
    ------------------------------ ------------------------------ ------------------
    SCOTT                          TRG_BIU_EMP                    TRIGGER
    MIKE                           PKG_EMPLOYEE                   PACKAGE BODY
    
    SQL>
    

    它说 emp 表,由 scott 拥有,被另外两个对象引用:

    • 名为trg_biu_emp的触发器由scott拥有
    • 名为pkg_employee 的包主体由mike 拥有

    您也可以使用 all_dependenciesuser_dependencies(注意他们的描述!owner 列在 user_ 视图中丢失),但是您会得到越来越少的结果,因为它们都包含较少的信息比dba_dependencies

    因此,如果您不想错过任何东西,请到处查看(即dba_views)。如果您没有所需的权限,请与您的 DBA 联系。

    另外,请注意这样的查询不会发现在其他地方对该对象的可能引用,例如在 e.g. 中开发的前端应用程序Oracle Forms and Reports 或 Apex 或 ...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-22
      • 1970-01-01
      • 2016-04-04
      • 1970-01-01
      • 2012-11-21
      • 2015-03-21
      相关资源
      最近更新 更多