Profillerdeki password verify function limitinin FROM ROOT sorunu
Oracle veritabanlarında bir profilin password_verify_function limitinin değiştirilmesine rağmen , istenilen şekilde değişmeyip FROM ROOT şekline dönüşmektedir. Bu sorunun sebebi , profname$ data dictionary görüntüsündeki FLAGS değerinin ilgili profile için 1 (bir) olmasıdır. Bu değeri 0 (sıfır) olarak güncellendiğinde , profile limiti sorunsuz değiştirilebilecektir.
Aşağıdaki gibi profil limiti değiştirilmesine rağmen değişim istenilen gibi olmamaktadır.
SQL> alter profile users limit password_verify_function custom_verify_function;
İlgili profil limiti kontrol edildiğinde FROM ROOT şeklinde görülecektir.
SQL> select * from dba_profiles where resource_name='PASSWORD_VERIFY_FUNCTION'; PROFILE RESOURCE_NAME RESOURCE LIMIT COM -------- ------------------------- -------------- ---------------- ---- DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD NULL NO USERS PASSWORD_VERIFY_FUNCTION PASSWORD FROM ROOT YES
İlgili profilin flags değerini kontrol etttiğimizde 1 olduğunu görülmektedir.
select * from profname$; PROFILE# NAME FLAGS ---------- ------------------------- ---------- 0 DEFAULT 0 1 USERS 1
Aşağıdaki gibi profilin flags değeri güncellendiğinde sorun giderilmiş olacaktır.
SQL> update profname$ set flags=0; SQL> commit;
Tekrar kontrol ettiğimizde güncellendiğini görmemiz gerekiyor.
select * from profname$; PROFILE# NAME FLAGS ---------- ------------------------ ---------- 0 DEFAULT 0 1 USERS 0
Sonrasında profili değiştirdiğimizde sorunsuz şekilde limiti değişecektir.
SQL> alter profile users limit password_verify_function custom_verify_function;
Profili kontrol ettiğimizde değiştiğini görebiliriz.
Select * from dba_profiles where resource_name='PASSWORD_VERIFY_FUNCTION'; PROFILE RESOURCE_NAME RESOURCE LIMIT COM -------- ------------------------- -------------- ---------------- ---- DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD NULL NO USERS PASSWORD_VERIFY_FUNCTION PASSWORD CUSTOM_VERIFY_FUNCTION YES