日期:2014-05-17  浏览次数:21161 次

数据库应配置日志功能,对用户登录进行记录
数据库应配置日志功能,对用户登录进行记录,记录内容包括用户登录使用的账号、登录是否成功、登录时间以及远程登录时用户使用的IP地址。

创建ORACLE登录触发器,记录相关信息,但对IP地址的记录会有困难
1.建表LOGON_TABLE
2.建触发器
CREATE TRIGGER TRI_LOGON
  AFTER LOGON ON DATABASE
BEGIN
  INSERT INTO LOGON_TABLE VALUES (SYS_CONTEXT('USERENV', 'SESSION_USER'),
SYSDATE);
END;


上述这个操作,请问如何创建表LOGON_TABLE
------解决方案--------------------
USERENV 
SESSION_USER
可能是oracle关键字。换其它标识符试试
------解决方案--------------------

C:\Users\lenovo>sqlplus test/test

SQL*Plus: Release 10.2.0.3.0 - Production on 星期四 11月 24 22:41:21 2011

Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.


连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production
With the Partitioning, OLAP and Data Mining options

[TEST@orcl] SQL>create table LOGON_TABLE(
  2   USERENV varchar2(100),
  3   SESSION_USER varchar2(100)
  4  );

表已创建。

[TEST@orcl] SQL>



引用:
create table LOGON_TABLE(
 USERENV varchar2(100),
 SESSION_USER varchar2(100)
);
提示没有足够的值!

------解决方案--------------------
引用:
我要是想在这个触发器里增加一个IP的值,应该怎样写啊?
CREATE TRIGGER TRI_LOGON
  AFTER LOGON ON DATABASE
BEGIN
  INSERT INTO LOGON_TABLE 
VALUES 
(SYS_CONTEXT('USERENV', 'SESSION_USER'),--当前会话用户
SYS_CONTEXT('USERENV', ‘IP_ADDRESS’));--ip地址
END;