هر کاربری می تواند بدون داشتن مجوز اضافه ای(مانند alter user)؛ پسوردش را با یکی از روشهای زیر تغییر دهد:
SQL> grant create session to usef;
Grant succeeded.
SQL> conn usef/a
Connected.
روش اول:
SQL> alter user usef identified by b;
User altered.
روش دوم:
SQL> password
Changing password for USEF
Old password:
New password:
Retype new password:
Password changed
برای جلوگیری از تغییر پسورد کاربر usef(به شیوه مذکور)، میتوان از تریگر زیر استفاده کرد:
SQL> create or replace trigger stop_changing_pass
before alter
on database
declare
begin
if user = ‘USEF’ then
if (ora_dict_obj_type = ‘USER’) then
raise_application_error(-20010,’you cannot change your own password’);
end if;
end if;
end;
/
Trigger created.
با ایجاد این تریگر با مالکیت sys، کاربر usef نمی تواند پسوردش را تغییر دهد:
SQL> conn usef/1
Connected.
روش اول:
SQL> alter user usef identified by b;
ORA-04088: error during execution of trigger ‘SYS.STOP_CHANGING_PASS’
ORA-00604: error occurred at recursive SQL level 1
ORA-20010: you cannot change your own password
ORA-06512: at line 4
روش دوم:
SQL> password
Changing password for USEF
Old password:
New password:
Retype new password:
ORA-04088: error during execution of trigger ‘SYS.STOP_CHANGING_PASS’
ORA-00604: error occurred at recursive SQL level 1
ORA-20010: you cannot change your own password
ORA-06512: at line 4
Password unchanged