Подтвердить что ты не робот

Получить список всех функций и процедур в базе данных Oracle

Я сравниваю три схемы Oracle.

Я хочу получить список всех функций и процедур, используемых в каждой базе данных. Возможно ли это с помощью запроса? (предпочтительно, включая флаг для компиляции или нет)

В идеале было бы здорово иметь один запрос с флагом, который указывает, является ли функция/процедура в каждой схеме. Но даже первый бит был бы лучше, чем вручную проверять каждую схему.

4b9b3361

Ответ 1

SELECT * FROM ALL_OBJECTS WHERE OBJECT_TYPE IN ('FUNCTION','PROCEDURE','PACKAGE')

В столбце STATUS указывается, является ли объект VALID или INVALID. Если он недействителен, вам нужно попробовать перекомпилировать, ORACLE не сможет сказать вам, будет ли он работать раньше.

Ответ 2

Сделайте описание на dba_arguments, dba_errors, dba_procedures, dba_objects, dba_source, dba_object_size. Каждый из них имеет часть изображений для просмотра процедур и функций.

Также object_type в dba_objects для пакетов - это "ПАКЕТ" для определения и "ПАКЕТНЫЙ ТЕЛО" для тело.

Если вы сравниваете схемы в одной базе данных, попробуйте:

select * from dba_objects 
   where schema_name = 'ASCHEMA' 
     and object_type in ( 'PROCEDURE', 'PACKAGE', 'FUNCTION', 'PACKAGE BODY' )
minus
select * from dba_objects 
where schema_name = 'BSCHEMA' 
  and object_type in ( 'PROCEDURE', 'PACKAGE', 'FUNCTION', 'PACKAGE BODY' )

и переключаться вокруг ордеров ASCHEMA и BSCHEMA.

Если вам также нужно посмотреть триггеры и сравнить другие вещи между схемами, вы должны взглянуть на статью о Ask Tom о сравнении схем