我定义了一个触发器
CREATE OR REPLACE TRIGGER LOGON_HISTORY
AFTER LOGON ON DATABASE --WHEN (USER='EQSP') --ONLY FOR USER 'EQSP'
declare
m_path varchar2(200);
v_sql varchar2(50);
client_ip varchar2(20);
v_pkid number(10);
BEGIN
IF userenv('sessionid')!=0 THEN
select SYS_CONTEXT('USERENV','IP_ADDRESS') into client_ip from dual;
if client_ip = '10.10.3.99' then
begin
insert into session_history
select session_history_id.nextval pkid, username,sid,AUDSID,OSUSER,ACTION,SYSDATE,null,SYS_CONTEXT('USERENV','IP_ADDRESS'),TERMINAL,PROGRAM,null
from v$session s
where audsid = userenv( 'sessionid' )
and s.USERNAME NOT IN ('SYSTEM','SYS')
AND S.USERNAME IS NOT NULL;
select session_history_id.currval into v_pkid from dual;
select rtrim(c.value, '/') || '/' || d.instance_name || '_ora_' ||ltrim(to_char(a.spid)) || '.trc' into m_path
from sys.v_$process a, sys.v_$session b, sys.v_$parameter c, sys.v_$instance d
where a.addr = b.paddr
and b.audsid = sys_context('userenv', 'sessionid')
and c.name = 'user_dump_dest';
update session_history
set path=m_path
where pkid=v_pkid;
commit;
EXECUTE IMMEDIATE 'Alter session set tracefile_identifier =''miniyal''';
EXECUTE IMMEDIATE 'alter session set timed_statistics=true';
EXECUTE IMMEDIATE 'alter session set sql_trace = true' ;
end;
else
null;
end if;
else
null;
end if;
END;
客户端 ip是通过pl/sql登录的 在指定路径下没找到trace文件 是不是触发器的session 和 pl/sql登录进去的session 不是同一个?