問題背景:客戶反饋3表的數(shù)據(jù)被清空了,是一個(gè)開發(fā)庫,由于已經(jīng)不止一次備清空,影響到開發(fā)進(jìn)度,所以希望查出是一些信息給他們核查。

1. 確認(rèn)信息
首先確認(rèn)下信息,登錄上去查了下這3張表,LAST_DDL_TIME為客戶反饋的數(shù)據(jù)沒了的附近,CREATED的時(shí)間比較久遠(yuǎn),那么很明顯表是被人TRUNCATE過。

繼續(xù)確認(rèn),數(shù)據(jù)庫有開歸檔,有腳本定時(shí)清理,保留1小時(shí)
由于清空的時(shí)間比較精確,而且找到我的時(shí)候過去不久,歸檔還在,很快想到logmnr挖日志,而且只需要挖一個(gè)歸檔就可以找到。
2. 確認(rèn)歸檔
通過v$archived_log視圖,確認(rèn)覆蓋上面LAST_DDL_TIME的歸檔日志

并將歸檔復(fù)制到/home/oracle下,防止被刪。
3. 用logmnr工具挖日志
SQL> exec sys.dbms_logmnr.add_logfile(LogFileName=>'/home/oracle/o1_mf_1_1320590_k5l7nv05_.arc',options=>sys.dbms_logmnr.new);
PL/SQL procedure successfully completed.
SQL> execute sys.dbms_logmnr.start_logmnr(Options => sys.dbms_logmnr.DICT_FROM_ONLINE_CATALOG);
PL/SQL procedure successfully completed.
SQL> select count(*) from v$logmnr_contents;
COUNT(*)
----------
34644
開發(fā)庫操作少,挖的過程很快。
將數(shù)據(jù)保存下來,方便分析
create table system.t_logmnr as select * from v$logmnr_contents;
4. 查到需要的信息
這時(shí)候查就很容易了,提取關(guān)鍵字段信息截圖給客戶即可
select t.timestamp,
t.seg_owner,
t.seg_name,
t.os_username,
t.session_info,
t.sql_redo,
t.*
from system.t_logmnr t
where t.seg_name in ('BAS_HOT_TOPIC_CATE', 'GLB_ACCT_ENTRY', 'GLB_CTRL');

「喜歡這篇文章,您的關(guān)注和贊賞是給作者最好的鼓勵(lì)」
關(guān)注作者
【版權(quán)聲明】本文為墨天輪用戶原創(chuàng)內(nèi)容,轉(zhuǎn)載時(shí)必須標(biāo)注文章的來源(墨天輪),文章鏈接,文章作者等基本信息,否則作者和墨天輪有權(quán)追究責(zé)任。如果您發(fā)現(xiàn)墨天輪中有涉嫌抄襲或者侵權(quán)的內(nèi)容,歡迎發(fā)送郵件至:contact@modb.pro進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),墨天輪將立刻刪除相關(guān)內(nèi)容。




