Wenn man eine Oracle Datenbank einige Zeit lang nicht benutzt, stößt man vermutlich auf das Problem, welches ich gerade hatte: alle internen Benutzerkonten waren abgelaufen und die Passwörter wusste ich auch nicht mehr.
Standardmäßig sind die Zugangsdaten eines internen Benutzer nach 180 Tagen ungültig.
Für meine Oracle 11gR2 Database Express Edition (XE) sind die folgenden Benutzer von primären Interesse:
- XDB – Oracle XML DB-Benutzer, wird für APEX (Application Express) benötigt
- SYS bzw. SYSTEM – System-Benutzer
Der Status der einzelnen Benutzer können über sqlplus eingesehen werden. Da die Benutzerdaten des Systembenutzers in meinem Fall nicht mehr gültig waren, die Datenbank aber noch lief, musste eine Verbindung über den oracle-Benutzer hergestellt werden. Nach dem Wechsel des Benutzerkontexts mittels su musste noch das zugehörige Oracle-Profil eingelesen werden, bevor sqlplus funktioniert. Hierbei werden automatisch die benötigten Oracle-Variablen (ORACLE_SID, ORACLE_HOME) gesetzt.
# su - oracle $ source /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh $ echo $ORACLE_SID XE $ sqlplus / as sysdba SQL> select username, account_status from dba_users where username IN ('XDB','SYSTEM','SYS'); USERNAME ACCOUNT_STATUS -------------------------------------- SYSTEM EXPIRED & LOCKED SYS EXPIRED & LOCKED XDB EXPIRED & LOCKED
Wie bereits vermutet waren die erwähnten Benutzer gesperrt. Abhilfe schaffen die folgenden Befehle:
SQL> alter user system account unlock; SQL> alter user sys account unlock; SQL> alter user xdb account unlock
Anschließend lassen sich auch neue Passwörter vergeben:
SQL> alter user system identified by PASSWORD; SQL> alter user sys identified by PASSWORD; SQL> alter user xdb identified by PASSWORD;
PASSWORD sollte natürlich durch ein eigenes Passwort ersetzt werden. 😉
Eine weitere Möglichkeit ist es, die automatische Sperrung nach 180 Tagen zu deaktivieren:
SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
Vielen Dank an Thorsten für den letzten Tip! 🙂
Hi Christian,
und damit es nicht dazu kommt kann man bei Oracle nach der Installation die Password_Life_time ausschalten:
SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
Ich hatte das Problem im SAP Umfeld ebenfalls:
http://www.linuxvoodoo.de/2013/10/oracle-11g-kennwortablauf-fuer-user/
😉
Gruß
Thorsten
Hey Torsten,
Vielen Dank für den Tip! Das war mir bis dato nicht bekannt.
Habe den Artikel mal überarbeitet und dich verlinkt. 🙂
Beste Grüße,
Christian!
Immer gern.
Danke auch fürs Verlinken 🙂