Oracle 数据库查看client的用户登录信息包括ip
原创lq20112017-11-22 20:26评论(0)39人阅读
通过创建触发器对用户登录进行日志记录,对登录用户进行相关审计,记录登录用户,主机,系统用户及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;
|
转载于:https://blog.51cto.com/techmc/2043546