Oracle thông báo về các Procedure, PACKAGE được sửa trong ngày

Một ngày đẹp trời như thường lệ mình đến công ty nhưng được thông báo là có 1 vài job chạy hàng đêm của hôm trước bị lỗi. Kiểm tra nguyên nhân thì do mình đã tiến hành sửa một PACKAGE nhưng khi compile thì bị lỗi mà mình đã không để ý. Đó chính là sơ suất của mình khi thực hiện sửa 1 PACKAGE trên PROD mà không verify lại. Để khắc phục hậu quả này là phải đi tìm lại đoạn code bị mất trên con test (mà đã backup rồi) và tiến hành chạy lại những job bị lỗi.

Để kiểm soát việc này, vào cuối ngày ta phải check lại các PACKAGE được sửa đổi trong ngày có compile thành công hay không. Sau đây là câu lệnh liệt kê các PACKAGE, PROCEDURE được sửa trong ngày:

SELECT owner,
object_name,
object_type,
last_ddl_time,
status
FROM dba_objects
WHERE object_name IN
(SELECT A.REFERENCED_NAME
FROM DBA_DEPENDENCIES a
WHERE object_type IN ('PROCEDURE', 'PACKAGE BODY', 'PACKAGE'))
AND last_ddl_time >= TRUNC(SYSDATE - 1)
ORDER BY last_ddl_time DESC;

Để tự động hóa việc này ta tiến hành lập crontab hoặc schedule gửi email thông tin để người trực cuối ngày kiểm tra để tiến hành sửa kịp thời. Tránh bị lỗi như trên.