You are on page 1of 2

RESTRICCION AL ACCESO A LA BASE DE DATOS PARA DETERMINADAS APLICACIONES.

Por: Ing. Edwin Fernando Cabrera Martinez
14 de julio 2005
El articulo describe la manara de crear un Trigger, que limite la conexión a la base de datos mediante
determinadas aplicaciones (sin utilizar la tabla PRODUCT_USER_PROFILE). Para ello se deben seguir los
pasos:
1. Creación de una estructura (tabla), en donde se almacene las aplicaciones a restringir.
2. Creación del Trigger.
Cabe anotar que tanto la estructura como el trigger deben crearse bajo la estructura del usuario SYS como
SYSDBA.
1. Con la siguiente instrucción SQL creamos la estructura (tabla), en donde se almacenan las
aplicaciones a restringir y una bandera que indica si la restricción esta activa o no esta activa:
CREATE TABLA APLICACIÓN
(
NAMEAPP VARCHAR2(64) PRIMARY KEY,
ACTIAPP VARCHAR2(1)
);
2. El siguiente es el Script de creación del Trigger, con nombre ON_LOGON, después (AFTER) del
evento LOGON.

CREATE TRIGGER ON_LOGON
AFTER LOGON ON DATABASE
DECLARE
XSID NUMBER;
XPROGRAM VARCHAR2(64);
XMODULE VARCHAR2(32);
XPROGRAM2 VARCHAR2(64);
-BEGIN
-- El siguiente bloque realiza la consulta en la vista V$SESSION para obtener el
-- SID,PROGRAM yMODULE de la sesión actual, en las variables
-- XSID,XPROGRAM,XMODULE.
BEGIN
SELECT

INTO
FROM
WHERE

SID,
RTRIM(LTRIM(UPPER(PROGRAM))),
RTRIM(LTRIM(UPPER(MODULE)))
XSID,XPROGRAM,XMODULE
V$SESSION
SID=(SELECT DISTINCT SID FROM V$MYSTAT);

END;
-BEGIN
SELECT
NAMEAPP
INTO
XPROGRAM2
FROM
SYS.APLICACION
WHERE
NAMEAPP=UPPER(XPROGRAM) AND ACTIAPP='A';
-RAISE_APPLICATION_ERROR(-20001, 'CONEXION NO PERMITIDA !!!');

’A’). así: UPDATE APLICACION SET ACTIAPP=’I’ WHERE NAMEAPPP=’SQLPLUSW. END. así. actualizamos el campo ACTIAPP a la bandera I. EXCEPTION WHEN NO_DATA_FOUND THEN NULL. como ejemplo si queremos limitar el ingreso o la conexión a la base de datos por medio de la aplicación SQLPLUSW. INSERT INTO APLICACIÓN VALUES(‘SQLPLUSW.EXE’. END. se dispara para todos los usuarios que no tengas privilegios de DBASYS o DBAOPER.APLICACION WHERE NAMEAPP=UPPER(XMODULE) AND ACTIAPP='A'. El anterior Trigger.EXCEPTION WHEN NO_DATA_FOUND THEN BEGIN SELECT NAMEAPP INTO XPROGRAM2 FROM SYS. 'CONEXION NO PERMITIDA !!!').EXE y la bandera A. END.EXE insertamos en la tabla APLICACIÓN el campo SQLPLUSW.EXE’. -RAISE_APPLICATION_ERROR(-20001. Si se desea desactivar esta restricción. .