segunda-feira, 2 de setembro de 2013

Trigger de Log monitoramento do sistema

-- Create table
create table USER_LOGIN_AUDIT
(
  LOGIN_TIME DATE,
  USERNAME   VARCHAR2(30),
  MACHINE    VARCHAR2(30),
  COMMAND    VARCHAR2(128),
  PROGRAM    VARCHAR2(200),
  ACTION     VARCHAR2(200)
)
tablespace USR
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );

CREATE OR REPLACE TRIGGER user_login_trig
  AFTER LOGON ON maxicon.SCHEMA
DECLARE
v_username sys.v_$session.username%TYPE;
v_machine  sys.v_$session.machine%TYPE;
v_command  sys.v_$session.command%TYPE;
v_program  sys.v_$session.PROGRAM%type;
v_action   sys.v_$session.action%type;
BEGIN
SELECT username, machine, command,program,action
 INTO v_username, v_machine, v_command,v_program,v_action
 FROM gv$session
WHERE audsid = USERENV('SESSIONID')
  AND audsid != 0  -- Don't Check SYS Connections
  AND ROWNUM = 1;  -- Parallel processes will have the same AUDSID's

INSERT INTO user_login_audit
  VALUES (SYSDATE, v_username, v_machine, v_command,v_program,v_action);

IF UPPER(v_machine) LIKE '%PC1%' THEN          -- Start SQL trace for users from PC1
  DBMS_SESSION.set_sql_trace(TRUE);
END IF;
END;

Nenhum comentário:

Postar um comentário