Skip to Main Content

Oracle Database Discussions

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Blocking tools like TOAD connecting to database

Vinod Kumar G MJul 14 2014 — edited Jul 15 2014

Hi,

I need to control the applications and tools like Toad for Oracle connecting to the database. So i created an AFTER LOGON ON DATABASE trigger.

when i login first time through Toad it will allow me to login to the database but when i tried to login again by keeping the first one without logging out it will not allow , I need to completely block Toad connecting to database for selected systems. Can any one please help me to solve this challenge.

Below is the trigger.

CREATE OR REPLACE TRIGGER SYS.BLOCK_TOOLS

AFTER LOGON ON DATABASE

  

DECLARE

        V_PROG SYS.V_$SESSION.PROGRAM%TYPE;

        MY_FORCED_EXCEPTION EXCEPTION;

        PRAGMA EXCEPTION_INIT(MY_FORCED_EXCEPTION, -20101);

        CNT NUMBER:=0;

BEGIN

       SELECT NVL(COUNT(*),0) INTO CNT FROM(

                SELECT DISTINCT USERNAME,TERMINAL,MODULE,PROGRAM,SERVICE_NAME,LOCKYN,

                        UPPER(MACHINE_NAME),MACHINE_IP      

                FROM SYS.V_$SESSION,USER_LOCK

                    WHERE USERNAME IS NOT NULL

                    AND TERMINAL = SYS_CONTEXT('USERENV','TERMINAL')

                    AND MACHINE_IP = UTL_INADDR.get_host_address(TERMINAL)

                    AND LOCKYN = 'Y'

                    AND 'TOAD' = SUBSTR(MODULE,0,4));

          

      IF CNT > 0 THEN

         

         RAISE my_forced_exception;

        

      END IF;

   EXCEPTION

       WHEN MY_FORCED_EXCEPTION THEN

                RAISE_APPLICATION_ERROR(-20101, 'Action not allowed. Please contact your DBA to help you!');

        WHEN OTHERS THEN

            NULL;

    

END;

/

------------------------------------------------

USER_LOCK is the table created by me to keep track of the systems which needs to block and script for the table is

CREATE TABLE SYS.USER_LOCK

(

  MACHINE_NAME  VARCHAR2(25 BYTE),

  MACHINE_IP    VARCHAR2(20 BYTE),

  LOCKYN        CHAR(1 BYTE)

)

where MACHINE_NAME is the name of the machine and MACHINE_IP is the IP address of the same system and  LOCKYN is the status of the system whether it is locked or not ( Y or N);

Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Aug 12 2014
Added on Jul 14 2014
13 comments
3,676 views