1
我有一個定期更新的包體。我需要在編譯本體時在表中存儲少量記錄(user_name,time,few-other-data)。編譯包體時觸發觸發器
有沒有什麼辦法可以創建一個觸發器,在編譯包體時將數據插入到表中?
我有一個定期更新的包體。我需要在編譯本體時在表中存儲少量記錄(user_name,time,few-other-data)。編譯包體時觸發觸發器
有沒有什麼辦法可以創建一個觸發器,在編譯包體時將數據插入到表中?
您可以在您的模式上創建AFTER CREATE
觸發器。它會在每個架構對象創建後觸發,但是您可能會限制使用諸如ora_dict_obj_name
之類的函數記錄的內容。
看看here來檢查觸發器實際上可用的功能。
樣本觸發可能是:
create table log_test (event_dt date, event_text varchar2(100));
create or replace trigger test_pkg_alter_log_trg
after create on <YOUR_USER>.schema
begin
insert into log_test(event_dt, event_text)
values (sysdate, ora_dict_obj_name);
end;
創建這樣的觸發將增加開銷任何CREATE
行動,不只是你的包重新編譯。應該評估這些開銷是否符合您的需求。 Oracle已經帶有大多數(所有?)事件被記錄,所以我建議你也考慮一下例如DBA_AUDIT_TRAIL
視圖(事件action in (94, 97, 95, 98)
)來檢查它是否可以用於你的目的。在該視圖中的完整行動列表可以通過select * from audit_actions
獲得。
您可以將幾行添加到運行編譯的腳本。 – Rene
我正在使用SQLDeveloper,因此不確定在哪裏查找「運行編譯的腳本」。 – 6055
對我來說,你的問題似乎暗示了你想要記錄的一些自動化過程。 – Rene