WEB开发网
开发学院数据库Oracle Oracle9i新特性之数据库监控系列详解 阅读

Oracle9i新特性之数据库监控系列详解

 2007-05-12 12:25:07 来源:WEB开发网   
核心提示: 最后创建触发器,记载登录信息,Oracle9i新特性之数据库监控系列详解(4),CREATE OR REPLACE TRIGGER TR_LOGIN_RECORDAFTER logon ON DATABASEDECLAREmtSession v$session%ROWTYPE;CURSOR

最后创建触发器,记载登录信息。  CREATE OR REPLACE TRIGGER TR_LOGIN_RECORD
  AFTER logon ON DATABASE
  DECLARE
  mtSession v$session%ROWTYPE;
  CURSOR cSession(iiQuerySid IN NUMBER) IS
  SELECT * FROM v$session
  WHERE audsid = iiQuerySid;
  BEGIN
  OPEN cSession(userenv('SESSIONID'));
  FETCH cSession INTO mtSession;
  IF cSession%FOUND THEN
  INSERT INTO log$information(id,username,logintime,terminal,ipadress,osuser,machine,
  program,sid,serial#,ausid)
  VALUES(sq_login.nextval,USER,SYSDATE,mtSession.Terminal,
  SYS_CONTEXT ('USERENV','IP_ADDRESS'),mtSession.Osuser,
  mtSession.Machine,mtSession.Program,mtSession.
  Sid,mtSession.Serial#,userenv('SESSIONID'));
  ELSE
  sp_write_log('session信息错误:'||SQLERRM);
  raise_application_error(-20099,'登录异常错误',FALSE);
  END IF;
  CLOSE cSession;
  EXCEPTION
  WHEN OTHERS THEN
  sp_write_log('登记登录信息错误:'||SQLERRM);
  RAISE;
  END;

说明:这个触发器监控所有登录用户,并把其信息存入到以上表中。根据表中记载的信息,可以获得所有登录信息,用于审计用户的登陆是否许可。

5、监控所有DDL的触发器

当然,在此之前我们需要建立一张表,用来记录所有的DDL操作的信息。  create table DDL$TRACE
  (
  LOGIN_USER  VARCHAR2(30),
  AUDSID    NUMBER,
  IPADDRESS   VARCHAR2(20),
  SCHEMA_USER  VARCHAR2(30),
  SCHEMA_OBJECT VARCHAR2(30),
  DDL_TIME   DATE,
  DDL_SQL    VARCHAR2(4000)
  )

上一页  1 2 3 4 5  下一页

Tags:Oraclei 特性 数据库

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接