이 트리거를 걸어둬도 유저가 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 |