Log Explorer使用說明恢復被誤刪除的數據

一、介紹

Log Explorer主要用於對MSSQLServer的事物分析和數據恢復。你可以瀏覽日誌、導出數據、恢復被修改或者刪除的數據(包括執行過update,delete,drop和truncate語句的表格)。一旦由於系統故障或者人爲因素導致數據丟失,它能夠提供在線快速的數據恢復,最大程度上保證恢復期間的其他事物不間斷執行。

他可以支持SQLServer7.0和SQLServer2000,提取標準數據庫的日誌文件或者備份文件中的信息。

 

其中提供兩個強大的工具:日誌分析瀏覽,對象恢復。具體功能如下:

  • 日誌文件瀏覽
  • 數據庫變更審查
  • 計劃和授權變更審查
  • 將日誌記錄導出到文件或者數據庫表
  • 實時監控數據庫事物
  • 計算並統計負荷
  • 通過有選擇性的取消或者重做事物來恢復數據
  • 恢復被截斷或者刪除表中的數據
  • 運行SQL腳本


二、安裝

LogExplore包含兩部分:

  • 客戶端軟件
  • 服務器代理

 bubuko.com,布布扣

 

服務器端代理是保存在SQLServer主機中的一個只讀存儲過程,他的作用是接受客戶端請求,讀取在線事物日誌塊並通過網絡傳給客戶端軟件,由客戶端軟件來讀取這些原始的數據塊來完成Log Explore所提供的所有功能。

他依賴來的網絡協議包括:

  • Named Pipe:局域網中適用
  • Tcp/Ip:廣域網中適用

 

此軟件是C/S模式,在MSSQL服務器上安裝服務端,客戶端可以安裝在需要的地方。

 

三、使用說明

3.1連接數據庫

雙擊Log Explore,出現的軟件界面

 bubuko.com,布布扣

 

點擊左上框的Attach Log File,進入連接數據庫界面

bubuko.com,布布扣 

注意:

 

 

選擇你需要查看的數據庫名,以及選擇是使用在線的日誌還是使用備份的文件進行分析。

 bubuko.com,布布扣

成功連接到數據庫後,會出現一個警告,按確定。

 bubuko.com,布布扣

3.2功能說明

 bubuko.com,布布扣

 

Log Summary:

日誌文件的概要信息。

 

Load Analysis:

列出指定時間範圍內的一些事物,用戶和表載入的概要信息。

 

Filter Log Record:

日誌過濾設置。支持過濾條件包括:時間、操作類型、表、用戶、SPID、搜索深度、Dropped表項以及登錄設置和應用程序設置

 

Browse:

日誌瀏覽,核心模塊。

 

  • View Log功能:
    列表如圖,可以用TransID來區分事物並用不同顏色標識。工具欄的按鈕是一些基本查詢操作。鼠標右鍵彈出菜單中有Undo Transaction和UndoOperation可以恢復黑色箭頭選中的事物或者操作項。
  • Real-Time Monitor:
    實時監控事物日誌,通過輪詢來實現。可以暫停或者停止監控,可以更改輪詢週期。
  • 相關DML語言和DDL語言可以在Row Revision History、Row Transaction History以及View DDL Commands來查詢。

Export Log Records:

  • Export to SQL

從日誌上導出數據並且恢復到SQL數據庫的表裏

  • Export to Files

   從日誌上導出數據,保存爲xml、html或者字符分割文件

 

Recovery: Undo User Transactions :

允許撤銷一系列選中的事務,例如:撤銷由於用戶或者應用錯誤導致數據的刪除或者修改。

 

Recovery: Redo User Transactions:

允許你重做一系列你選中的事務。

 

Salvage Dropped/Truncated Data:

允許你恢復部分或者所有的數據,對於一個被刪除或者truncate的表

 

Restore Table from Backup:

使用備份來恢復表數據

 

Run SQL Script:

允許你執行保存在腳本文件裏的SQL命令。

 

Exit:

退出Log Explorer

 

四、數據恢復例子

4.1數據誤刪

如圖,模擬數據被誤刪的情況,測試環境是把test數據庫裏test表裏的2行數據進行刪除。

 

 bubuko.com,布布扣

4.2事務查找

通過Log Explorer,查找數據刪除操作的事務日誌。如圖:我們在View Log上看到剛纔對於test表的2個DELETE_ROWS的操作,也就是說name列中數據爲4和5的2行數據已經被刪除。

 bubuko.com,布布扣

4.3數據恢復

右鍵點擊要進行恢復操作的事務操作,選擇Undo Transaction

 bubuko.com,布布扣

然後會出現一個回滾文件的保存框,此文本內容爲要進行恢復的SQL語句。

 bubuko.com,布布扣

把Recovery1.sql文件的內容拷貝到查詢分析器裏執行,完成恢復的操作

 bubuko.com,布布扣

