Oracle 数据库查看client的用户登录信息包括ip

简介:

 通过创建触发器对用户登录进行日志记录,对登录用户进行相关审计,记录登录用户,主机,系统用户及IP地址:

1. 在sys模式下创建一个表,用于记录客户端登录数据库服务器的详细信息。  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  create  table  login_history  
  (  
    username   varchar2(60),   --用户名   
    machine    varchar2(60),   --机器名   
    login_time  date ,           --登录时间   
    ip         varchar2(50)    --ip地址   
  );
  或者
  SQL>  create  table  LOGON_TABLE  as 
       select  sysdate logon_time,
            sys_context( 'USERENV' , 'SESSION_USER' ) username, 
            sys_context( 'USERENV' , 'HOST' ) host, 
            sys_context( 'USERENV' , 'OS_USER' ) os_user, 
            sys_context( 'USERENV' , 'IP_ADDRESS' ) ip_address
       from  dual
     /
 
Table  created.

2. 在sys模式下创建一个触发器。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
create  or  replace  trigger  login_log  
    after  logon  on  database  
  begin  
    insert  into  login_history  
      select  username, machine, sysdate, sys_context( 'userenv' 'ip_address' )  
        from  v$session  
       where  audsid = userenv( 'sessionid' );  
    commit ;  
  end ;  
  或者
  SQL>  create  or  replace  trigger  tri_logon  after  logon  on  database
      begin
          insert  into  LOGON_TABLE
                    ( logon_time,
                      username,
                      host,
                      os_user,
                      ip_address
                    )
              values 
                   ( sysdate,
                     sys_context( 'USERENV' 'SESSION_USER' ),
                     sys_context( 'USERENV' , 'HOST' ),
                     sys_context( 'USERENV' , 'OS_USER' ),
                     sys_context( 'USERENV' , 'IP_ADDRESS' ));
     end ;
     /
 
Trigger  created.

3. 一些查看session数的实例(以sys用户登录)

1
2
3
4
5
6
7
8
9
10
11
   --查看login_history表
   select  from  login_history;
   
   --查看当前的所有session数
   select  count (*)  from  v$session;
   
   --查看当前的客户端计算机名为RHEL的所有session数
   select  count (*)  from  v$session  where  machine =  'RHEL' ;
   
   --查看当前的各个客户端计算机的连接数
   select  count (*) , machine  from  v$session  group  by  machine;

4. 查看当前会话的ip

1
  select  sys_context( 'userenv' , 'ip_address' from  dual;
















本文转自lq201151CTO博客,原文链接:http://blog.51cto.com/liuqun/1984200 ,如需转载请自行联系原作者


相关文章
|
10天前
|
DataWorks Oracle 关系型数据库
DataWorks操作报错合集之尝试从Oracle数据库同步数据到TDSQL的PG版本,并遇到了与RAW字段相关的语法错误,该怎么处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
28 0
|
1天前
|
存储 Oracle 关系型数据库
oracle 数据库 迁移 mysql数据库
将 Oracle 数据库迁移到 MySQL 是一项复杂的任务,因为这两种数据库管理系统具有不同的架构、语法和功能。
11 0
|
17天前
|
存储 Oracle 网络协议
Oracle 11gR2学习之二(创建数据库及OEM管理篇)
Oracle 11gR2学习之二(创建数据库及OEM管理篇)
|
21天前
|
Oracle 网络协议 关系型数据库
异地使用PLSQL远程连接访问Oracle数据库【内网穿透】
异地使用PLSQL远程连接访问Oracle数据库【内网穿透】
|
21天前
|
SQL Oracle 安全
Oracle数据库中的事务和锁
【4月更文挑战第19天】Oracle数据库的事务和锁是确保数据完整性和并发控制的核心机制。事务遵循ACID原则,保证操作的原子性、一致性、隔离性和持久性。通过COMMIT或ROLLBACK来管理事务更改。锁包括共享锁(读)、排他锁(写)、行级锁和表级锁,用于控制并发访问。自动锁机制在DML操作时生效,防止数据冲突。事务和锁共同维护数据库的稳定和安全。
|
SQL Oracle 关系型数据库
ORACLE如何清除OEM下的历史警告信息
ORACLE10G如何清除OEM下的历史警告信息   问题描述:OEM的HOME页面可以显示ORACLE的报警信息,但报警事件清除后该信息不会自动清除。
957 0
|
29天前
|
Oracle 安全 关系型数据库
【Oracle】玩转Oracle数据库(六):模式对象管理与安全管理
【Oracle】玩转Oracle数据库(六):模式对象管理与安全管理
26 10
|
29天前
|
SQL Oracle 关系型数据库
【Oracle】玩转Oracle数据库(五):PL/SQL编程
【Oracle】玩转Oracle数据库(五):PL/SQL编程
59 8
|
29天前
|
SQL Oracle 关系型数据库
【Oracle】玩转Oracle数据库(七):RMAN恢复管理器
【Oracle】玩转Oracle数据库(七):RMAN恢复管理器
45 5
|
21天前
|
存储 Oracle 关系型数据库
Oracle RAC:数据库集群的舞动乐章
【4月更文挑战第19天】Oracle RAC是Oracle提供的高可用性数据库解决方案,允许多个实例共享同一数据库,确保业务连续性和数据完整性。通过集群件和全局缓存服务实现服务器间的协调和通信。RAC提供高可用性,通过故障转移应对故障,同时提升性能,多个实例并行处理请求。作为数据管理员,理解RAC的架构和管理至关重要,以发挥其在数据管理中的最大价值。