Oracle-禁止使用者對自己的表執行drop,alter操作

livedba發表於2011-09-19

在大型專案的資料管理中,資料庫的安全隱患非常大,既要允許開發人員能夠登陸資料庫,查詢資料,但是又不能對錶進行刪除,修改許可權。針對這種情況有兩種解決方案:

1.在sys使用者建立觸發器,不允許使用者刪除和修改表。

2.建立B使用者,給B使用者對A使用者表的insert,update許可權,不給其他許可權。

這裡先說下1的實現:

[@more@]

CREATE OR REPLACE TRIGGER T_TEST
BEFORE DROP OR ALTER ON database
DECLARE
BEGIN
IF ora_dict_obj_owner = 'TEST' AND ora_sysevent = 'DROP' THEN
raise_application_error(-20002,'不允許刪除物件');
ELSIF ora_dict_obj_owner = 'TEST' AND ora_sysevent = 'ALTER' THEN
RAISE_APPLICATION_ERROR(-20001,'不允許修改物件結構');
END IF;

END;

這個是在sys使用者下建立觸發器,如果在使用者下建立database
要換成schema

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25261409/viewspace-1055181/,如需轉載,請註明出處,否則將追究法律責任。

相關文章