gregor Asked:2021-11-30 18:44:30 +0000 UTC2021-11-30 18:44:30 +0000 UTC 2021-11-30 18:44:30 +0000 UTC . 用户密码输入错误时,如何查明是因为谁被屏蔽的? 772 最近,该用户经常被屏蔽。我怀疑这是由于输入了错误的登录名和密码,但我不知道如何找出发生这种情况的计算机。 是否可以获得任何相关信息,例如导致用户被阻止的 IP 或用户名? PS Oracle 数据库 10g 版本 10.2.0.3.0 - 生产 sql 2 个回答 Voted Best Answer 0xdb 2021-12-02T01:26:36Z2021-12-02T01:26:36Z 如果未配置审计,那么一个简单的解决方案是为数据库错误创建系统触发器: create table failedlogons ( dt date, dbuser varchar2 (32), osuser varchar2 (32), host varchar2 (64), ip varchar2 (24), memo varchar2 (256)) / create or replace trigger failedlogonstrig after servererror on database begin if ora_is_servererror (1017) then insert into failedLogons values ( sysdate, sys_context ('USERENV', 'AUTHENTICATED_IDENTITY'), sys_context ('USERENV', 'OS_USER'), sys_context ('USERENV', 'HOST'), sys_context ('USERENV', 'IP_ADDRESS'), 'failed logon'); end if; end; / 每次尝试使用不正确的密码进行连接都会被记录。当需要记录此事件消失时,您可以简单地删除触发器和表。 $ sqlplus -l me/xxx@dbsrv/pdb1 ERROR: ORA-01017: invalid username/password; logon denied $ sqlplus -l sys/Pass@dbsrv/pdb1 SQL> select * from failedlogons; DT DBUSER OSUSER HOST IP MEMO --------- ------ ------ ---------------- ---------------- ---------------- 01-DEC-20 ME me LOCAL\MYNAME 192.168.1.111 failed logon SQL> drop table failedLogons purge; SQL> drop trigger failedLogonsTrig; gregor 2021-11-30T21:44:47Z2021-11-30T21:44:47Z 我的行动: 设置参数audit_trail: alter system set audit_trail='DB' scope=spfile;` 重新启动 Oracle 服务 完全的: audit create session whenever not successful; 然后有一个请求: select * from dba_audit_trail where returncode in (1017, 28000) order by timestamp desc; 我获得了有关被阻止用户的所有必要信息。
如果未配置审计,那么一个简单的解决方案是为数据库错误创建系统触发器:
每次尝试使用不正确的密码进行连接都会被记录。当需要记录此事件消失时,您可以简单地删除触发器和表。
我的行动:
设置参数
audit_trail:重新启动 Oracle 服务
完全的:
然后有一个请求:
我获得了有关被阻止用户的所有必要信息。