資料庫日誌文件恢復
『壹』 日誌文件已損壞,如何修復sqlSERVER2000資料庫文件
具體方法有3種。
方法一:
第一步:
backup
log
database_name
with
no_log
或者
backup
log
database_name
with
truncate_only
--
no_log和truncate_only是在這里是同義的,隨便執行哪一句都可以。
第二步:
1.收縮特定資料庫的所有數據和日誌文件,執行:
dbcc
shrinkdatabase
(database_name,[,target_percent])
--
database_name是要收縮的資料庫名稱;target_percent是資料庫收縮後的資料庫文件中所要的剩餘可用空間百分比。
2.收縮一次一個特定資料庫中的數據或日誌文件,執行
dbcc
shrinkfile(file_id,[,target_size])
--
file_id是要收縮的文件的標識
(id)
號,若要獲得文件
id,請使用
file_id
函數或在當前資料庫中搜索
sysfiles;target_size是用兆位元組表示的所要的文件大小(用整數表示)。如果沒有指定,dbcc
shrinkfile
將文件大小減少到默認文件大小。兩個dbcc都可以帶上參數notruncate或truncateonly,具體意思查看聯機幫助.
方法二:
第一步:
先備份整個資料庫以備不測
。
第二步:
備份結束後,在query
analyzer中執行如下的語句:
exec
sp_detach_db
yourdbname,true
--卸除這個db在mssql中的注冊信息
第三步:
到日誌的物理文件所在的目錄中去刪除該日誌文件或者將該日誌文件移出該目錄
第四步:
在query
analyzer中執行如下的語句:
exec
sp_attach_single_file_db
yourdbname,'
d:\mssql\data\yourdbname_data.mdf
'
--以單文件的方式注冊該db,如果成功則mssql將自動為這個db生成一個500k的日誌文件。
方法三:
1.
進入企業管理器,選中資料庫,比如demo
2.
所有任務->分離資料庫
3.
到資料庫文件的存放目錄,將muonline_log.ldf文件刪除,以防萬一,你可以拷出去
4.
企業管理器->附加資料庫,選muonline,這個時候你會看見日誌文件這項是一個叉,不要緊,繼續,此時資料庫就會提示你該資料庫無日誌是否創建一個新的,確定就是了。
5.
記得資料庫重新附加後用戶要重新設置一下。
如果以後,不想要它變大:
sql2000下使用:
在資料庫上點右鍵->屬性->選項->故障恢復-模型-選擇-簡單模型。
或用sql語句:
alter
database
資料庫名
set
recovery
simple
『貳』 丟失歸檔日誌文件後資料庫應當如何恢復[1]
本文主要介紹了如何從一個不能正常打開的資料庫(由於一個/多個資料庫文件與其他文件不一致)中提取數據的具體示例 詳細內容請大家參考下文
具體案例
一個磁碟損壞了並且丟失了一個資料庫文件 從一周前的熱備轉儲數據文件 可是丟失了幾個歸檔日誌文件 但是有問題的數據文件包含了最重要的表 採用什麼辦法才能挽救數據呢?
解決方法
每個資料庫管理員都知道這是有問題的 一定會丟失數據 因為某些事務丟失了 問題是會丟失多少數據?Oracle使用硬線路位置並且由於存在完整性約束問題 因此不允許正常打開數據 但是如果使用非常規的方法讓Oracle刪除其硬線路屬性 那麼應該能夠提取盡可能多的數據 而通常這會比損失全部數據要好很多
通常假如僅僅丟失了堆表的索引 或者某些能夠很容易重建的數據 那麼最好的方法應該是刪除表空間並重建這些對象然後重新輸入 但是如果丟失的數據文件包含了重要數據並且很難恢復 而且只有前一次的備份卻又丟失了某些歸檔日誌 那麼用戶可能希望能夠盡可能多的從有問題的表空間恢復數據並且刪除和重建表空間
具體步驟如下
對當前擁有的數據進行一個冷備;
轉儲丟失的資料庫文件備份並應用可以應用的日誌;
設置未文檔化的初始化參數 其允許你在當前狀態打開資料庫;
執行exp並提取全部可以從有問題的表空間提取的數據;
從先前的冷備轉儲資料庫;
使毀壞的數據文件offline;
執行exp並提取第 步沒有提取的額外數據;
在一次從冷備轉儲;
刪除有問題的表空間;
重建有問題的表空間;
使用第四步和第七步提取的數據重建數據;
使用案例描述 ORDTAB表空間的一個數據文件ordtab dbf毀壞 其包含很多
ORDERS表的分區 數據文件熱備於July July —至今的某些歸檔日誌丟失
第 步 備份資料庫
第 步的任務是冷備當前擁有的任何數據文件 在線重做日誌 和控制文件 如果丟失了一個/多個數據文件但是資料庫仍然是open的 那麼對每個剩餘的數據文件進行熱備並確保備份期間/之後的歸檔被安全保存
創建備份後 在關閉資料庫之前 備份一下控制文件
ALTER DATABASE BACKUP CONTROLFILE TO TRACE RESETLOGS;
然後打開備份的控制文件 刪除第一個#之上的所有行 並刪除 RECOVER DATABASE… 到文件結尾的全部
第 步 轉儲丟失的資料庫文件備份並應用日誌;
這一步應該轉儲備份 並應用日誌到直到無法在前向滾動 此時如果嘗試正常打開資料庫 將會得到ORA : must use RESETLOGS or NORESETLOGS option for database open錯誤
如果嘗試執行ALTER DATABASE OPEN RESETLOGS 將會得到ORA 錯誤 ORA : online backup of file %s needs more recovery to be consistent
lishixin/Article/program/SQL/201311/16189
『叄』 如何從資料庫的完整日誌模式還原誤刪除的數據
從資料庫的完整日誌模式還原誤刪除的數據的解決辦法
SQL Server中誤刪除數據的恢復本來不是件難事,從事務日誌恢復即可。但是,這個恢復需要有兩個前提條件:
1. 至少有一個誤刪除之前的資料庫完全備份。
2. 資料庫的恢復模式(Recovery mode)是「完整(Full)」。
針對這兩個前提條件,會有三種情況:
情況一、如果這兩個前提條件都存在,通過SQL語句只需三步就能恢復(參考文章),無需藉助第三方工具。
a) 備份當前資料庫的事務日誌:BACKUP LOG [資料庫名] TO disk= N'備份文件名' WITH NORECOVERY
b) 恢復一個誤刪除之前的完全備份:RESTORE DATABASE [資料庫名] FROM DISK = N'完全備份文件名' WITH NORECOVERY, REPLACE
c) 將資料庫恢復至誤刪除之前的時間點:RESTORE LOG [資料庫] FROM DISK = N'第一步的日誌備份文件名' WITH STOPAT = N'誤刪除之前的時間點' , RECOVERY
情況二、如果第1個前提條件不存在,第2個前提條件存在,需要藉助第三方工具。
情況三、如果第2個前提條件不存在,無法恢復。所以,一定要將資料庫恢復模式設置為「完整(Full)」。
我現在面臨的是第二種情況,需要找第三方工具。
開始找的是Log Explorer for SQL Server,不支持SQL Server 2008。
後來找的是SQL Log Rescue,也不支持SQL Server 2008。
接著找到的是SysTools SQL Recovery,支持SQL Server 2008,但需要購買,Demo版並沒有數據恢復功能。
最終在officerecovery.com上找到Recovery for SQL Server,雖然也是商業軟體,需要購買,但Demo版可以恢復數據,只要資料庫文件不超過24Gb。幸好朋友的資料庫文件不大,用它完成了誤刪除數據的恢復。
下面分享一下用Recovery for SQL Server進行恢復的操作步驟:
1. 運行Recovery for SQL Server
2. 點擊菜單中的 File > Recover,選擇要恢復的資料庫的數據文件(.mdf)
3. Next > Next,進入 Recovery Configuration 界面,選擇Custom(選擇了Custom才可以選擇從日誌中恢復誤刪除的數據)。
4. Next 進入 Recovery options 窗口,選中 Search for deleted records,並選擇要恢復的資料庫的日誌文件路徑(log file path)。
5. Next 並選擇目標文件夾(Destination folder),用於存放恢復過程中生成的SQL語句與bat文件。
6. 點擊Start,開始恢復操作(在上一步選擇的目標文件夾中生成相應的SQL文件與Bat文件),然後,出現 SQL Server Database Creation Utility 窗口。
7. Next,選擇被恢復數據存放的目標資料庫。
8. Next, 選擇 Import availiable data from both database and log files
9. Next, Next, 然後就完成數據的恢復!
小剛SEO為你解答
『肆』 用日誌文件恢復事務的過程
日誌文件恢復事務前提條件:備份必須按照其創建順序進行恢復。 在恢復特定的事務日誌備份之前,必須先還原下列以前備份,而不回滾未提交的事務,即 WITH NORECOVERY。日誌文件恢復事務步驟:1、連接到相應的 Microsoft SQL Server 資料庫引擎實例之後,在對象資源管理器中,單擊伺服器名稱以展開伺服器樹;2、展開「資料庫」,然後根據資料庫的不同,選擇用戶資料庫,或展開「系統資料庫」,再選擇系統資料庫;3、右鍵單擊該資料庫,指向「任務」,再指向「還原」,然後單擊「事務日誌」,這將打開「還原事務日誌」對話框;4、在「常規」頁上的「資料庫」列表框中,選擇資料庫名稱。 僅列出處於還原狀態的資料庫;5、若要指定要還原的備份集的源和位置,請單擊以下選項之一:①從資料庫以前的備份從下拉列表中選擇要還原的資料庫。 此列表僅包含已根據 msdb 備份歷史記錄進行備份的資料庫;②從文件或磁帶單擊瀏覽 (...) 按鈕以打開「選擇備份設備」對話框。 在「備份介質類型」框中,從列出的設備類型中選擇一種。 若要為「備份介質」框選擇一個或多個設備,請單擊「添加」。將所需設備添加到「備份介質」列表框後,單擊「確定」返回到「常規」頁;6、在「選擇要還原的事務日誌備份」網格中,選擇要還原的備份。 此網格列出了選定資料庫可以使用的事務日誌備份。只有在日誌備份的「第一個 LSN」大於資料庫的「最後一個 LSN」時,此日誌備份才可用。日誌備份按照它們所包含的日誌序列號 (LSN) 的順序排列,並且也必須按照這種順序還原;7、選擇下列項之一:①時間點保留默認值(「最近狀態」);或者通過單擊「瀏覽」按鈕,打開「時點還原」對話框,從中選擇特定的日期和時間;②標記的事務將資料庫還原為以前標記的事務。 選擇此選項會啟動「選擇標記的事務」對話框,從而顯示一個網格,列出選定事務日誌備份中可以使用的標記的事務;默認情況下,將一直還原到(但不包含)標記的事務為止。 若要同時還原標記的事務,請選擇「包含標記的事務」。8、對於「恢復狀態」選項,請指定還原操作之後的資料庫狀態即可。『伍』 急求!sql2005資料庫數據覆蓋,如何 使用日誌恢復資料庫
要
使用日誌恢復資料庫
是幾個條件,
首先,資料庫是完整恢復模式
其次,以前做過完整備份
再次,在做過完整備份後,沒有清過日誌
滿足條件後,可以如下操作,
1、備份一個當前的資料庫日誌,
2、用完備恢復,with
norecovery
3、依次恢復以前備份的日誌文件(不包含本次備份的)
with
norecovery
4、使用本次備份的日誌文件,使用stop
at
,恢復到覆蓋前的時間點。