Получить список всех функций и процедур в базе данных Oracle
Я сравниваю три схемы Oracle.
Я хочу получить список всех функций и процедур, используемых в каждой базе данных. Возможно ли это с помощью запроса? (предпочтительно, включая флаг для компиляции или нет)
В идеале было бы здорово иметь один запрос с флагом, который указывает, является ли функция/процедура в каждой схеме. Но даже первый бит был бы лучше, чем вручную проверять каждую схему.
Ответы
Ответ 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 о сравнении схем