Как мне найти весь код, триггеры из базы данных оракула, которые относятся к определенным таблицам?

У меня возникла проблема, когда мне нужно удалить из базы данных весь код и триггеры, относящиеся к определенным таблицам, чтобы установить пакет Solaris. Длинная сложная история, но мне нужно начать с чистого листа.

Мне удалось удалить все существующие таблицы/синонимы, но как найти соответствующий код/триггеры из sqlplus?

К сожалению, невозможно удалить базу данных и создать ее заново.


person hookenz    schedule 15.07.2009    source источник


Ответы (2)


Что ж, оказывается, все имена таблиц имеют префикс имени моего модуля 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%';

Теперь я могу написать сценарий, который отбрасывает все.

person hookenz    schedule 15.07.2009
comment
Используйте user_source вместо dba_source, если вы не dba. - person Matthieu; 09.07.2021

Вы должны иметь возможность запросить системную таблицу ALL_TRIGGERS, чтобы найти триггеры. У него есть столбец table_name. Вы, вероятно, можете найти другие связанные объекты с другими системными таблицами (прошло некоторое время с тех пор, как я возился с Oracle).

http://download.oracle.com/docs/cd/B19306_01/server.102/b14237/statviews_2107.htm

person Nate    schedule 15.07.2009