Profil des comptes Oracle
A compter de Oracle v10, les comptes utilisent un profil par défaut avec les propriétés suivantes :
select * from dba_profiles where resource_type='PASSWORD' order by profile;
PROFILE RESOURCE_NAME RESOURCE LIMIT
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD 10
DEFAULT PASSWORD_LIFE_TIME PASSWORD 180
DEFAULT PASSWORD_REUSE_TIME PASSWORD UNLIMITED
DEFAULT PASSWORD_GRACE_TIME PASSWORD 7
DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD NULL
DEFAULT PASSWORD_LOCK_TIME PASSWORD 1
DEFAULT PASSWORD_REUSE_MAX PASSWORD UNLIMITED
Un mot de passe est donc valide 6 mois, et le compte est verrouillé après 10 tentatives de connexion infructueuses (ce qui va très vite si on démarre HR Access avec un objet Topologie HRS mal renseigné).
On aura alors blocage du compte :
select username, profile, account_status from dba_users where username='HR';
USERNAME PROFILE ACCOUNT_STATUS
- - - - - - - - - - - - - - - - - - - - - - - - -
HR DEFAULT LOCKED
Attribuer à HR un profil spécifique
Ci dessous on crée un profil différent du profil par défaut, sans limitations.
CREATE PROFILE HR
LIMIT
SESSIONS_PER_USER UNLIMITED
CPU_PER_SESSION UNLIMITED
CPU_PER_CALL UNLIMITED
CONNECT_TIME UNLIMITED
IDLE_TIME UNLIMITED
LOGICAL_READS_PER_SESSION UNLIMITED
LOGICAL_READS_PER_CALL UNLIMITED
PRIVATE_SGA UNLIMITED
COMPOSITE_LIMIT UNLIMITED
FAILED_LOGIN_ATTEMPTS UNLIMITED
PASSWORD_LIFE_TIME UNLIMITED
PASSWORD_REUSE_TIME UNLIMITED
PASSWORD_REUSE_MAX UNLIMITED
PASSWORD_LOCK_TIME UNLIMITED
PASSWORD_GRACE_TIME UNLIMITED
PASSWORD_VERIFY_FUNCTION NULL;
Puis on l'attribue au compte HR :
ALTER USER HR PROFILE HR;
Débloquer le compte
Pour supprimer le verrouillage, se connecter avec le compte administrateur et exécuter l'ordre suivant :
ALTER USER HR ACCOUNT UNLOCK;
NB : si vous êtes sous Unix et que votre compte est dans le groupe "dba", cela se fait par la commande "sqlplus / as sysdba". Sinon il vous faut connaitre le mot de passe du compte "system". Attention : si vous n'avez pas un minimum de compétence Oracle, passez la main à un administrateur plutôt que de casser quelque chose ...
Pour supprimer le warning ORA-28011, le seul moyen que j'ai trouvé est de repositionner l'ancien mot de passe :
ALTER USER HR IDENTIFIED BY ...;
Pour être tranquille on peut aussi supprimer l'expiration du mot de passe:
RépondreSupprimerOn vérifie le profil du user HR
select profile from DBA_USERS where username = 'HR';
Et modifier l’expiration du profil
alter profile DEFAULT limit password_life_time UNLIMITED;