【发布时间】:2023-02-09 20:52:26
【问题描述】:
我必须删除一个表并创建一个具有相同字段和名称的视图。 我怎样才能得到以前连接到原始表的所有对象(表、触发器、过程等),以便最终或重新编译修改它们?
甲骨文版本 11g
谢谢!
【问题讨论】:
我必须删除一个表并创建一个具有相同字段和名称的视图。 我怎样才能得到以前连接到原始表的所有对象(表、触发器、过程等),以便最终或重新编译修改它们?
甲骨文版本 11g
谢谢!
【问题讨论】:
运行这样的查询;目前,我以特权用户身份连接,能够查询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_dependencies 和 user_dependencies(注意他们的描述!owner 列在 user_ 视图中丢失),但是您会得到越来越少的结果,因为它们都包含较少的信息比dba_dependencies。
因此,如果您不想错过任何东西,请到处查看(即dba_views)。如果您没有所需的权限,请与您的 DBA 联系。
另外,请注意这样的查询不会发现在其他地方对该对象的可能引用,例如在 e.g. 中开发的前端应用程序Oracle Forms and Reports 或 Apex 或 ...
【讨论】: