可以做一个触发器
用以下的方式可以监控登入登出的用戶:
创建一张记录登录TABLE,如下:
CREATE TABLE SYSTEM.LOGIN_LOG
(
SESSION_ID NUMBER(8,0) NOT NULL,
LOGIN_ON_TIME DATE,
LOGIN_OFF_TIME DATE,
USER_IN_DB VARCHAR2(50),
MACHINE VARCHAR2(50),
IP_ADDRESS VARCHAR2(20),
RUN_PROGRAM VARCHAR2(50)
)
PCTFREE 10
PCTUSED 40
MAXTRANS 255
TABLESPACE SYSTEM
STORAGE(INITIAL 64K MINEXTENTS 1 MAXEXTENTS 2147483645 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
NOCACHE
LOGGING
/
COMMENT ON TABLE SYSTEM.LOGIN_LOG IS '登录日志'
/
COMMENT ON COLUMN SYSTEM.LOGIN_LOG.SESSION_ID IS 'sessionid'
/
COMMENT ON COLUMN SYSTEM.LOGIN_LOG.LOGIN_ON_TIME IS '登录时间'
/
COMMENT ON COLUMN SYSTEM.LOGIN_LOG.LOGIN_OFF_TIME IS '登出时间'
/
COMMENT ON COLUMN SYSTEM.LOGIN_LOG.USER_IN_DB IS '登录的DB User'
/
COMMENT ON COLUMN SYSTEM.LOGIN_LOG.MACHINE IS '机器名'
/
COMMENT ON COLUMN SYSTEM.LOGIN_LOG.IP_ADDRESS IS 'IP地址'
/
COMMENT ON COLUMN SYSTEM.LOGIN_LOG.RUN_PROGRAM IS '接入程序'
/
再创建两个TRIGGER,如下:
--记录登录信息触发器
CREATE OR REPLACE TRIGGER SYS.LOGIN_ON_INFO
AFTER LOGON
ON DATABASE
BEGIN
INSERT INTO SYSTEM.LOGIN_LOG(session_id,login_on_time,login_off_time,user_in_db,machine,ip_address,run_program)
SELECT AUDSID,sysdate,null,sys.login_user,machine,SYS_CONTEXT('USERENV','IP_ADDRESS'),program
FROM v$session WHERE AUDSID=USERENV('SESSIONID');
END;
/
--记录登出信息触发器
CREATE OR REPLACE TRIGGER SYS.LOGIN_OFF_INFO
BEFORE LOGOFF
ON DATABASE
Begin
update system.login_log set login_off_time=sysdate where session_id=USERENV('SESSIONID');
exception when others then
null;
END;
OK,另外可以在下面的文件里设置对ORACLE的访问进行限制:
9i: $ORACLE_HOME/network/admin/sqlnet.ora
8i: $ORACLE_HOME/network/admin/protocol.ora
加入:
tcp.validate_checking=yes ---启动检查
tcp.invited_nodes=(IP1,IP2,….) ---允许访问
tcp.excluded_nodes=(IP1,IP2,…..)--- 拒绝访问
#################################################################
方法二:
用如下的方式可以審計執行drop動作的事件:
/**
* drop語句的審計日誌表
*/
create table drop_log
{
session_id int not null, -- sessionid
drop_time date, -- drop的時間
ip_address varchar2(20), -- ip地址
object_owner varchar2(30), -- 對象的擁有者
object_name varchar2(30), -- 對象名稱
object_type varchar2(20), -- 對象類型
drop_by_user varchar2(30) -- 執行drop語句的用戶
);
create or replace trigger drop_info
after drop on mfg0513user.schema -- 在mfg0513user用戶上創建審計drop的觸發器
begin
insert into drop_log
(session_id,
drop_time,
ip_address,
object_owner,
object_name,
object_type,
drop_by_user)
values(USERENV('SESSIONID'),
sysdate,
SYS_CONTEXT('USERENV','IP_ADDRESS'),
sys.dictionary_obj_owner,
sys.dictionary_obj_name,
sys.dictionary_obj_type,
sys.login_user);
end;
分享到:
相关推荐
要查看登录 Oracle 数据库的用户记录,可以创建一个临时日志表,并建立一个数据库表触发器来记录用户的登录行为。 创建临时日志表 首先,需要创建一个临时日志表来存储用户的登录记录。可以使用以下 SQL 语句来...
### Oracle中记录用户登录信息的触发器实例解析 #### 一、背景介绍 在Oracle数据库管理中,确保数据安全是一项至关重要的任务。其中,记录用户的登录信息(如登录时间、用户名和客户端IP地址等)可以帮助管理员更...
在Oracle中,安全审计是一项重要的功能,它能够帮助企业或组织跟踪并记录数据库的各种活动,包括登录、登出以及DDL(Data Definition Language)操作,以确保数据的安全和合规性。本篇文章将详细探讨Oracle中的登录...
本篇文章将深入探讨“Oracle学习记录之用户管理”这一主题,结合“Oracle命令全集.doc”文档,我们将详细解析Oracle用户管理的相关知识点。 首先,创建用户是Oracle数据库管理员(DBA)的首要任务。使用SQL命令`...
在本项目中,我们主要利用SpringMVC框架与Oracle数据库来构建一个用户管理系统,涵盖了用户登录功能以及对用户的创建、删除、修改和查询等基本操作。以下是对该项目中涉及的关键技术点的详细解释: 1. **SpringMVC...
4. 登录时间:精确到毫秒的Oracle时间戳,记录用户登录的具体时间。 5. 注销时间:同样精确到毫秒的Oracle时间戳,记录用户注销的时间。 6. 最后程序:用户在注销时执行的最后一个程序名称。 7. 最后活动:用户在...
OID作为一个中央身份存储库,存储用户信息,而Oracle Single Sign-On则处理验证和授权,实现跨系统的无缝登录体验。 **特性与支持架构(Features and Supported Architectures)** 此方案支持多种架构,包括但不...
这个触发器会在用户登录时自动记录用户名、登录时间和客户端IP地址。 3. **操作系统命令**:使用`netstat`和`pgrep`命令结合查看网络连接,如示例所示,可以找出与Oracle进程关联的IP地址和端口。例如,'5582/...
在本项目中,开发者利用Java来实现用户登录的前端界面及后端逻辑,同时通过Oracle数据库存储和管理用户信息。下面将详细阐述该项目中的关键知识点。 1. **Oracle数据库**: Oracle是世界上最流行的商业关系型数据库...
当用户登录后,会将用户信息存储在session中,以便在不同页面间保持登录状态。同时,也需要处理session过期和非法访问等问题。 5. **安全考虑**:在用户管理中,安全是非常重要的。例如,密码通常需要进行哈希处理...
3. 对比数据库返回的密码与用户输入的密码,验证登录信息是否正确。 4. 登录成功后,可能保存会话信息,以便后续操作无需反复登录。 此外,为了增强系统的安全性,还应考虑数据加密、防止SQL注入攻击、异常处理和...
1. **用户(User)**:在Oracle中,用户是数据库的访问者,拥有登录数据库的权限,并可以拥有一个或多个模式。 2. **模式(Schema)**:模式是一个命名空间,它包含了一个用户的对象,如表、视图、索引、存储过程等...
1、当前登录用户,所有表占用表空间情况,提供合计 和 明细查询,显示为M; 2、查看某个用户所有表各自占用表空间的大小,并显示各表数据的条数;——常用于清表前,确认选最多记录的先清; 3、全数据库查询所有表...
`,Oracle服务器进程首先接收这个请求,并在PGA(Program Global Area)中为当前会话分配必要的内存资源,用于存储相关信息(如登录信息等)。接下来,服务器进程将SQL语句转换为ASCII等效数字码,并通过哈希函数计算...
整个系统可能还包括登录验证机制,使用Java的认证与授权框架(JAAS)或自定义的用户认证模块,确保只有授权用户才能访问和操作学生信息。此外,为了提高用户体验,开发者可能还采用了事件驱动编程模型,使得用户操作...
- `grantconnect`: 授予用户登录数据库的权限。 - `grantresource`: 允许用户创建表、视图等数据库对象。 - `grantdba`: 提供数据库管理员级别的权限,包括对所有数据库对象的完全控制权。 通过这四条语句,我们...
系统会检查数据库中的Users表,验证登录信息的有效性。如果登录成功,用户将进入相应的主界面,即管理员主界面或读者主界面。系统还包括警告机制,确保用户确认退出操作。 2. **管理员主界面**:管理员具有权限执行...
在登录场景下,Servlet通过JDBC驱动与Oracle数据库建立连接,执行查询或更新操作,验证用户输入的登录信息。 5. **实现步骤**: - **创建数据库表**:首先,你需要在Oracle数据库中创建一个用户表,包含用户名和...