備份與恢復系列 六 日誌挖掘(Log Miner)找到誤刪除表的SCN
Log Miner是一個工具。可以用來觀察和分析redo log的內容。
當Oracle資料塊內容發生改變時,重做資訊(redo)被寫入當前的聯機重做日誌中。重做檔案包括更改時間、物件識別符號、更改的SCN號,在資料塊中發生的操作和其他的重要資訊,而且包括undo段中恢復塊的更改。
雖然log miner可以偶爾用來進行日誌檔案分析,但不能建議當做普通工具來經常使用,特別是在一個重做日誌非常龐大的資料庫中挖掘。使用log miner分析龐大的重做資訊,是一個體力活。
什麼時候會用到log miner?
如果資料表中的資料被莫名其妙的改變了,使用log miner可以調查那個改變的細節,也可以使用log miner來撤銷這些更改。
可以使用log miner來檢查一個或者多個表中SQL改變發生的次數,從而檢查表上的工作量。
通過進一步的檢查,log miner可以指出一個錯誤的drop table或者一個ddl語句發生的準確時間和SCN。
注意事項:
資料庫在mount或者nomount狀態下都可以使用log miner
雖然log miner不解釋重做日誌的DDL語句,如果drop table這樣的DDL刪除表語句,但是任然會在資料字典中建立DML。這些字典DML語句可以被用來檢查對資料庫發得DDL命令。
log miner不會重構無日誌的SQL操作,但是會把資料字典上的DML操作結果記錄在日誌檔案中。
如果分析其它資料庫的日誌資訊(相對應當前主機),必須保持使用相同的硬體平臺和作業系統,而且字符集也要相同
log miner可以檢視到未提交的事務,因為redo中包含提交的事務也包含未提交的資料。這點和oracle goldengate中的trail檔案有區別。trail檔案中只儲存已經提交的事務。所以這也是data guard和goldengate複製同步的一個區別。
下面開始進入操作環節:
1,建立一個資料字典檔案
日誌檔案資訊量很大,為了可讀性我們採用此步驟。
1.1為Oracle可使用的PL/SQL檔案I/O定義目錄。
conn / as sysdba
SYS@PRACTICE >alter system set utl_file_dir='/home/oracle' scope=spfile;
靜態引數需要重啟instance才生效
SYS@PRACTICE >startup force
SYS@PRACTICE >set linesize 200
SYS@PRACTICE >show parameter utl_file_dir
NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
utl_file_dir string /home/oracle
1.2建立一個資料字典
EXECUTE dbms_logmnr_d.build( -
dictionary_filename => 'dictionary.ora', -
dictionary_location => '/home/oracle');
[oracle@practice3 ~]$ ls -l /home/oracle
total 37416
drwxr-xr-x 2 oracle oinstall 4096 Aug 16 09:52 Desktop
-rw-r--r-- 1 oracle oinstall 38262331 Aug 16 10:37 dictionary.ora
2,刪除表scott.bonus
mkdir /archive
[root@practice3 /]# chown oracle:oinstall /archive
alter system set log_archive_dest_1="location=/archive”;
alter system switch logfile;
SYS@PRACTICE >alter user scott identified by tiger account unlock;
SYS@PRACTICE >conn scott/tiger
SCOTT@PRACTICE >drop table bonus;
SCOTT@PRACTICE >conn / as sysdba
SYS@PRACTICE >select sequence# from v$log where status='CURRENT';
SEQUENCE#
----------
6
切換日誌之後,剛才的update以及drop操作都會記錄在6號歸檔日誌檔案中
SYS@PRACTICE >alter system switch logfile;
ls -l /archive
total 908
-rw-r----- 1 oracle oinstall 925184 Aug 16 12:49 1_6_855750293.arc
3,為分析制定日誌檔案
EXECUTE dbms_logmnr.add_logfile( -
logfilename => '/archive/1_6_855750293.arc', -
options => dbms_logmnr.ADDFILE);
SYS@PRACTICE >col filename for a100
SYS@PRACTICE >set linesize 200
SYS@PRACTICE >select DB_NAME,THREAD_SQN,FILENAME from v$logmnr_logs;
DB_NAME THREAD_SQN FILENAME
------------------------ ---------- -----------------------------------------
PRACTICE 6 /archive/1_6_855750293.arc
4,啟動log miner,注意要保持在同一個session中。
EXECUTE dbms_logmnr.start_logmnr( -
dictfilename => '/home/oracle/dictionary.ora');
將記憶體中的資料儲存在永久表中,然後用load來檢視資訊比較方便
SYS@PRACTICE >create table logmnr_contents as select * from v$logmnr_contents;
關閉log miner
execute dbms_logmnr.end_logmnr;
從截圖中可以清楚的看到drop table bonus的這條命令發生的時間
當Oracle資料塊內容發生改變時,重做資訊(redo)被寫入當前的聯機重做日誌中。重做檔案包括更改時間、物件識別符號、更改的SCN號,在資料塊中發生的操作和其他的重要資訊,而且包括undo段中恢復塊的更改。
雖然log miner可以偶爾用來進行日誌檔案分析,但不能建議當做普通工具來經常使用,特別是在一個重做日誌非常龐大的資料庫中挖掘。使用log miner分析龐大的重做資訊,是一個體力活。
什麼時候會用到log miner?
如果資料表中的資料被莫名其妙的改變了,使用log miner可以調查那個改變的細節,也可以使用log miner來撤銷這些更改。
可以使用log miner來檢查一個或者多個表中SQL改變發生的次數,從而檢查表上的工作量。
通過進一步的檢查,log miner可以指出一個錯誤的drop table或者一個ddl語句發生的準確時間和SCN。
注意事項:
資料庫在mount或者nomount狀態下都可以使用log miner
雖然log miner不解釋重做日誌的DDL語句,如果drop table這樣的DDL刪除表語句,但是任然會在資料字典中建立DML。這些字典DML語句可以被用來檢查對資料庫發得DDL命令。
log miner不會重構無日誌的SQL操作,但是會把資料字典上的DML操作結果記錄在日誌檔案中。
如果分析其它資料庫的日誌資訊(相對應當前主機),必須保持使用相同的硬體平臺和作業系統,而且字符集也要相同
log miner可以檢視到未提交的事務,因為redo中包含提交的事務也包含未提交的資料。這點和oracle goldengate中的trail檔案有區別。trail檔案中只儲存已經提交的事務。所以這也是data guard和goldengate複製同步的一個區別。
下面開始進入操作環節:
1,建立一個資料字典檔案
日誌檔案資訊量很大,為了可讀性我們採用此步驟。
1.1為Oracle可使用的PL/SQL檔案I/O定義目錄。
conn / as sysdba
SYS@PRACTICE >alter system set utl_file_dir='/home/oracle' scope=spfile;
靜態引數需要重啟instance才生效
SYS@PRACTICE >startup force
SYS@PRACTICE >set linesize 200
SYS@PRACTICE >show parameter utl_file_dir
NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
utl_file_dir string /home/oracle
1.2建立一個資料字典
EXECUTE dbms_logmnr_d.build( -
dictionary_filename => 'dictionary.ora', -
dictionary_location => '/home/oracle');
[oracle@practice3 ~]$ ls -l /home/oracle
total 37416
drwxr-xr-x 2 oracle oinstall 4096 Aug 16 09:52 Desktop
-rw-r--r-- 1 oracle oinstall 38262331 Aug 16 10:37 dictionary.ora
2,刪除表scott.bonus
mkdir /archive
[root@practice3 /]# chown oracle:oinstall /archive
alter system set log_archive_dest_1="location=/archive”;
alter system switch logfile;
SYS@PRACTICE >alter user scott identified by tiger account unlock;
SYS@PRACTICE >conn scott/tiger
SCOTT@PRACTICE >drop table bonus;
SCOTT@PRACTICE >conn / as sysdba
SYS@PRACTICE >select sequence# from v$log where status='CURRENT';
SEQUENCE#
----------
6
切換日誌之後,剛才的update以及drop操作都會記錄在6號歸檔日誌檔案中
SYS@PRACTICE >alter system switch logfile;
ls -l /archive
total 908
-rw-r----- 1 oracle oinstall 925184 Aug 16 12:49 1_6_855750293.arc
3,為分析制定日誌檔案
EXECUTE dbms_logmnr.add_logfile( -
logfilename => '/archive/1_6_855750293.arc', -
options => dbms_logmnr.ADDFILE);
SYS@PRACTICE >col filename for a100
SYS@PRACTICE >set linesize 200
SYS@PRACTICE >select DB_NAME,THREAD_SQN,FILENAME from v$logmnr_logs;
DB_NAME THREAD_SQN FILENAME
------------------------ ---------- -----------------------------------------
PRACTICE 6 /archive/1_6_855750293.arc
4,啟動log miner,注意要保持在同一個session中。
EXECUTE dbms_logmnr.start_logmnr( -
dictfilename => '/home/oracle/dictionary.ora');
將記憶體中的資料儲存在永久表中,然後用load來檢視資訊比較方便
SYS@PRACTICE >create table logmnr_contents as select * from v$logmnr_contents;
關閉log miner
execute dbms_logmnr.end_logmnr;
從截圖中可以清楚的看到drop table bonus的這條命令發生的時間
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29047826/viewspace-1252363/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL 日誌管理、備份與恢復MySql
- mysql 誤刪除表內資料,透過binlog日誌恢復MySql
- 恢復誤刪除表黑科技之relay log大法(續)
- MySQL日誌管理,備份和恢復MySql
- 【北亞資料恢復】誤刪除oracle表和誤刪除oracle表資料的資料恢復方法資料恢復Oracle
- 使用 Oracle logminer 挖掘日誌恢復誤刪資料以及查詢操作者Oracle
- hbase 恢復 誤刪除
- find 命令刪除冗餘 Nginx 錯誤日誌並實現備份Nginx
- MySQL資料庫表誤刪除恢復(一)MySql資料庫
- RAC備份恢復之Voting備份與恢復
- 備份與恢復:polardb資料庫備份與恢復資料庫
- 手工rm刪除歸檔日誌對備份歸檔日誌的影響
- DB的備份與恢復
- GitLab的備份與恢復Gitlab
- Oracle使用備份檔案集恢復歸檔日誌Oracle
- MySQL備份與恢復——基於Xtrabackup物理備份恢復MySql
- [20210803]刪除user$的恢復準備.txt
- Jenkins備份與恢復Jenkins
- Postgresql 備份與恢復SQL
- MySQL 備份與恢復MySql
- Mysql備份與恢復(1)---物理備份MySql
- GitLab的自動備份、清理備份與恢復Gitlab
- MySQL備份與恢復——基於MyDumper/MyLoader 邏輯備份恢復MySql
- innobackupex 部分表備份和恢復
- Oracle 備份 與 恢復 概述Oracle
- MySQL 非常規恢復與物理備份恢復MySql
- Mysql備份與恢復(2)---邏輯備份MySql
- MySQL備份與恢復——基於OUTFILE /LOAD DATA 邏輯備份恢復MySql
- oracle關閉狀態刪除活動日誌報錯恢復(一)Oracle
- Mysql的幾種備份與恢復MySql
- Elasticsearch叢集的備份與恢復Elasticsearch
- Linux 系統的備份與恢復Linux
- 【NetApp資料恢復案例】針對NetApp誤刪除資料的恢復APP資料恢復
- sql2008刪除log檔案和清空日誌的方法SQL
- log4j2定期刪除日誌檔案的配置
- 誤刪除資料了怎麼辦?小編交易誤刪除資料的恢復方法
- 14、MySQL Case-線上表誤刪除恢復MySql
- 備份與恢復oracle_homeOracle
- 《入門MySQL—備份與恢復》MySql