我有一个问题,我需要删除与某些表相关的数据库中的所有代码和触发器,以便安装Solaris软件包。长而复杂的故事,但我需要 开始一个干净的石板。如何查找与特定表相关的Oracle数据库中的所有代码和触发器?
我已经设法删除所有现有的表/同义词,但如何找到与sqlplus相关的代码/触发器?
不幸的是,删除数据库并重新创建它是不可行的。
我有一个问题,我需要删除与某些表相关的数据库中的所有代码和触发器,以便安装Solaris软件包。长而复杂的故事,但我需要 开始一个干净的石板。如何查找与特定表相关的Oracle数据库中的所有代码和触发器?
我已经设法删除所有现有的表/同义词,但如何找到与sqlplus相关的代码/触发器?
不幸的是,删除数据库并重新创建它是不可行的。
哦,原来所有的表名与我的模块名称前缀DAP。
因此,要找到所有的表名和公共同义词用sqlplus:
select table_name from all_tables where table_name like 'DAP%';
select synonym_name from all_synonyms where table_name like 'DAP%';
要获取触发器和序列
select trigger_name from all_triggers where table_name like 'DAP%';
select sequence_name from all_sequences where sequence_name like 'DAP%';
的列表要获得的所有约束
列表select table_name, constraint_name from all_constraints where table_name like 'DAP%';
获取与DAP相关的代码:
select text from dba_source where name like 'DAP%';
我现在可以编写一个脚本来删除所有内容。
您应该能够查询系统表ALL_TRIGGERS以查找触发器。它有一个table_name列。你可能可以找到其他相关的对象与不同的系统表(一段时间,因为我已经与甲骨文搞混了)。
http://download.oracle.com/docs/cd/B19306_01/server.102/b14237/statviews_2107.htm