Solved: “ORA-28001: the password has expired” on Windows 8.1

odbc-errorWhile working with the development version of a document library that uses Oracle for storage on a Windows 8.1 laptop, we ran into the error “ODBC error: [Oracle][ODBC][Ora]ORA-28001: the password has expired”.

It turns out that up until Oracle 10, the default password policy was no password expiration.  Starting with Oracle 11, there is a default password lifetime of 180 days.

Here are the steps we took to fix it:

1. Get DBA privileges

Assuming you’re logged into Windows as “joe”, check if you’re in the “ora_dba” group by running cmd.exe and issuing the command “net user joe”.  You’ll see a list of local groups that you belong to near the end of the output.  If you don’t know who you’re logged in as, try “whoami”.

If you’re not in the ora_dba group, you can add yourself with the Local Users and Groups tool in Computer Management.  Except that tool is gone in Windows 8.1.  Very frustrating!  In that case, issue the command “net localgroup ora_dba joe /add”.

2. Set the password lifetime to unlimited

Now you can change the password lifetime with this series of commands:

sqlplus /nolog
connect / as sysdba
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

3. Change Oracle user passwords

You may or may not need to change the password of Oracle users on your system.

From the sqlplus prompt, use the following command (use double quotes around the new password and replace the username “system” as needed):

ALTER USER system IDENTIFIED BY “new_password”;

Hope this helps some people!

Leave a Reply

Your email address will not be published. Required fields are marked *