현재 특정 응용 프로그램 (예 : SQL Plus, SQL Developer)에서 Oracle에 로그인하는 세션에 대한 사용자 정보를 트랩하는 로그인 trigger
이 있습니다. 이 정보는 감사를 목적으로 테이블에 삽입됩니다.로그인 사용자 입력을 수락하는 트리거
이제 사용자가 트래핑하는 응용 프로그램 중 하나를 통해 사용자가 로그인하면 사용자가 로그인하는 이유에 대해 잘못된 정보를 입력 한 다음 감사를 위해 동일한 테이블에 정보를 입력하라는 메시지를 표시하려고합니다.
우리는 우리가 가지고있는 것을 어떻게 할 수 있는지, 또는 이와 같은 일을 성취하는 방법에 대한 다른 아이디어가 있습니까? 현재 Login Trigger
:
begin
if (dba_monitor.get_program_name = 1)
then
insert into dba_monitor.logon_table2
(username,machine,program, logon_date)
select username,machine,program,sysdate
from v$session
where username=(select user from dual)
and username not in ('SYSMAN','DBSNMP');
else
insert into dba_monitor.logon_table
(user_name,logon_date)
select username,sysdate
from v$session
where username=(select user from dual)
and username not in ('SYSMAN','DBSNMP');
end if;
end;
DBA_MONITOR.GET_PROGRAM
기능 :
return varchar2
is
audit_program number :=0;
audit_select number :=0;
begin
select 1
into audit_program
from v$session
where audsid = sys_context('USERENV','sessionid')
and (upper(program) in ('SQLPLUS.EXE', 'SQLPLUSW.EXE', 'TOAD.EXE', 'GOLDEN32.EXE', 'MSACCESS.EXE'));
return(audit_program);
exception
WHEN NO_DATA_FOUND
then
return(audit_select);
end;