Ver Mensaje Individual
  #4 (permalink)  
Antiguo 04/03/2010, 14:17
Avatar de 8vio
8vio
 
Fecha de Ingreso: marzo-2008
Ubicación: Detras del monitor
Mensajes: 168
Antigüedad: 16 años, 8 meses
Puntos: 6
Respuesta: Restringir numero de conexiones a un usuario en ORACLE 11

Ok despues de varia vueltas que dio el mundo me toco la situacion y aqui esta:

Código:
/*********************************************************************/
/* Purpose: Evitar que un usuario inicie sesion mas de X veces       */
/*********************************************************************/
/* Author: Octavio Suárez                                            */
/*                                                                   */
/* Description: El trigger evita mas de un logeo por parte de un     */
/* usuario distinto de SYS, ver vista V$session para colocar N       */
/* cantidad de variantes como el si es un proceso background,        */
/* esquema etc.                                                      */ 
/*                                                                   */
/*********************************************************************/

CREATE OR REPLACE TRIGGER logon_trigger
AFTER LOGON ON DATABASE

DECLARE

cont               NUMBER; 

BEGIN

      SELECT COUNT(DISTINCT(s.PROCESS))
      INTO cont 
      FROM V$session s 
      WHERE username=USER 
      AND username<>'SYS';

      IF (cont > 1) THEN
      RAISE_APPLICATION_ERROR(-20021,'El usuario no puede tener dos sesiones concurrentes');

      END IF;

END;
Con este trigger evitamos que un usuario distinto de SYS se pueda loguer mas de una vez.

Saludos.