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

StackOverflow https://stackoverflow.com/questions/1819447

  •  10-07-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

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

Другие советы

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

Кроме того, object_type в dba_objects для пакетов - это «PACKAGE» для определения и «PACKAGE BODY» " за тело.

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

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 о сравнении схем

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top