1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| PROCEDURE raz_pool_UOC IS
CURSOR c_all_users is
SELECT * FROM utilisateur_ora
WHERE REGEXP_LIKE(UTO_USR_NAME, '^UOC[0-9]{3}$')
FOR UPDATE;
TraceLog varchar2(150);
newpasswd varchar2(30);
Requete varchar2(150);
sec_en_plus number:=0;
v_user_name c_all_users%ROWTYPE;
BEGIN
OPEN c_all_users;
LOOP
FETCH c_all_users into v_user_name;
TraceLog := 'v_user_name.UTO_USR_NAME=*'||v_user_name.UTO_USR_NAME||'*';
PKG_COM.Ecrire_trace( PKG_COM.INF,
'Test raz_pool_UOC',
SUBSTR(TraceLog,1,300),
'',
'PKG_OTP.raz_pool_UOC');
sec_en_plus:=sec_en_plus+1;
newpasswd:=pkg_otp.CreateRandomPassword;
-- raz de la table UTILISATEUR_ORA
UPDATE utilisateur_ora
set UTO_PWD_GPL=newpasswd, UTO_JAN_SEQ=null, UTO_STA='LIBRE',
UTO_DATE_STATUT=sysdate+(sec_en_plus/86400), UTO_ID_ORA=null, UTO_ID_THREAD=null
WHERE CURRENT OF c_all_users;
-- raz pwd Oracle, unlock au cas ou
Requete:='ALTER USER '||v_user_name.UTO_USR_NAME||' ACCOUNT UNLOCK';
Execute immediate Requete;
Requete:='ALTER USER '||v_user_name.UTO_USR_NAME||' IDENTIFIED BY '||newpasswd;
Execute immediate Requete;
END LOOP;
CLOSE c_all_users;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
PKG_COM.Ecrire_trace( PKG_COM.ERR,
SUBSTR(SQLERRM,1,300),
SUBSTR(Requete,1,300),
'OTHERS - RAZ pool UOC',
'PKG_OTP.raz_pool_UOC');
END raz_pool_UOC; |
Partager