이 트리거를 걸어둬도 유저가 dba 권한을 가지고 있으면 동작하지 않는다.

허용하는 ip가 아니면 해당 유저가 접속할 수 없도록 하는 예시

 

create or replace TRIGGER SYSTEM.LOGON_ACL
after logon
on database
WHEN (
    user='유저명'
)
declare
v_ip varchar(32);
BEGIN
    select sys_context('USERENV', 'IP_ADDRESS') into v_ip from dual;
    IF (v_ip not in ('xx.xx.xx.xx','xx.xx.xx.xx')) THEN
         RAISE_APPLICATION_ERROR(-20000, 'Access denied! You don"t have permission to login!');
    ELSIF (v_ip is null) then                                                    --db서버에서 sqlplus 방지
         RAISE_APPLICATION_ERROR(-20000, 'Access denied! You don"t have permission to login!');
    END IF;
END;

 

아니면 이렇게도 가능하다

 

create or replace TRIGGER SYSTEM.LOGON_ACL
after logon
on 유저명.schema

declare
v_ip varchar(32);
BEGIN
    select sys_context('USERENV', 'IP_ADDRESS') into v_ip from dual;
    IF (v_ip not in ('xx.xx.xx.xx','xx.xx.xx.xx')) THEN
         RAISE_APPLICATION_ERROR(-20000, 'Access denied! You don"t have permission to login!');
    ELSIF (v_ip is null) then                                                    --db서버에서 sqlplus 방지
         RAISE_APPLICATION_ERROR(-20000, 'Access denied! You don"t have permission to login!');
    END IF;
END;

 

'Knowledge > Oracle' 카테고리의 다른 글

null 관련 주의사항  (0) 2015.07.10
logon trail trigger on oracle  (0) 2015.01.22
dg4obbc 제약사항  (0) 2014.12.31
EZCONNECT 사용방법  (0) 2014.05.30
DB Upgrade 상식  (0) 2014.05.27
Posted by neo-orcl
,