esto nos muestra las cantidad de sesiones activas por base de datos
para liberarlas clic derecho kill sessions
Confirmamos
Luego de esto verificar que no hay bloqueos
Para conocer si ORACLE se encuentra bloqueado por sessiones mal cerradas debemo ejecutar el siguiente script dentro de TOAD para conocer cuantas sesiones están activas
--GENERICA SESIONES INACTIVAS
SET SERVEROUTPUT ON;
BEGIN
FOR r IN (
SELECT
decode(l.type, 'TM', 'TABLE', 'TX', 'Record(s)') type_lock,
decode(l.request, 0, 'NO', 'YES') wait,
s.osuser osuser_locker,
s.process process_locker,
s.username dbuser_locker,
o.object_name object_name,
o.object_type object_type,
s.status,
concat(' ', s.program) program,
o.owner owner,
s.sid,
s.serial#,
s.machine
FROM
v$lock l,
dba_objects o,
v$session s
WHERE
l.id1 = o.object_id
AND s.sid = l.sid
AND l.type IN ('TM','TX')
)
LOOP
begin
EXECUTE IMMEDIATE 'alter system kill session ''' || r.sid || ',' || r.serial# || ''' immediate' ;
dbms_output.put_line('sid:'||r.sid||' serial='||r.serial#) ;
--update sobterm set sobterm_crn_oneup = 41879 where sobterm_term_code = '202410';
EXCEPTION WHEN OTHERS THEN
dbms_output.put_line('ya maracad para borrar sid:'||r.sid||' serial='||r.serial#) ;
end;
END LOOP;
END;
/
set serveroutpu on;
--borrar por máquina o fecha o estado
BEGIN
FOR r IN (
select SERIAL#,SID,MACHINE,logon_time,USER,STATUS from gv$session
where TO_CHAR(logon_time,'DD/MM/YYYY') < TO_CHAR(SYSDATE,'DD/MM/YYYY')
AND MACHINE NOT IN ('x7m','MOLTAR','ZORAK')
--AND MACHINE like '%Admision%'
--AND MACHINE like '%INBPROD%'
AND STATUS='INACTIVE'
AND logon_time < TO_CHAR(SYSDATE,'DD/MM/YYYY')
)
LOOP
begin
EXECUTE IMMEDIATE 'alter system kill session ''' || r.sid || ',' || r.serial# || ''' immediate' ;
dbms_output.put_line('sid:'||r.sid||' serial='||r.serial#) ;
EXCEPTION WHEN OTHERS THEN
dbms_output.put_line('ya maracad para borrar sid:'||r.sid||' serial='||r.serial#) ;
end;
END LOOP;
END;
/
SELECT decode(L.TYPE,'TM','TABLE','TX','Record(s)') TIPO_BLOQUEO,
decode(L.REQUEST,0,'NO','YES') ESPERA,
S.SECONDS_IN_WAIT SEGUNDOS_EN_ESPERA,
decode(l.LMODE,0,'none',1,'null (NULL)',2,'row-S (SS)',3,'row-X (SX)',4,'share (S)',5,'S/Row-X (SSX)',6,'exclusive (X)') MODO_BLOQUEO,
S.OSUSER USUARIO_SIST_OPERAT,
S.USERNAME USUARIO_BD,
S.PROCESS PROCESS_LOCKER,
S.MACHINE MAQUINA,
O.OBJECT_NAME OBJETO_BLOQUEADO,
O.OBJECT_TYPE OBJETO_TIPO,
concat(' ',s.PROGRAM) PROGRAMA,
O.OWNER PROPIETARIO,
S.SID,
S.SERIAL#
FROM v$lock L,
dba_objects O,
v$session S
WHERE L.ID1 = O.OBJECT_ID
AND S.SID = L.SID
AND L.TYPE in ('TM','TX') ;