- Oracle l'essentiel
- Installation d'Oracle
- Les Scripts
Petite procédure permettant de déverrouiller un enregistrement laps de temps en seconde (Téléchargement du script)
N'oubliez pas de donner les droit à l'utilisateur (grant)
CREATE OR REPLACE PROCEDUREuser.unlock( TimeOut VARCHAR2) IS
retval NUMBER := 0;
cid NUMBER := 0;
SID NUMBER := 0;
SERIAL NUMBER := 0;
begin
cid := DBMS_SQL.OPEN_CURSOR;
-- dbms_output.put_line ('Open cursor');
DBMS_SQL.PARSE(cid,'select sid from sys.v_$lock l where l.ctime > '||TimeOut||' and l.TYPE = ''TX''',DBMS_SQL.V7);
-- dbms_output.put_line ('Parse');
DBMS_SQL.DEFINE_COLUMN(cid,1,SID);
retval :=DBMS_SQL.EXECUTE_AND_FETCH(cid);
IF (retval > 0) THEN
DBMS_SQL.COLUMN_VALUE(cid,1,SID);
DBMS_SQL.PARSE(cid,'select s.serial# from sys.v_$session s where s.sid = '||SID||' and s.username is not null',DBMS_SQL.V7);
-- dbms_output.put_line ('Parse');
DBMS_SQL.DEFINE_COLUMN(cid,1,SERIAL);
retval :=DBMS_SQL.EXECUTE_AND_FETCH(cid);
IF (retval > 0) THEN
DBMS_SQL.COLUMN_VALUE(cid,1,SERIAL);
execute immediate 'alter system kill session ''' || SID|| ',' || SERIAL||'''';
END IF;
else
dbms_output.put_line ('no KILL');
END IF;
DBMS_SQL.CLOSE_CURSOR(cid);
END unlock;
/
Scripts Oracle Déverrouillage d'un enregistrement