Cancelar Sesiones con scripts en RDS AWS
Cuando tenemos bases de datos oracle en AWS en momentos nos piden cerrar todas las sesiones INACTIVE o ACTIVE, cuando es una es muy facil, pero cuando son muchas sesiones se debe recurrir a instrucciones que nos ayuden a ganar tiempo.
SQL> select s.username, s.status, count(1) from v$process p, v$session s where paddr(+)=addr group by s.status, s.username order by 1;
USERNAME STATUS COUNT(1)
------------------------------ -------- ----------
AWSDBA ACTIVE 1
AWSDBA INACTIVE 1
APP INACTIVE 30
RDSADMIN INACTIVE 1
Podemos utilizar el script con DISCONNECT
SQL> select status,OSUSER,USERNAME,'EXEC rdsadmin.rdsadmin_util.disconnect('||''||SID||','||serial#||''||' ); ' cadena from v$session where status like '%&STATUS%' AND USERNAME like '%&USER%' ;
INACTIVE jboss APP
SQL> EXEC rdsadmin.rdsadmin_util.disconnect(3866,5704 );
Podemos utilizar el script con KILL
SQL> select status,OSUSER,USERNAME,'begin rdsadmin.rdsadmin_util.kill(sid=> '||''||SID||',serial =>'||serial#||''||' );end; ' cadena from v$session where status like '%&STATUS%' AND USERNAME like '%&USER%' ;
SQL> begin rdsadmin.rdsadmin_util.kill(51,59312,'IMMEDIATE');end;
2 /