Ich suche vorzugsweise eine SQL-Abfrage, um dies zu erreichen, aber andere Optionen könnten auch nützlich sein.Wie finde ich heraus, wann eine gespeicherte Prozedur zuletzt in Oracle geändert oder kompiliert wurde?
Antwort
SELECT LAST_DDL_TIME, TIMESTAMP
FROM USER_OBJECTS
WHERE OBJECT_TYPE = 'PROCEDURE'
AND OBJECT_NAME = 'MY_PROC';
LAST_DDL_TIME
ist das letzte Mal, es kompiliert wurde. TIMESTAMP
ist das letzte Mal, als es geändert wurde.
Prozeduren müssen möglicherweise neu kompiliert werden, auch wenn sie sich bei einer Abhängigkeitsänderung nicht geändert haben.
SELECT name, create_date, modify_date
FROM sys.procedures order by modify_date desc
Das wird für Oracle nicht funktionieren. –
Das ist sql server –
folgende Abfrage tun in Oracle
SELECT * FROM ALL_OBJECTS WHERE OBJECT_NAME = 'OBJ_NAME' ;
@Thilakan - Wenn Sie 'ALL_OBJECTS' abfragen, sollten Sie ein Prädikat in' OWNER' einfügen, sonst erhalten Sie möglicherweise mehrere Zeilen zusätzlich zum 'OBJECT_TYPE'-Prädikat aus WWs Antwort vor ein paar Jahren. Sie sollten wahrscheinlich auch beachten, dass 'ALL_OBJECTS' alle Objekte enthält, die der aktuelle Benutzer für nicht alle Objekte in der Datenbank besitzt, die sich in' DBA_OBJECTS' befinden. –
i nicht user_objects finden. Beim Ausführen dieser Abfrage tritt ein Fehler auf – kbvishnu
@Harie - das liegt daran, dass es sich bei dieser Frage um Oracle und nicht um SQL Server handelt. – ninesided
Hat die Beschreibung von 'LAST_DDL_TIME' und' TIMESTAMP' Gültigkeit? Ich habe gerade einen Package Body neu übersetzt (er war ungültig): 'alter package foo kompiliert Body-Reuse-Einstellungen;' und beide Spalten wurden aktualisiert. Ein anderer Unterschied ist, dass ich 'DBA_OBJECTS' abfrage (aber das sollte nicht wichtig sein?). – user272735