Oracle XE: Abgelaufene Benutzer zurücksetzen
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ötigtSYS
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.
1# su - oracle
2$ source /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh
3$ echo $ORACLE_SID
4XE
5$ sqlplus / as sysdba
6SQL> select username, account_status from dba_users where username IN ('XDB','SYSTEM','SYS');
7
8USERNAME ACCOUNT_STATUS
9--------------------------------------
10SYSTEM EXPIRED & LOCKED
11SYS EXPIRED & LOCKED
12XDB EXPIRED & LOCKED
Wie bereits vermutet waren die erwähnten Benutzer gesperrt. Abhilfe schaffen die folgenden Befehle:
1SQL> alter user system account unlock;
2SQL> alter user sys account unlock;
3SQL> alter user xdb account unlock
Anschließend lassen sich auch neue Passwörter vergeben:
1SQL> alter user system identified by PASSWORD;
2SQL> alter user sys identified by PASSWORD;
3SQL> 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:
1SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
Vielen Dank an Thorsten für den letzten Tip! 🙂