登录触发器将接受用户输入

时间:2011-12-15 17:52:52

标签: oracle plsql triggers

我们目前有一个登录trigger,用于捕获从特定应用程序(即SQL Plus,SQL Developer)登录到Oracle的会话的用户信息。它接收该信息并将其插入表中以供审计。

现在,如果用户通过其中一个我们正在捕获的应用程序登录,我们希望提示用户输入有关他们登录原因的信息,然后将其写入同一个表中以进行审计

关于我们如何使用我们拥有的内容或任何其他关于如何完成同样事情的想法的任何想法?

当前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;

1 个答案:

答案 0 :(得分:4)

不可能 - 触发器无法接受用户输入。

你可以更好地拥有一个一直处于锁定状态的破解用户帐户,并让用户在查看破碎的用户帐户时,输入他们当时的理由。< / p>

哦,你的申请清单是默默无闻的;将os应用程序名称从sqlplus.exe更改为fluffybunnies.exe是微不足道的。

相关问题