RE: Determining the program name from an after logon trigger

  • From: "Mercadante, Thomas F (LABOR)" <Thomas.Mercadante@xxxxxxxxxxxxxxxxx>
  • To: <peter.schauss@xxxxxxx>, <oracle-l@xxxxxxxxxxxxx>
  • Date: Thu, 26 Mar 2009 15:55:12 -0400

Peter,

You can add the following to your login trigger to get the program name:

  CURSOR c1 IS
    SELECT UPPER(program) program, username,
           osuser, terminal,
           sys_context('USERENV','IP_ADDRESS') ip_addr
      FROM V$SESSION
      WHERE AUDSID = USERENV('SESSIONID');

c1_rec c1%ROWTYPE;

BEGIN

   OPEN c1;
   FETCH c1 INTO c1_rec;
   CLOSE c1;
END;

Tom

-----Original Message-----
From: oracle-l-bounce@xxxxxxxxxxxxx
[mailto:oracle-l-bounce@xxxxxxxxxxxxx] On Behalf Of Schauss, R. Peter
(IT Solutions)
Sent: Thursday, March 26, 2009 3:05 PM
To: oracle-l@xxxxxxxxxxxxx
Subject: Determining the program name from an after logon trigger

I need to force a 10046 trace for a program which runs scheduled reports
against our data warehouse database.  The only way that I know how to do
this is to create an after logon trigger on the username under which
this program connects.  I have done this successfully before to look at
performance bottlenecks for the ETL loads.  The code for the trigger is:

------------------------------------------------------------
CREATE OR REPLACE TRIGGER <username>.trace_user after logon on
siebel.schema
begin
         if user = '<username>' then
                execute immediate 'alter session set
timed_statistics=true';
                execute immediate 'alter session set
max_dump_file_size=unlimited';
                execute immediate 'alter session set events ''10046
trace name context forever, level 8''';
         end if;
end;

--------------------------------------------------------------------

My problem in this case is that the report program uses the same
username as the ETL and I do not want to create and I do not want to
create traces for those processes.  The sys_context('USERENV',...)
function can return a good bit of information about the current process
but, as far as I can tell, not the name of the calling program.  Is
there any easy way to do this?  (This is Oracle 8.1.7.4 running on
Solaris/SunOS 5.9).

Thanks,
Peter Schauss
--
//www.freelists.org/webpage/oracle-l




--
//www.freelists.org/webpage/oracle-l


Other related posts: