Lost Oracle SYS and SYSTEM password?

If your administration is as good as anybodies, you are bound to loose the not-so-frequently used password for the SYS and SYSTEM users of oracle. Here are a few ways I found to re-set those passwords:

Method 1: SQLPLUS (Tested on AIX Oracle 9.2.0.1.0)

Log into the database server as a user belonging to 'dba' [unix ] or 'ora_dba' [windows ] group , typically 'oracle', or an administrator on your windos machine. You are able to log into Oracle as SYS user, and change the SYSTEM password by doing the following:

<tt><span style="color:gray;">$ </span><span style="color:blue;">sqlplus "/ as sysdba"</span></tt><tt><span style="color:gray;">
</span></tt><tt><span style="color:gray;">SQL*Plus: Release 9.2.0.1.0 - Production on Mon Apr 5 15:32:09 2004</span></tt>
<tt><span style="color:gray;">
</span></tt><tt><span style="color:gray;">Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.</span></tt>
<tt><span style="color:gray;">
</span></tt><tt><span style="color:gray;">Connected to:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production</span></tt>
<tt><span style="color:gray;">
</span></tt><tt><span style="color:gray;">SQL> </span><span style="color:blue;">show user</span></tt>
<tt><span style="color:gray;">
</span></tt><tt><span style="color:gray;">USER is "SYS"</span></tt>
<tt><span style="color:gray;">
</span></tt><tt><span style="color:gray;">SQL> </span><span style="color:blue;">passw system</span>
Changing password for system
New password:
Retype new password:
Password changed
SQL> <span style="color:blue;">quit</span>

</tt>

Next, we need to change the password of SYS:

<tt><span style="color:gray;">$ </span><span style="color:blue;">sqlplus "/ as system"</span></tt><tt><span style="color:gray;">
</span></tt><tt><span style="color:gray;">SQL*Plus: Release 9.2.0.1.0 - Production on Mon Apr 5 15:36:45 2004</span></tt>
<tt><span style="color:gray;">
</span></tt><tt><span style="color:gray;">Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.</span></tt>
<tt><span style="color:gray;">
</span></tt><tt><span style="color:gray;">SP2-0306: Invalid option.
Usage: CONN[ECT] [logon] [AS {SYSDBA|SYSOPER}]
where <logon>  ::= <username>[/<password>][@<connect_string>] | /
Enter user-name: system
Enter password:</span></tt>
<tt><span style="color:gray;">
</span></tt><tt><span style="color:gray;">Connected to:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production</span></tt>
<tt><span style="color:gray;">
</span></tt><tt><span style="color:gray;">SQL> </span><span style="color:blue;">passw sys</span>
Changing password for sys
New password:
Retype new password:
Password changed
SQL> <span style="color:blue;">quit</span>
</tt>

You should now be able to log on the SYS and SYSTEM users, with the passwords you just typed in.

Method 2: Creating pwd file (Tested on Windows Oracle 8.1.7)

  1. Stop the Oracle service of the instance you want to change the passwords of.
  2. Find the PWD###.ora file for this instance, this is usuallly located atC:\oracle\ora81\database\, where ### is the SID of your database.
  3. rename the PWD###.ora file to PWD###.ora.bak for obvious safety reasons.
  4. Create a new pwd file by issuing the command: 

orapwd file=C:\oracle\ora81\database\PWD###.ora password=XXXXX where ### is the SID and XXXXX is the password you would like to use for the SYS and INTERNAL accounts. 5. Start the Oracle service for the instance you just fixed. You should be able to get in with the SYS user and change other passwords from there.