我们目前有一个登录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;
答案 0 :(得分:4)
不可能 - 触发器无法接受用户输入。
你可以更好地拥有一个一直处于锁定状态的破解用户帐户,并让用户在查看破碎的用户帐户时,输入他们当时的理由。< / p>
哦,你的申请清单是默默无闻的;将os应用程序名称从sqlplus.exe
更改为fluffybunnies.exe
是微不足道的。