SQL >select count(*) from dba_users 2 where account_status = 'EXPIRE(GRACE)'; COUNT(*) ---------- 78 1 Zeile wurde ausgewählt.
Jetzt ist guter Rat teuer. Ein "alter user
Da man die Passwörter aller User für gewöhnlich nicht kennt, hilft hier nur die Passwortänderung mit dem Passwordhash.
Diesen bekommt man in 11g aus der sys.user$. Mit diesem Skript lässt man sich in sqlplus gleich noch ein sql-Skript erstellen, welches die Passworthashes schreibt und damit den Accountstatus zurücksetzt:
rem unexpire_users.sql, MW, 18.06.2013 spool alter_user_unexpire.sql set echo off set heading off set linesize 200 set feedback off SELECT 'ALTER USER ' || DU.USERNAME || ' IDENTIFIED BY VALUES '''|| SU.PASSWORD ||''';' FROM SYS.USER$ SU INNER JOIN SYS.DBA_USERS DU ON DU.USERNAME = SU.NAME WHERE DU.ACCOUNT_STATUS = 'EXPIRED(GRACE)' ORDER BY DU.PROFILE, DU.DEFAULT_TABLESPACE, DU.USERNAME; spool off exitUnd jetzt das erstellte SQL-Skript ausführen und fertig:
SQL >@alter_user_unexpire ... ... SQL >select count(*) from dba_users 2 where account_status = 'EXPIRE(GRACE)'; COUNT(*) ---------- 0 1 Zeile wurde ausgewählt.
Keine Kommentare:
Kommentar veröffentlichen