五、數據庫相關介紹

5.1事物日誌(Transaction Log

 

SQLServer的每個數據庫都包含事物日誌,它以文件的形式存儲,可以記錄數據庫的任何變化。發生故障時SQLServer就是通過它來保證數據的完整性。

 

5.2操作(Operation

操作是數據庫中定義的"原子行爲",每個操作都在日誌文件中保存爲一條記錄。它可以是用戶直接輸入的SQL語句,比如標準的insert命令,日誌文件中便會記錄一條操作代碼來標誌這個insert操作。

 

5.3事物(Transaction

事物是一系列操作組成的序列。他可以理解爲直觀的不可分割的一筆業務,可以執行成功或者失敗。典型的事物比如由應用程序發出的具有開啓-提交功能的一組SQL語句。不同的事物靠事物Id號(transaction ID)來區分,具有相同ID的事物記錄的日誌也相同。

 

5.4在線事物日誌(Online Transaction Log

在線事物日誌是指當前活動數據庫所用的日誌。可以通過如下命令來確定其對應文件:

Select * from SYSFILES

他的文件後綴名一般是.LDF

 

5.5離線事物日誌(Offline Transaction Log

離線事物日誌是指非活動數據庫所用的日誌。當其數據庫處於關閉(ShutDown)才狀態下可以進行復製備份操作。他的結果同在線事物日誌完全相同。

 

5.6備份文件

備份文件是保存食物日誌備份的文件,通常管理員通過運行SQL語句或者企業管理器來生成該文件。備份文件的內部結構和事物日誌不同,他採用稱爲MTF的格式來保存數據。一個備份文件可以包含一個日誌的多組備份,甚至包括多個數據庫的混合備份.

 

5.7設置爲自動收縮

企業管理器--服務器--右鍵數據庫--屬性--選項--選擇"自動收縮"

強烈要求該項不要選中.否則SQLServer將以循環的方式來覆蓋先前的日誌記錄,將會導致LogExplore無法恢復錯誤.

 

 

5.8數據恢復介紹

LogExplore允許你恢復應爲誤操作或者程序錯誤而導致的數據丟失或者更改.比如執行update\Delete語句時丟失了where子句,或者錯誤使用了Dts功能.

LogExplore不支持直接修改數據庫.他可以生成事物的逆操作腳本.

如果log是delete table where ...的話,生成的文件代碼就是insert table ....

你可以通過SQL查詢分析器,或者LogExplore的Run SQL Script功能來執行生成腳本.

 

5.9關於Undo

Undo功能可以逆操作一組指定的用戶事物。包括insert,delete和update,其侷限性如下:

  • 事物類別:LogExplore只能undo用戶事物。用戶事物是指在用戶表上定義的事物,不支持系統表的更新恢復。同時,他也不支持計劃變更的回滾。
  • Blob類型:包括text,ntext,image類型。LogExplore只支持這些類型的insert和delete恢復,不支持update語句恢復。

 

5.10關於redo

Redo功能可以再次運行一組指定事物。它可以在以下情況中用到:

丟失數據庫而且沒有任何備份文件。

  • 如果原始日誌文件沒有丟失可以通過Redo來實現恢復。
  • 通過完整備份文件來把數據庫恢復到某指定時間點,再通過redo功能完整恢復。它可以重放Create Table和Create Index命令,來重新生成被刪掉的表,同時也受blob字段的限制。

 

5.11 SQL逆操作

1、Insert--Delete

2、Delete--Insert

3、Update

 

Column1 

Column2 

B

事物1

Column1 

Column2 

X

B

事物2

Column1 

Column2 

Z

T

你可以只對事物1做逆操作

Column1 

Column2 

T

   

注意:如果你選中了‘Do not restore column values that have been changed by subsequent modifications‘項,只對事物1逆轉將不會產生任何結果。

5.12拯救Dropped/Truncate命令導致的數據丟失

執行Drop Table和Truncate Table命令雖然會被SQLServer記錄到日誌文件中,但是並不記錄被刪除的數據。你可以使用LogExplore提供的功能來恢復這些數據。LogExplore提供兩種機制來恢復被Drop或者Truncate的數據。

1、如果你有備份文件可以直接通過備份文件恢復。

2、通過LogExplore提供的方法來恢復。

當執行如上命令時,SQLServer會將保存數據的頁面放入空閒頁面列表中。如果此頁沒有被再次使用則將一直保存原始數據。恢復時,LogExplore將從空閒頁面列表中搜尋沒有被再次使用的頁面,然後生成一個SQL腳本來從這些頁面重組原始數據。LogExplore可以確定被刪掉的原始數據行,並在完成時顯示原始行數和實際恢復的行數,由此可以斷定是否全部恢復

Log Explorer使用說明,布布扣,bubuko.com

Log Explorer使用說明

發佈了23 篇原創文章 · 獲贊 14 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章