我從PL/SQL執行清理操作,這往往會填滿我的重做日誌,導致數據庫凍結在「無法分配新日誌」條件。如何從PL/SQL執行檢查點
將工作拆分成更小的塊不能解決問題,因爲重做日誌文件保持status = ACTIVE和ARCHIVED = YES時間過長。只有在「更改系統檢查點」之後,髒日誌纔會寫入磁盤並在下一個塊中再次可用。
現在,我該如何從PL/SQL做到這一點。我試圖
create procedure cp as begin execute immediate 'alter system checkpoint'; end;
,但它給了我ORA-01031: insufficient privileges
我已經得到了DBA的角色,但是這不是有效的PL/SQL程序。我需要授予什麼特權?
我知道有控制點檢查的參數,但我不想改變這些。我只想在清理期間手動檢查點。
來自角色的權限在存儲過程內無效。您需要直接授予'alter system'特權。 –
嘗試創建過程cp authid current_user as ...(或者a_horse_with_no_name建議直接向用戶授予) – tbone
對於PL/SQL,角色被禁用,並且通過角色授予的任何特權不適用,除非您使用AUTHID CURRENT_USER創建過程,在這種情況下,角色特權確實適用。 – tbone