追溯oracle数据库内业务用户密码被修改异常操作

问题情况描述:

客户提出业务不能响应,用户名原密码登录报错,怀疑密码被人为修改

环境接受:

操作系统:AIX 5.3

数据库版本:9.2

数据库配置:RAC

数据文件格式:裸设备

处理过程:

因为数据库开启了归档,所有数据库的历史操作都可以通过挖掘归档日志进行追溯,挖掘工具为oracle自带的logminer。如果修改了用户名密码,会将其命令转化为对数据字典的dml操作。

1.使用sys用户查看数据库是否存在logminer的程序包

SQL>desc dbms_logmnr

⚠️如果不存在,则需要运行脚本安装:SQL>@$ORACLE_HOME/rdbms/admin/dbmslm.sql

2.根据客户提供的上次被修改的时间点,查看产生的归档日志文件有哪些:

>select inst_id,name,to_char(first_time,'yyyy-mm-dd hh24:mi:ss'),to_char(next_time,'yyyy-mm-dd hh24:mi:ss'),sequence# from gv$arhcived_log where first_time>=to_data('2018-2-2 00:00:00 yyyy-mm-dd hh24:mi:ss') and first_time<=to_data('2018-2-3 00:00:00 yyyy_mm_dd hh24:mi:ss') order by 3 desc;

省略查询结果。。。。。。

由于是双节点RAC,不确定在其中哪个节点进行,需要把两个节点的归档从带库restore出来查看:

run{

allocate channel t1 device type 'set_tape';

restore archivelog sequence# 对应时间发生时最近的一次归档 thread 1;

restore archivelog sequence# 对应时间发生时最近的一次归档 thread 2;

release channel t1;  

 }

3.利用logminer进行日志挖掘:

3.1首次加入归档日志:

execute dbms_logmnr.add_logfile(logfilename=>'步骤2 restore回来的归档日志路径',option=>dbms_logmnr.new);

3.2开始利用当前数据字典进行日志挖掘

dbms_logmnr.start_logmnr(option=>dbms_logmnr.dict_from_online_catalog);

4.挖掘语句执行结束后,日志信息被保存在v$logmnr_contents视图中,并对其他用户不可见。检查对user$ 进行修改的所有条目:

select * from v$logmnr_contents where seg_name='USER$';

在实例1中的归档日志中未发现此类操作,使用如下命令停止日志挖掘:

 execute dbms_logmnr.end_logmnr();

按上述步骤继续挖掘实例2的归档,发现异常操作

5.使用如下sql查看详细时间

SQL>select to_char(timestamp,'yyyy-mm-dd hh24:mi:ss') from v$logmnr_contents where seg_name='USER$';

查询结果与客户回忆的时间相吻合,

⚠️col session_info for 99  "加长显示操作"

且根据上步骤中的监听日志,按主机名过滤条件,在实例二的监听日志里查找对应的登录记录,进一步查询问题原因

猜你喜欢

转载自blog.csdn.net/fc_barceiona/article/details/79325485