天天看點

Oracle限制某個資料庫帳号隻能在特定機器上連入資料庫

通過Oracle資料庫的觸發器實作,例如:TEST為測試賬号、綁定的IP為:10.142.244.30

CREATE OR REPLACE TRIGGER sys.trg_work_log 

AFTER LOGON ON DATABASE

declare

v_program_name varchar2(200);

v_username varchar2(100);

v_ip varchar2(18);

v_error varchar2(1000);

begin

select username,program,SYS_CONTEXT('USERENV','IP_ADDRESS')   

into v_username,v_program_name,v_ip

from sys.v_$session where AUDSID = SYS_CONTEXT('USERENV', 'SESSIONID');

if (upper(v_username)='TEST')

then

  if (UPPER(v_program_name) = 'SQLPLUS.EXE') then

     if (v_ip = ('10.142.244.30'))

       RAISE_APPLICATION_ERROR(-20001,'You are not allowed to connect to the database,err01');

    end if;

  ELSE

     RAISE_APPLICATION_ERROR(-20001,'不能使用sqlplus登陸');

  end if;

else

   RAISE_APPLICATION_ERROR(-20001,'You are not allowed to connect to the database');

end if;

END ;

/