DM8 日誌挖掘
1. 適用場景
相信許多DBA同學都碰到過這樣的情況,由於各種原因需要對資料庫進行不完全的恢復,但又不確定應該恢復到哪個時間點或者SCN。在DM中,使用者可以使用DBMS_LOGMNR包對歸檔日誌進行挖掘,重構出DDL和DML等操作,並通過獲取的資訊進行更深入的分析;同樣,可以對歸檔日誌檔案進行恢復被誤操作的資料,並進行故障跟蹤,定位執行誤操作的使用者資訊。目前DBMS_LOGMNR只支援歸檔日誌進行分析,配置歸檔後,還需要將dm.ini中的RLOG_APPEND_LOGIC選項配置為1或2。
本文實驗環境的 DM 資料庫版本為:DM Database Server 64 V8-1-2-2-21.05.07-138925-10006-ENT Pack4
2. 配置源資料庫
1) 檢查是否開啟了歸檔和追加日誌
select para_name, para_value from v$dm_ini where para_name in ('ARCH_INI', 'RLOG_APPEND_LOGIC'); |
PARA_NAME PARA_VALUE
----------------- ----------
RLOG_APPEND_LOGIC 0
ARCH_INI 0
2) 修改dm.ini引數
設定RLOG_APPEND_LOGIC=1
注:RLOG_APPEND_LOGIC 需要設定為 1 或 2,1 代表如果有主鍵列,記錄 UPDATE 和 DELETE 操作時只包含主鍵列資訊,若沒有主鍵列則包含所有列資訊;2 代表不論是否有主鍵列,記錄 UPDATE 和 DELETE 操作時都包含所有列的資訊。
alter system set 'RLOG_APPEND_LOGIC'=1 both; |
3) 配置歸檔
alter database mount; alter database add archivelog 'dest=/dmarch,type=local,file_size=256,space_limit=1024'; alter database archivelog; alter database open; |
4) 驗證結果
select para_name, para_value from v$dm_ini where para_name in ('ARCH_INI', 'RLOG_APPEND_LOGIC'); |
PARA_NAME PARA_VALUE
----------------- ----------
RLOG_APPEND_LOGIC 1
ARCH_INI 1
3. 源資料庫模擬資料操作
1) 建立表空間、使用者、表
create tablespace tbs_logmnr datafile 'tbs_logmnr.dbf' size 64; create user logmnr identified by "dameng123" default tablespace tbs_logmnr; grant dba, resource, vti to logmnr; create table logmnr.users as select * from dba_users; update logmnr.users set user_id=100 where user_id<=50331700; commit; truncate table logmnr.users; |
2) 歸檔日誌切換
alter system switch logfile; alter system archive log current; alter database archivelog current; |
3) 檢視歸檔
select sequence# seq , name , to_char(first_time, 'yyyy-mm-dd hh24:mi:ss') first_time, to_char(next_time, 'yyyy-mm-dd hh24:mi:ss') next_time , first_change# , next_change# from v$archived_log; |
SEQ NAME FIRST_TIME NEXT_TIME FIRST_CHANGE# NEXT_CHANGE#
----------- ------------------------------------------------------------ ------------------- ------------------- -------------------- --------------------
1 /dmarch/ARCHIVE_LOCAL1_0x4C89FA28[0]_2021-05-13_17-31-20.log 2021-05-13 21:11:31 2021-05-13 21:11:31 27728 32461
2 /dmarch/ARCHIVE_LOCAL1_0x4C89FA28[0]_2021-05-13_21-11-33.log 2021-05-13 21:11:31 2021-05-13 21:30:29 32462 32963
3 /dmarch/ARCHIVE_LOCAL1_0x4C89FA28[0]_2021-05-13_21-30-31.log 2021-05-13 21:30:29 2021-05-13 21:42:57 32964 33432
4 /dmarch/ARCHIVE_LOCAL1_0x4C89FA28[0]_2021-05-14_10-06-25.log 2021-05-13 21:42:57 2021-05-14 10:53:13 33433 33715
5 /dmarch/ARCHIVE_LOCAL1_0x4C89FA28[0]_2021-05-14_12-01-31.log 2021-05-14 10:53:13 2021-05-14 12:23:40 33716 34196
6 /dmarch/ARCHIVE_LOCAL1_0x4C89FA28[0]_2021-05-14_12-30-49.log 2021-05-14 12:23:40 2021-05-14 12:30:49 34197 34203
4. 開始日誌挖掘
1) 查詢魔數
select db_magic from v$rlog; |
DB_MAGIC
--------------------
1581226857
2) 下載源端歸檔日誌到本地,修改歸檔日誌魔數(依次修改2個歸檔日誌魔數)
./dmmdf TYPE=2 FILE=/dmarch_logmnr/ARCHIVE_LOCAL1_0x4C89FA28[0]_2021-05-14_12-01-31.log ./dmmdf TYPE=2 FILE=/dmarch_logmnr/ARCHIVE_LOCAL1_0x4C89FA28[0]_2021-05-14_12-30-49.log |
3) 新增一個或多個需要分析的歸檔日誌檔案
DBMS_LOGMNR.ADD_LOGFILE('/dmarch_logmnr/ARCHIVE_LOCAL1_0x4C89FA28[0]_2021-05-14_12-01-31.log'); DBMS_LOGMNR.ADD_LOGFILE('/dmarch_logmnr/ARCHIVE_LOCAL1_0x4C89FA28[0]_2021-05-14_12-30-49.log'); |
注:對於不在資料庫預設歸檔路徑下的歸檔日誌,可以直接指定歸檔日誌的絕對路徑新增進分析列表。
4) 查詢通過 ADD_LOGFILE 新增的歸檔日誌檔案
SELECT LOW_SCN , NEXT_SCN , LOW_TIME , HIGH_TIME, LOG_ID , FILENAME FROM V$LOGMNR_LOGS; |
LOW_SCN NEXT_SCN LOW_TIME HIGH_TIME LOG_ID
-------------------- -------------------- -------------------------- -------------------------- -----------
FILENAME
-------------------------------------------------------------------
33716 34196 2021-05-14 10:53:13.510294 2021-05-14 12:23:40.627000 0
/dmarch_logmnr/ARCHIVE_LOCAL1_0x4C89FA28[0]_2021-05-14_12-01-31.log
34197 34361 2021-05-14 12:23:40.627000 2021-05-14 12:30:50.432000 1
/dmarch_logmnr/ARCHIVE_LOCAL1_0x4C89FA28[0]_2021-05-14_12-30-49.log
5) 啟動歸檔日誌檔案分析
DBMS_LOGMNR.START_LOGMNR(OPTIONS=>2128, STARTTIME=>TO_DATE('2021-05-14 11:30:00', 'YYYY-MM-DD HH24:MI:SS'), ENDTIME=>TO_DATE('2021-05-14 12:30:00', 'YYYY-MM-DD HH24:MI:SS')); |
注:可以指定日誌檔案分析的時間段或SCN範圍,同樣可以指定Options的功能組合,如下:
Options :提供如下的可選模式,各模式可以通過+或者按位或來進行組合。其它位的值如1、4、8等目前不支援,配置後不會報錯,但是沒有效果。
Options |
對應值 |
說明 |
COMMITTED_DATA_ONLY |
2 |
僅從已交的事務的日誌中挖掘資訊 |
DICT_FROM_ONLINE_CATALOG |
16 |
使用線上字典 |
NO_SQL_DELIMITER |
64 |
拼寫的 SQL 語句最後不新增分隔符 |
NO_ROWID_IN_STMT |
2048 |
拼寫的 SQL 語句中不包含 ROWID |
6) 檢視歸檔日誌檔案的分析結果
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_CONTENTS where table_name = 'xxx'; |
注:可以根據需要指定追蹤資訊,如表名、使用者名稱、時間段等,在資料庫中執行的操作會被解析為單行元組的SQL操作,即在資料庫中執行一條update XX set name=xx where id<100;則在日誌分析結果中會解析為一條條單行元組的SQL操作,如:update XX set name=xx where id=1;update table_name set name=xx where id=2;等所有id小於100的SQL操作。
OPERATION 欄位代表操作型別,主要包括start、insert、update、delete、commit、rollback等語句。
OPERATION_CODE 代表操作型別程式碼,1表示插入操作,2表示刪除操作,3表示更新操作,6表示事務起始語句,7表示提交操作,9表示批量更新,36表示回滾操作。
7) 終止歸檔日誌檔案分析
DBMS_LOGMNR.END_LOGMNR(); |
進行日誌挖掘過程中,在V$LOGMNR_LOGS、V$LOGMNR_CONTENTS等資料庫動態效能檢視上會產生分析資料,資料儲存在TEMP臨時表空間上,會話斷開或終止歸檔日誌檔案分析後,資料會被清除。
5. 注意
做日誌挖掘時候,始終用同一個會話視窗執行sql,這樣才會成功。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31516603/viewspace-2772310/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Logminer日誌挖掘
- DM8高階日誌
- 歸檔日誌挖掘
- 004 Nginx日誌挖掘accessLogNginx
- 【REDO】Oracle 日誌挖掘,分析歸檔日誌線上日誌主要步驟Oracle
- DM7和DM8的日誌量比較,DM8關閉單表的邏輯附加日誌
- logminer異機挖掘歸檔日誌
- 瀚高資料庫日誌挖掘方法資料庫
- 利用oracle的日誌挖掘實現回滾Oracle
- 基於事件日誌的流程挖掘簡介 - Chaudhuri事件
- 達夢資料庫DM8之REDOLOG重做日誌檔案管理資料庫
- 達夢資料庫DM8之刪除歸檔日誌檔案資料庫
- (上)挖掘傳統行業日誌大資料的無限價值行業大資料
- 日誌分析-apache日誌分析Apache
- 使用 Oracle logminer 挖掘日誌恢復誤刪資料以及查詢操作者Oracle
- 達夢資料庫使用DBMS_LOGMNR進行日誌挖掘詳細步驟資料庫
- [日誌分析篇]-利用ELK分析jumpserver日誌-日誌拆分篇Server
- 日誌
- 【Spring】日誌列印sql,日誌配置列印sqlSpringSQL
- [Java/日誌] 日誌框架列印應用程式日誌程式碼的執行情況Java框架
- CMS日誌
- 日誌配置
- mybatis日誌MyBatis
- Weblogic日誌Web
- ros 日誌ROS
- Log日誌
- 日誌列印
- Loggiing日誌
- Mysql日誌MySql
- 日誌01
- 日誌管理
- ELK日誌
- [技術分享]日誌切割(按天切割日誌)
- 日誌篇:模組日誌總體介紹
- 【MySQL日誌】MySQL日誌檔案初級管理MySql
- 日誌11月4日
- 日誌11月18日
- 日誌11月24日