2011-12-15 4 views
0

현재 특정 응용 프로그램 (예 : 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; 

답변

4

불가능 - 트리거가 사용자 입력을받을 수 없어.

항상 잠긴 유리가 깨져있는 사용자 계정을 가지고있는 것이 더 좋을 것입니다. 사용자가 유리창 사용자 계정을 체크 아웃 할 때 그 시점에 그 칭의를 입력하게하십시오.

아, 귀하의 응용 프로그램 목록은 보안에 의한 것입니다. os 응용 프로그램 이름을 sqlplus.exe에서 fluffybunnies.exe으로 변경하는 것은 간단합니다.

관련 문제