Herhangi bir userın hiçbir şekilde SYS veya SYSTEM userının şifresini değiştirilmesini istemiyorsak eğer bunu bir trigger yardımı ile engelleyebiliriz.
Öncelikle SYS userı altına trigger’ ımızı oluşturuyoruz ;
1 2 3 4 5 6 7 8 9 10 11 12 |
CREATE or REPLACE TRIGGER prevent_alter_SYSTEM_SYS_pass BEFORE ALTER on KAMIL.schema BEGIN IF ora_sysevent='ALTER' and ora_dict_obj_type = 'USER' and (ora_dict_obj_name = 'SYSTEM' or ora_dict_obj_name = 'SYS') THEN RAISE_APPLICATION_ERROR(-20003, 'You are not allowed to alter SYSTEM/SYS user.'); END IF; END; / Trigger created. |
Biz bu örneğimiz de KAMIL userının hiçbir şekilde SYS veya SYSTEM userının şifresini ALTER edememesini sağlamış olduk.
Test edelim;
conn kamil/kamil;
Connected.
1 2 3 4 5 6 7 |
SQL> alter user system identified by change1 ; alter user system identified by change1 Error at line 1 ORA-00604: özyinelemeli 1 SQL düzeyinde hata oluştu ORA-20003: You are not allowed to alter SYSTEM/SYS user. ORA-06512: konum satır 5 Script Terminated on line 5. |
Bu triggerı varsa kritik olan başka userlarınız içinde düzenleyebilirsiniz.
Reference
How to Prevent a User Granted the ALTER USER Privilege From Changing SYS/SYSTEM password (Doc ID 271077.1)