當前位置:
首頁 > 最新 > DM7上的日誌挖掘

DM7上的日誌挖掘

一、適用場景

相信許多DBA同學都碰到過這樣的情況,由於各種原因需要對資料庫進行不完全的恢復,但又不確定應該恢復到哪個時間點或者SCN。在DM7中,用戶可以使用DBMS_LOGMNR包對歸檔日誌進行挖掘,重構出DDL和DML等操作,並通過獲取的信息進行更深入的分析;同樣,可以對歸檔日誌文件進行恢復被誤操作的數據,並進行故障跟蹤,定位執行誤操作的用戶信息。目前DBMS_LOGMNR只支持歸檔日誌進行分析,配置歸檔後,還需要將dm.ini中的RLOG_APPEND_LOGIC選項配置為1或2。

註:需要在產生歸檔日誌的資料庫上進行分析,利用備份文件還原的測試庫上無法進行日誌挖掘,因為當資料庫經過備份還原並恢復後,DB_MAGIC就會發生改變,在還原庫上進行日誌分析時會報「[DBMS_LOGMNR.START_LOGMNR] 歸檔日誌MAGIC錯誤」錯誤。


二、環境檢查

註:本文實驗環境的DM7資料庫版本為:

DM Database Server x64 V7.1.6.33-Build(2017.12.11-87269)ENT


如未創建,可以執行如下命令:

SP_CREATE_SYSTEM_PACKAGES(1);


select para_name,para_value from v$dm_ini where para_namein ("ARCH_INI","RLOG_APPEND_LOGIC");

註:RLOG_APPEND_LOGIC需要設置為1或2,1代表如果有主鍵列,記錄UPDATE和DELETE操作時只包含主鍵列信息,若沒有主鍵列則包含所有列信息;2代表不論是否有主鍵列,記錄UPDATE和DELETE操作時都包含所有列的信息。

如果未開啟歸檔和追加日誌,可以參照如下進行設置:

-1-修改dm.ini中的參數

ARCH_INI =1

RLOG_APPEND_LOGIC=1

註:靜態參數,需要重啟資料庫後生效

-2-dmarch.ini 配置本地歸檔

[ARCHIVE_LOCAL1]

ARCH_TYPE=LOCAL

ARCH_DEST =d:dm7dataarch

ARCH_FILE_SIZE =128

ARCH_SPACE_LIMIT =0

註:歸檔文件配置完畢後,需要重啟資料庫後生效


三、開始日誌挖掘

3.1、添加歸檔日誌文件

SELECT NAME ,FIRST_TIME , NEXT_TIME , FIRST_CHANGE# , NEXT_CHANGE# FROMV$ARCHIVED_LOG;

DBMS_LOGMNR.ADD_LOGFILE("/dmdb/xxx/xxx/xxx/ARCHIVE_LOCAL1_20171214120114980.log");

註:對於不在資料庫默認歸檔路徑下的歸檔日誌,可以直接指定歸檔日誌的絕對路徑添 加進分析列表。


可以查詢V$LOGMNR_LOGS動態視圖進行插入,如下:

SELECT LOW_SCN,NEXT_SCN, LOW_TIME, HIGH_TIME, LOG_ID, FILENAME FROMV$LOGMNR_LOGS;


DBMS_LOGMNR.START_LOGMNR(OPTIONS=>2128, STARTTIME=>TO_DATE("2018‐1‐2412:01:12","YYYY‐MM‐DD HH24:MI:SS") , ENDTIME=>TO_DATE("2018‐01‐2404:20:03","YYYY‐MM‐DDHH24:MI:SS"));

註:可以指定日誌文件分析的時間段或SCN範圍,同樣可以指定Options的功能組合,如 下:

Options:提供如下的可選模式,各模式可以通過 + 或者按位或來進行組合。其它位的值如1、4、8等目前不支持,配置後不會報錯,但是沒有效果。


如要查看歸檔日誌文件的分析結果,可以通過動態視圖V$LOGMNR_CONTENTS進行 查詢,如下:

select TIMESTAMP ,START_TIMESTAMP ,COMMIT_TIMESTAMP ,OPERATION ,OPERATION_CODE ,ROLL_BACK ,TABLE_NAME ,ROW_ID ,USERNAME ,DATA_OBJ# , DATA_OBJV# , SQL_REDO, REDO_VALUE, UNDO_VALUE

from V$LOGMNR_CONTENTSwheretable_name= "XXX";

註:可以根據需要指定追蹤信息,如表名、用戶名、時間段等,在資料庫中執行的操作會 被解析為單行元組的SQL操作,即在資料庫中執行一條updateXXsetname=xxwhere id

name=xxwhereid=1;updatetable_namesetname=xxwhereid=2;等所有id小於100的SQL操作。

OPERATION欄位代表操作類型,主要包括start、insert、update、delete、commit、 rollback等語句

OPERATION_CODE代表操作類型代碼,1表示插入操作, 2表示刪除操作,3表示更新操 作,6表示事務起始語句,7表示提交操作,9表示批量更新,36表示回滾操作。


DBMS_LOGMNR.END_LOGMNR();

註:進行日誌挖掘過程中,在V$LOGMNR_LOGS、V$LOGMNR_CONTENTS等資料庫動態性能視圖上會產生分析數據,數據存儲在TEMP臨時表空間上,會話斷開或終止歸檔日誌文件分析後,數據會被清除。

看到這裡,相信大家對DBMS_LOGMNR的基本用法有了一定的了解,如果大家想對日誌挖掘進行進一步的學習,可以查看《DM7系統包使用手冊》的第七章 DBMS_LOGMNR包。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 武漢達夢資料庫 的精彩文章:

TAG:武漢達夢資料庫 |