背景
某系统,供应商运维的,直接在生产修改存储过程内容,没有备份,出问题后需要回滚。找不到原来的存储过程代码。跑来求救。时间过去了好几个小时,无法通过flashback闪回了。只能通过Logminer日志挖掘的方式来恢复原来的内容。
Logminer 基本使用步骤
19C,在CDB下面执行。在pdb下面执行会报错。
注意:以下整个操作只能在同一个会话里面执行!!否则查询V$LOGMNR_CONTENTS会看不到结果。
为了方便其他人查看,所以在第四步中,将需要的查询结果保存到了一个临时表中。
<1>. Specify a LogMiner dictionary. 指定Logminer字典
exec dbms_logmnr_d.build(options=>dbms_logmnr_d.store_in_redo_logs);
<2>. Specify a list of redo log files for analysis. 指定需要挖掘的redo或者archivelog日志文件
–添加一个用new,会覆盖掉之前的文件
exec dbms_logmnr.add_logfile(logfilename=>'+FRA/newuums/archivelog/2019_12_12/thread_2_seq_99153.8812.1026829075',options=>dbms_logmnr.new);
–添加多个使用addfile,一般推荐使用这个
exec dbms_logmnr.add_logfile(logfilename=>'+FRA/newuums/archivelog/2019_12_12/thread_2_seq_99153.8812.1026829075',options=>DBMS_LOGMNR.ADDFILE);
根据误操作时间查询出对应的归档日志【强烈推荐,直接使用该方式即可】
SELECT distinct 'exec dbms_logmnr.add_logfile(logfilename=>''' || name ||''',options=>dbms_logmnr.addfile);' sql,
FIRST_TIME,
completion_time
FROM gV$ARCHIVED_LOG
WHERE completion_time between
to_date('2020-05-28 12:00:00','yyyy-mm-dd hh24:mi:ss') and to_date('2020-05-28 12:30:00','yyyy-mm-dd hh24:mi:ss')
and dest_id = 1
order by 1;
直接在sqlplus中执行上面的结果即可。
–查看添加的日志列表:
select filename from V$LOGMNR_LOGS;
<3>. Start LogMiner. 开始日志挖掘
EXECUTE DBMS_LOGMNR.START_LOGMNR(OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);
<4>. Request the redo data of interest. 查询V$LOGMNR_CONTENTS获取挖掘的结果
这个视图经常使用的字段:operation\seg_owner\seg_name\table_name\sql_redo
存储过程对应的系统表名叫:SOURCE$
select t.timestamp,t.seg_owner,t.seg_name,t.table_name,t.sql_redo,t.os_username,t.machine_name,t.session_info from v$logmnr_contents;
Select SQL_UNDO from v$logmnr_contents where SQL_REDO like '%存储过程名称%';
Select * from v$logmnr_contents where operation='DDL';
create table t_hqh_logminer01 as Select * from v$logmnr_contents where SQL_REDO like '%存储过程名称%';
create table t_hqh_logminer02 as Select * from v$logmnr_contents where table_name='SOURCE$';
找到需要的SQL_UNDO内容,找开发确认无误后,恢复存储过程。
<5>. End the LogMiner session. 结束日志挖掘
EXECUTE DBMS_LOGMNR.END_LOGMNR;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




