Search code examples
oracle-databasepasswordsoracle12cchange-password

Is it possible to set a mimimum period of validity of a user-password in Oracle Database


we are using Oracle Database 12c (migrating to 19c in the next months) as basis for an application. Currently I`m dealing with a general password guideline and how to implement the requirements of the guideline to the oracle user-passwords.

I know that i can write my own password verify function in the utlpwdmg.sql script to force a certain level of complexity of the password. I can also set the PASSWORD_LIFE_TIME and so on. But is it also possible to set a minimum time, a password is not allowed to be changed (e.g. I have set my password, and in the next 24 hours i am not allowed to change my password again)? I can`t find a resource which corresponds to this requirement.

Thank you very much!


Solution

  • Not directly, as far as I can tell.

    My Oracle Support document ID 2036008.1 suggests us to create our own function (let's call it password_minimum_age) which will be checking it.

    Shortly, you'd select ptime from sys.user$ for that particular username and compare it to sysdate; if you find out that it is changed too soon, raise an error.

    You'd then use that function to create profile, e.g.

    create profile password_age limit password_verify_function password_minimum_age;
    

    and alter user to use that profile:

    alter user scott profile password_age;