Najlepiej szukam kwerendy SQL, aby to osiągnąć, ale inne opcje mogą być również przydatne.Jak mogę się dowiedzieć, kiedy procedura składowana została ostatnio zmodyfikowana lub skompilowana w Oracle?
Odpowiedz
SELECT LAST_DDL_TIME, TIMESTAMP
FROM USER_OBJECTS
WHERE OBJECT_TYPE = 'PROCEDURE'
AND OBJECT_NAME = 'MY_PROC';
LAST_DDL_TIME
po raz ostatni został skompilowany. TIMESTAMP
to ostatni raz, kiedy została zmieniona.
Procedury mogą wymagać rekompilacji, nawet jeśli nie uległy zmianie w przypadku zmiany zależności.
SELECT name, create_date, modify_date
FROM sys.procedures order by modify_date desc
To nie zadziała dla Oracle. –
To jest serwer sql –
następujące zapytanie zrobi w Oracle
SELECT * FROM ALL_OBJECTS WHERE OBJECT_NAME = 'OBJ_NAME' ;
@Thilakan - Jeśli zamierzasz zapytać "ALL_OBJECTS", powinieneś dołączyć predykat na 'OWNER' w przeciwnym wypadku możesz otrzymać wiele wierszy oprócz predykatu' OBJECT_TYPE' z odpowiedzi WW kilka lat temu. Powinieneś również zauważyć, że 'ALL_OBJECTS' zawiera wszystkie obiekty, które bieżący użytkownik ma uprawnienia do nie wszystkich obiektów w bazie danych, które znajdowałyby się w' DBA_OBJECTS'. –
nie mogę znaleźć user_objects. Występuje błąd podczas wykonywania tego zapytania – kbvishnu
@Harie - to dlatego, że to pytanie dotyczy Oracle, a nie SQL Server. – ninesided
Czy zawiera opis "LAST_DDL_TIME" i "TIMESTAMP"? Właśnie ponownie skompilowałem treść pakietu (była nieważna): 'alter package foo compile body reuse settings;' i obie kolumny, w których zostały zaktualizowane. Inna różnica polega na tym, że pytam o 'DBA_OBJECTS' (ale to nie powinno mieć znaczenia?). – user272735