您的位置:首页 > 数据库 > Oracle

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

2018-02-16 19:36 471 查看
[b]问题情况描述:[/b]客户提出业务不能响应,用户名原密码登录报错,怀疑密码被人为修改
环境接受:操作系统: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  "加长显示操作"
且根据上步骤中的监听日志,按主机名过滤条件,在实例二的监听日志里查找对应的登录记录,进一步查询问题原因
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