Thursday, March 19, 2009

Blocking access to Oracle from TOAD

CREATE OR REPLACE TRIGGER NOTOAD_VB AFTER LOGON ON DATABASE
DECLARE SHOULD_EXECUTE INTEGER;
BEGIN
SELECT DECODE(SUBSTR(UPPER(PROGRAM),1,4),'TOAD',1,'VB',1,0)+DECODE(INSTR(PROGRAM,'\',-1),0,0,
DECODE(SUBSTR(UPPER(SUBSTR(PROGRAM,INSTR(PROGRAM,'\',-1)+1)),1,4),'TOAD',1,'VB',1,0))
INTO SHOULD_EXECUTE FROM V$SESSION WHERE SID=(SELECT SID FROM V$MYSTAT WHERE ROWNUM=1);
IF SHOULD_EXECUTE > 0 THEN
raise_application_error(-20001,'Please no toad yet, try again later');
--EXECUTE IMMEDIATE 'ALTER SESSION SET EVENTS ''10046 TRACE NAME CONTEXT FOREVER,LEVEL 12''';
END IF;
END;