第一篇:詳談數(shù)據(jù)庫的備份方案與策略
關(guān)于SQL SERVER數(shù)據(jù)庫 的維護(hù)和備份方案
/ 38
目錄
1、引言.............................................................................................................................................4
1.1、為什么要進(jìn)行數(shù)據(jù)備份..............................................................................................4
2、數(shù)據(jù)庫的備份和還原.................................................................................................................4
2.1、幾種常見的SQL Server數(shù)據(jù)庫備份...........................................................................4 2.2、數(shù)據(jù)庫的還原.................................................................................................................7 2.3、升級(jí)...............................................................................................................................11
3、SQL Server 維護(hù)計(jì)劃實(shí)現(xiàn)數(shù)據(jù)庫備份...........................................1錯(cuò)誤!未定義書簽。
3.1、場(chǎng)景設(shè)計(jì)....................................................................................1錯(cuò)誤!未定義書簽。3.2、實(shí)戰(zhàn)操作.......................................................................................................................14
4、SQL Server 維護(hù)計(jì)劃實(shí)現(xiàn)數(shù)據(jù)庫備份(策略實(shí)戰(zhàn)方案)................................................17 4.1、最佳實(shí)踐.......................................................................................................................26 4.2、注意事項(xiàng).......................................................................................................................31
5、SQL Server 數(shù)據(jù)庫最小宕機(jī)遷移方案................................................................................36 5.1、目的...............................................................................................................................36 5.2、分析與設(shè)計(jì)思路...........................................................................................................35 5.3、參考腳本2.3、升級(jí)....................................................................................................35
參考資料:http://gaizai.cnblogs.com/
SQL Server 2008編程入門經(jīng)典(第3版)
/ 38
引言
1.1為什么要進(jìn)行數(shù)據(jù)備份
在信息化高速發(fā)展的今天數(shù)據(jù)在人們的生活中扮演著越來越重要的角色,信息化滲透著教育、科研、醫(yī)療等等各個(gè)領(lǐng)域,所以為防止數(shù)據(jù)丟失的第一道防線是實(shí)行數(shù)據(jù)備份,備份就像鍛煉身體,雖然重要,但卻常常被忽視,數(shù)據(jù)備份觀念在一些企業(yè)中,甚至是在網(wǎng)絡(luò)管理員中仍然得不到足夠的重視。當(dāng)網(wǎng)站更新或添加內(nèi)容時(shí),如果實(shí)行了數(shù)據(jù)備份,那么即使出現(xiàn)操作失誤,把有用的資訊或者重要的內(nèi)容刪掉了,那么也不至于讓之前花了很長(zhǎng)時(shí)間辛辛苦苦建立起來的數(shù)據(jù)付之東流,只要及時(shí)地通過系統(tǒng)備份和恢復(fù)方案就可以實(shí)現(xiàn)數(shù)據(jù)的安全性和可靠性了;又或者是企業(yè)網(wǎng)站發(fā)生災(zāi)難,原始數(shù)據(jù)丟失或遭到破壞,利用備份數(shù)據(jù)就可以把原始數(shù)據(jù)恢復(fù)出來,使系統(tǒng)能夠繼續(xù)正常工作。可見,數(shù)據(jù)備份是何等的重要,數(shù)據(jù)備份是為了以后能夠順利地將被破壞了或丟失了的數(shù)據(jù)庫安全地恢復(fù)的基礎(chǔ)性工作,可以這么說,沒有數(shù)據(jù)庫的備份,就沒有數(shù)據(jù)庫的恢復(fù),企業(yè)應(yīng)當(dāng)把數(shù)據(jù)備份和恢復(fù)的工作列為一項(xiàng)不可忽視的系統(tǒng)工作,為其網(wǎng)站選擇相應(yīng)的備份設(shè)備和技術(shù),進(jìn)行經(jīng)濟(jì)可靠的數(shù)據(jù)備份,從而避免可能發(fā)生的重大損失。
2、SQL Server 備份和還原
2.1、幾種常見的SQL Server數(shù)據(jù)庫備份 2.1.1、完全備份
/ 38 備份全部選中的文件夾,并不依賴文件的存檔屬性來確定備份那些文件。(在備份過程中,任何現(xiàn)有的標(biāo)記都被清除,每個(gè)文件都被標(biāo)記為已備份,換言之,清除存檔屬性)。完全備份也叫完整備份。2.1.2、差異備份
差異備份是針對(duì)完全備份:備份上一次的完全備份后發(fā)生變化的所有文件。(差異備份過程中,只備份有標(biāo)記的那些選中的文件和文件夾。它不清除標(biāo)記,即:備份后不標(biāo)記為已備份文件,換言之,不清除存檔屬性)。2.1.3、增量備份
增量備份是針對(duì)于上一次備份(無論是哪種備份):備份上一次備份后,所有發(fā)生變化的文件。(增量備份過程中,只備份有標(biāo)記的選中的文件和文件夾,它清除標(biāo)記,即:備份后標(biāo)記文件,換言之,清除存檔屬性。)2.1.4、事務(wù)日志備份
在特定事務(wù)日志備份之前執(zhí)行的完整數(shù)據(jù)庫備份和上次差異備份(如果有)。在完整數(shù)據(jù)庫備份之后執(zhí)行的所有事務(wù)日志備份或在特定事務(wù)日志備份之前執(zhí)行的差異備份(如果您還原了差異備份)。如果你設(shè)置了恢復(fù)模式為【簡(jiǎn)單】,你將無法使用【事務(wù)日志】備份。SQL Server 2000 和 SQL Server 2005: 創(chuàng)建事務(wù)日志備份,您必須使用完整恢復(fù)或大容量日志記錄恢復(fù)模型。2.1.5部分備份
通過指定 READ_WRITE_FILEGROUPS 創(chuàng)建的備份稱為“部分備份”。在簡(jiǎn)單恢復(fù)模式下,只允許對(duì)只讀文件組執(zhí)行文件組備份。還原的數(shù)據(jù)備份類型: 4 / 38 數(shù)據(jù)庫備份、部分備份或文件備份。對(duì)于數(shù)據(jù)庫備份或部分備份,日志備份序列必須從數(shù)據(jù)庫備份或部分備份的結(jié)尾處開始延續(xù)。對(duì)于一組文件備份,日志備份序列必須從整組文件備份的開頭開始延續(xù)。2.1.6文件備份
“文件備份”包含一個(gè)或多個(gè)文件(或文件組)中的所有數(shù)據(jù)。2.1.7日志鏈
連續(xù)的日志備份序列稱為“日志鏈”。日志鏈從數(shù)據(jù)庫的完整備份開始。通常,僅當(dāng)?shù)谝淮蝹浞輸?shù)據(jù)庫時(shí),或者將恢復(fù)模式從簡(jiǎn)單恢復(fù)模式切換到完整恢復(fù)模式或大容量日志恢復(fù)模式之后,才會(huì)開始一個(gè)新的日志鏈。除非在創(chuàng)建完整數(shù)據(jù)庫備份時(shí)選擇覆蓋現(xiàn)有備份集,否則現(xiàn)有的日志鏈將保持不變。在該日志鏈保持不變的情況下,便可從媒體集中的任何完整數(shù)據(jù)庫備份還原數(shù)據(jù)庫,然后再還原相應(yīng)恢復(fù)點(diǎn)之前的所有后續(xù)日志備份?;謴?fù)點(diǎn)可以是上次日志備份的結(jié)尾,也可以是任何日志備份中的特定恢復(fù)點(diǎn)。2.1.8一個(gè)備份方案例子
某個(gè)站點(diǎn)在星期天晚上執(zhí)行完整數(shù)據(jù)庫備份。在白天每隔 4 小時(shí)制作一個(gè)事務(wù)日志備份集,并用當(dāng)天的備份重寫頭一天的備份。每晚則進(jìn)行差異備份。如果數(shù)據(jù)庫的某個(gè)數(shù)據(jù)磁盤在星期四上午 9:12 出現(xiàn)故障,則該站點(diǎn)可以:
1)備份當(dāng)前事務(wù)日志;(已經(jīng)出現(xiàn)故障了,如何備份當(dāng)前事務(wù)日志?)2)還原從星期天晚上開始的數(shù)據(jù)庫備份;
3)還原從星期三晚上開始的差異備份,將數(shù)據(jù)庫前滾到這一時(shí)刻;
/ 38 4)還原從早上 4 點(diǎn)到 8 點(diǎn)的事務(wù)日志備份,以將數(shù)據(jù)庫前滾到早上 8 點(diǎn);
5)還原故障之后的日志備份。這將使數(shù)據(jù)庫前滾到故障發(fā)生的那一刻。2.2、數(shù)據(jù)庫的還原
創(chuàng)建一個(gè)叫TestBackup的數(shù)據(jù)庫,創(chuàng)建一張叫Table1的表,這個(gè)時(shí)候進(jìn)行一次完整備份,備份文件為:TestBackupDB-full.bak;接著創(chuàng)建表Table2后進(jìn)行差異備份,備份文件為:TestBackupDB-diff.bak;接著創(chuàng)建表Table3后進(jìn)行事務(wù)日志備份(如果數(shù)據(jù)庫設(shè)置了恢復(fù)模式為【簡(jiǎn)單】,那么在備份類型選項(xiàng)中將看不到【事務(wù)日志】),備份文件為:TestBackupDB-log.bak;
創(chuàng)建一個(gè)叫TestBackup2的數(shù)據(jù)庫,用于測(cè)試TestBackup數(shù)據(jù)庫的備份文件的還原。
(圖1:創(chuàng)建庫結(jié)構(gòu))
/ 38
(圖2:備份類型)
下面我們就可以對(duì)三個(gè)備份文件:TestBackupDB-full.bak、TestBackupDB-diff.bak、TestBackupDB-log.bak進(jìn)行還原:
步驟1:還原完整備份文件TestBackupDB-full.bak,選項(xiàng)如圖
4、圖5所示,還原成功后數(shù)據(jù)列表就會(huì)如圖6所示,這是因?yàn)榛謴?fù)狀態(tài)選項(xiàng):不對(duì)數(shù)據(jù)庫執(zhí)行任何操作,不回滾未提交的事務(wù)。可以還原其他事務(wù)日志。(RESTORE WITH NORECOVERY)
(圖3:進(jìn)入SSMS還原)
/ 38
(圖4:還原常規(guī))
(圖5:還原選項(xiàng))
/ 38
(圖6:完整備份還原)
步驟2:還原差異備份文件TestBackupDB-diff.bak,操作如步驟1所示,這個(gè)時(shí)候的數(shù)據(jù)庫還是跟圖6的狀態(tài)一樣的。
步驟3:還原事務(wù)日志備份文件TestBackupDB-log.bak,如圖7進(jìn)入事務(wù)日志的還原操作界面;看圖8的選項(xiàng)中有指定事務(wù)的時(shí)間進(jìn)行還原(還原過程中的恢復(fù)狀態(tài)都是默認(rèn)為RESTORE WITH RECOVERY,所以這里沒有提及這個(gè)選項(xiàng))。還原后的TestBackup2數(shù)據(jù)庫,還原之后的數(shù)據(jù)庫TestBackup2如圖9所示。
(圖7:進(jìn)入事務(wù)日志)
/ 38
(圖8:事務(wù)日志)
(圖9:還原后的數(shù)據(jù)庫)
/ 38 2.3、升級(jí)
通常來說文章寫到這里就應(yīng)該結(jié)束了,但是很幸運(yùn),再給你介紹一下如何在對(duì)表進(jìn)行分區(qū)后的還原操作,從上面的操作來看只包括了mdf和ldf文件,但如果多了幾個(gè)ndf文件,這些還原又一樣嗎?所以我稱這部分的內(nèi)容為升級(jí)。
情景一:如果本來就有對(duì)應(yīng)的分區(qū)文件的,只要在還原的時(shí)候修改【還原為】的文件名就可以進(jìn)行還原了。
情景二:如果剛剛新建了分區(qū)文件組和文件,這個(gè)時(shí)候接著還原備份就會(huì)出現(xiàn)圖10的錯(cuò)誤(不知道是不是在SQL Server 2005的問題);要解決這個(gè)問題有兩個(gè)方法,第一個(gè):重啟數(shù)據(jù)庫服務(wù)再還原;第二個(gè):設(shè)置數(shù)據(jù)庫的【限制訪問】設(shè)置為【Single】;
(圖10:錯(cuò)誤)
/ 38
3、如何實(shí)現(xiàn)數(shù)據(jù)庫備份 3.1、場(chǎng)景設(shè)計(jì)
假設(shè)我們的數(shù)據(jù)庫不是很大,但是我們的數(shù)據(jù)會(huì)比較重要,大概一天一個(gè)備份就能滿足我們的業(yè)務(wù)需要,那我們應(yīng)該如何設(shè)計(jì)我們的備份方案呢?
星期天晚上02:00做一次數(shù)據(jù)庫的完全備份,其它時(shí)間星期一至星期六晚上02:00做一次差異備份,基本邏輯如下圖所示:
(圖:數(shù)據(jù)庫備份文件生成邏輯)
Tips:
/ 38 1.如果你的數(shù)據(jù)庫比較大,而且流數(shù)據(jù)(就是一些記錄性的流水?dāng)?shù)據(jù))比較多,我們的做法是把這些大表分離出一個(gè)新的數(shù)據(jù)庫(縱向切割數(shù)據(jù)庫),這樣接下來的問題,這篇文章就可以解決了;
2.如果無法把流數(shù)據(jù)分離出數(shù)據(jù)庫,那么可以考慮表分區(qū),分區(qū)之后再對(duì)其它表進(jìn)行數(shù)據(jù)備份(主分區(qū)備份);這些備份是無法使用差異備份了,每次都只能使用完全備份,而且還原的時(shí)候表分區(qū)是不可以用的,只能修改表名之后再創(chuàng)建新表。詳情參考:SQL Server 2008編程入門經(jīng)典(第3版)
3.如果一天一次的備份滿足不了業(yè)務(wù)上的需求,那么可以考慮發(fā)布訂閱方案,在兩臺(tái)機(jī)器上進(jìn)行事務(wù)復(fù)制,可以調(diào)整復(fù)制的頻率,加強(qiáng)數(shù)據(jù)的安全性。
3.2、實(shí)戰(zhàn)操作
1.數(shù)據(jù)庫-> 【管理】-> 【維護(hù)計(jì)劃】-> 【新建維護(hù)計(jì)劃】;
/ 38
(圖1)
2.勾選【備份數(shù)據(jù)庫(完整)】和【備份數(shù)據(jù)庫(差異)】;
/ 38
(圖2)
3.設(shè)置 完整備份 文件的路徑和備份文件的擴(kuò)展名;注意特定數(shù)據(jù)庫的選擇;
/ 38
(圖3)
4.填寫 完整備份 作業(yè)計(jì)劃的名稱,執(zhí)行間隔勾選星期日,設(shè)置執(zhí)行時(shí)間;
/ 38
(圖4)
5.設(shè)置 差異備份 文件的路徑和備份文件的擴(kuò)展名;注意特定數(shù)據(jù)庫的選擇;
/ 38
(圖5)
6.填寫 差異備份 作業(yè)計(jì)劃的名稱,執(zhí)行間隔勾選除星期日之外的日期,設(shè)置執(zhí)行時(shí)間;
/ 38
(圖6)
7.這就生成 完整備份 與 差異備份 的子計(jì)劃了,(圖7)
/ 38 8.在完整備份的設(shè)計(jì)界面中,從左邊拖拉一個(gè)【清除歷史記錄】的控件到右邊,并雙擊進(jìn)行下圖的設(shè)置;
(圖8)
9.從左邊拖拉一個(gè)【清除維護(hù)】的控件到右邊,并雙擊進(jìn)行下圖的設(shè)置,這里需要設(shè)置 完整備份 的路徑和文件的擴(kuò)展名;
/ 38
(圖9)
10.在步驟上加上箭頭形成 完全備份 作業(yè)的流程圖;
/ 38
(圖10)
11.在差異備份的設(shè)計(jì)界面中,從左邊拖拉一個(gè)【清除歷史記錄】的控件到右邊,并雙擊進(jìn)行下圖的設(shè)置;
(圖11)
/ 38 12.從左邊拖拉一個(gè)【清除維護(hù)】的控件到右邊,并雙擊進(jìn)行下圖的設(shè)置,這里需要設(shè)置 差異備份 的路徑和文件的擴(kuò)展名;
(圖12)
13.在步驟上加上箭頭形成 差異備份 作業(yè)的流程圖;
/ 38
(圖13)
14.在維護(hù)計(jì)劃下生成Ant_Backup,在代理中生成 完整備份與差異備份的作業(yè);
(圖14)
/ 38
4、SQL Server 維護(hù)計(jì)劃實(shí)現(xiàn)數(shù)據(jù)庫備份(策略實(shí)戰(zhàn)方案)
上面文章使用完整備份和差異備份基本上能解決數(shù)據(jù)庫備份的問題,但是為了保障數(shù)據(jù)更加安全,我們需要再次完善我們的備份計(jì)劃;
下面這篇文章主要加入了日志備份,并對(duì)設(shè)計(jì)備份的頻率和設(shè)計(jì)命名規(guī)范等問題進(jìn)行實(shí)戰(zhàn); 4.1、最佳實(shí)踐 4.1.1、備份計(jì)劃
1)每周星期日的2:00:00執(zhí)行數(shù)據(jù)庫的完整備份;
2)每周星期一至星期六每天的2:00:00執(zhí)行數(shù)據(jù)庫的差異備份; 3)每天在8:00:00和23:59:59之間、每1小時(shí)執(zhí)行數(shù)據(jù)庫的日志備份; 4)每個(gè)月的最后一個(gè)星期日的1:00:00執(zhí)行數(shù)據(jù)庫的完整備份; 4.1.2、計(jì)劃講解
1.根據(jù)備份文件的不同,我創(chuàng)建了4個(gè)文件用于存放備份文件:(Medusa是數(shù)據(jù)庫名)
1)Medusa_Full:用于存放完整備份文件; 2)Medusa_Diff:用于存放差異備份文件; 3)Medusa_Log:用于存放日志備份文件;
/ 38 4)Medusa_Save:用于存放保留備份文件;
上面的4個(gè)文件夾與備份計(jì)劃的4個(gè)步驟是一 一對(duì)應(yīng)的;
(Figure1:文件夾命名規(guī)范)
2.創(chuàng)建名為Medusa的維護(hù)計(jì)劃,并創(chuàng)建如下圖的4個(gè)子計(jì)劃:
(Figure2:子計(jì)劃列表)
3.設(shè)置【清除歷史記錄】、【清除維護(hù)】的保留時(shí)間:
1)Subplan_Full:保留完整備份文件4周;(1個(gè)*4周=4個(gè)文件)2)Subplan_Diff:保留差異備份文件2周;(6個(gè)*2周=12個(gè)文件)3)Subplan_Log:保留日志備份文件1周;(16個(gè)*7天=112個(gè)文件)4)Subplan_Save:保留備份文件1年;(1個(gè)*12月=12個(gè)文件)
上面的時(shí)間策略需要根據(jù)數(shù)據(jù)庫的安全級(jí)別、磁盤空間、業(yè)務(wù)特性等情況共同解決的,你可以根據(jù)的實(shí)際情況進(jìn)行修改和調(diào)整;
/ 38 4.下面的Figure3、Figure4、Figure5、Figure6是具體設(shè)置的效果圖:
(Figure3:子計(jì)劃Full)
(Figure4:子計(jì)劃Diff)
/ 38
(Figure5:子計(jì)劃Log)
(Figure6:子計(jì)劃Save)
5.保存維護(hù)計(jì)劃后,在SQL Server代理的作業(yè)中會(huì)生成Figure7的作業(yè)列表:
/ 38
(Figure7:Job列表)
6.執(zhí)行一段時(shí)間后,在各個(gè)文件夾中會(huì)生成一系列的文件:
(Figure8:Full文件)
(Figure9:Diff文件)
/ 38
(Figure10:Log文件)
(Figure11:Save文件)
7.有了這些文件之后,我們可以雖然還原到某個(gè)時(shí)間點(diǎn)上的數(shù)據(jù),數(shù)據(jù)的差異為一個(gè)小時(shí),例如你是在2012-12-11的15:48:00分誤操作了數(shù)據(jù)庫,我能回滾到最接近這個(gè)時(shí)間的是:2012-12-11的15:00:00
(Figure12:還原完整備份文件)
/ 38
(Figure13:還原差異、日志備份文件)
在使用SSMS的還原的時(shí)候,系統(tǒng)會(huì)幫你找到最近的備份文件,并且進(jìn)行了勾選,要完成上面的還原,根據(jù)我們之前的備份計(jì)劃,我們需要文件:
1)完整備份文件:Barfoo.Medusa_backup_2012_12_09_020005_0612500.bak 2)差異備份文件:Barfoo.Medusa_backup_2012_12_11_020005_8354977.bak 3)日志備份文件:
Barfoo.Medusa_backup_2012_12_11_080005_4808937.trn Barfoo.Medusa_backup_2012_12_11_090005_4816881.trn Barfoo.Medusa_backup_2012_12_11_100005_6543553.trn Barfoo.Medusa_backup_2012_12_11_110005_7645233.trn Barfoo.Medusa_backup_2012_12_11_120005_8434417.trn Barfoo.Medusa_backup_2012_12_11_130004_9379977.trn 31 / 38 Barfoo.Medusa_backup_2012_12_11_140005_2044137.trn Barfoo.Medusa_backup_2012_12_11_150005_2208329.trn 還原的步驟就是先還原完整備份文件,接著還原差異備份文件,再依次執(zhí)行日志備份文件,這樣就能回滾到你想要的時(shí)間點(diǎn):2012-12-11的15:00 4.2、注意事項(xiàng)
1.備份計(jì)劃中“每天在8:00:00和23:59:59之間、每1小時(shí)執(zhí)行數(shù)據(jù)庫的日志備份”很多人會(huì)問:這中間相差8個(gè)小時(shí)的數(shù)據(jù)不做日志備份呢?其實(shí)我是這樣考慮的,在凌晨的時(shí)候,大部分的情況這段時(shí)間是在跑定時(shí)器處理數(shù)據(jù),如果不是程序有BUG,一般不會(huì)造成數(shù)據(jù)錯(cuò)誤需要恢復(fù),而且這個(gè)時(shí)候用戶操作頁面也不頻繁(個(gè)人認(rèn)為更多數(shù)據(jù)誤操作是因?yàn)槿藶椴僮鞑划?dāng)引起的),你可以根據(jù)自己的業(yè)務(wù)情況做些調(diào)整;
2.備份計(jì)劃中“每個(gè)月的最后一個(gè)星期日的1:00:00執(zhí)行數(shù)據(jù)庫的完整備份”,這樣做的目的是盡量不影響全備份又能保留一份完整的備份文件,如果需要更加嚴(yán)謹(jǐn)一點(diǎn),你可以把它換成“僅復(fù)制備份(COPY_ONLY)”,這需要在維護(hù)計(jì)劃中使用T-SQL進(jìn)行備份,這就可以完全不影響日志鏈; 3.維護(hù)計(jì)劃的可以通過T-SQL腳本生成嘛?
sp_add_maintenance_plan sp_delete_maintenance_plan_db sp_add_maintenance_plan_db sp_delete_maintenance_plan_job 32 / 38 sp_add_maintenance_plan_job sp_help_maintenance_plan sp_delete_maintenance_plan
5、SQL Server 數(shù)據(jù)庫最小宕機(jī)遷移方案 5.1、目的
在做SQL Server數(shù)據(jù)庫維護(hù)的時(shí)候,當(dāng)上司要求我們把幾十G的數(shù)據(jù)文件搬動(dòng)到其它服務(wù)器,并且要求最小宕機(jī)時(shí)間的時(shí)候,我們有沒什么方案可以做到這些要求呢?
在這里我們假設(shè)這兩臺(tái)機(jī)器并不是在一個(gè)機(jī)房上,這樣看起來我們的解決方案才更有意義,如果你那么好運(yùn)這兩臺(tái)機(jī)器在同一個(gè)局域網(wǎng),那么恭喜你,你可以多很多的方案可以做到。5.2、分析與設(shè)計(jì)思路
其實(shí)我們假設(shè)的環(huán)境有兩個(gè)特點(diǎn):第一個(gè)是數(shù)據(jù)庫文件比較大;第二個(gè)就是我們的傳送文件的速度可能會(huì)比較慢。也許這傳送速度我們是沒有辦法了,但是我們可以就從文件的大小這個(gè)問題出發(fā),結(jié)合SQL Server的特性,這樣就有了下面的解決方案了。
為了使宕機(jī)時(shí)間最短,我們這里使用了完整備份和差異備份來遷移數(shù)據(jù)庫,在白天的時(shí)候?qū)π枰w移的數(shù)據(jù)庫進(jìn)行一次完整備份(XXX_full.bak),并把備份文件拷貝(這里可以使用FTP軟件進(jìn)行斷點(diǎn)續(xù)傳)到目標(biāo)服務(wù)器進(jìn)行還原,33 / 38 等到下班時(shí)間之后再進(jìn)行一次差異備份(XXX_diff.bak),再把這個(gè)差異備份拷貝到目標(biāo)服務(wù)器,在完整還原的基礎(chǔ)上再進(jìn)行差異還原。
這里的宕機(jī)時(shí)間 = 差異備份時(shí)間 + 傳送差異備份文件時(shí)間 + 還原差異備份文件時(shí)間,這宕機(jī)時(shí)間是不是讓你感覺這時(shí)間很短呢? 5.3、參考腳本
注意修改下面腳本中數(shù)據(jù)庫的名稱,還有絕對(duì)路徑。
--1:完整備份
declare @dbname varchar(100)declare @sql nvarchar(max)set @dbname = 'DataBaseName' set @sql = '--'+@dbname+'_full
BACKUP DATABASE ['+@dbname+']
TO DISK = ''D:DBBackup'+@dbname+'_full.bak'' WITH NOFORMAT, NOINIT, NAME = '''+@dbname+'-完整數(shù)據(jù)庫備份'',SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO' print @sql
--生成的SQL 34 / 38--DataBaseName_full
BACKUP DATABASE [DataBaseName]
TO
DISK = 'D:DBBackupDataBaseName_full.bak'
WITH NOFORMAT, NOINIT, NAME = 'DataBaseName-完整數(shù)據(jù)庫備份',SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO
--2:完整備份還原
declare @dbname varchar(100)declare @sql nvarchar(max)set @dbname = 'DataBaseName' set @sql = '--RESTORE '+@dbname+'_full RESTORE DATABASE ['+@dbname+']
FROM DISK = ''D:DBBackup'+@dbname+'_full.bak'' WITH FILE = 1,MOVE N''DataBase_Name'' TO N''D:DataBase'+@dbname+'.mdf'',MOVE N''DataBase_Name_log'' TO N''D:DataBase'+@dbname+'_log.ldf'',NORECOVERY, NOUNLOAD, REPLACE, STATS = 10 35 / 38 GO' print @sql
--生成的SQL--RESTORE DataBaseName_full
RESTORE DATABASE [DataBaseName]
FROM
DISK = 'D:DBBackupDataBaseName_full.bak'
WITH
FILE = 1,MOVE N'DataBase_Name' TO N'D:DataBaseDataBaseName.mdf',MOVE N'DataBase_Name_log' TO N'D:DataBaseDataBaseName_log.ldf',NORECOVERY, NOUNLOAD, REPLACE, STATS = 10 GO
--3:差異備份
declare @dbname varchar(100)declare @sql nvarchar(max)set @dbname = 'DataBaseName' set @sql = '--'+@dbname+'_diff BACKUP DATABASE ['+@dbname+']
/ 38 TO DISK = N''D:DBBackup'+@dbname+'_diff.bak'' WITH DIFFERENTIAL , NOFORMAT, NOINIT, NAME = N'''+@dbname+'-差異數(shù)據(jù)庫備份'',SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO '
print @sql
--生成的SQL--DataBaseName_diff
BACKUP DATABASE [DataBaseName]
TO
DISK = N'D:DBBackupDataBaseName_diff.bak'
WITH
DIFFERENTIAL , NOFORMAT, NOINIT, NAME = N'DataBaseName-差異數(shù)據(jù)庫備份',SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO
--4:差異備份還原
declare @dbname varchar(100)declare @sql nvarchar(max)set @dbname = 'DataBaseName'
/ 38 set @sql = '--RESTORE '+@dbname+'_full RESTORE DATABASE ['+@dbname+']
FROM DISK = ''D:DBBackup'+@dbname+'_diff.bak'' WITH FILE = 1,NOUNLOAD, STATS = 10 GO' print @sql
--生成的SQL--RESTORE DataBaseName_full
RESTORE DATABASE [DataBaseName]
FROM
DISK = 'D:DBBackupDataBaseName_diff.bak'
WITH
FILE = 1,NOUNLOAD, STATS = 10 GO
/ 38
第二篇:數(shù)據(jù)庫備份方案
1、完全備份(Full Backup)
備份全部選中的文件夾,并不依賴文件的存檔屬性來確定備份那些文件。在備份過程中,任何現(xiàn)有的標(biāo)記都被清除,每個(gè)文件都被標(biāo)記為已備份。換言之,清除存檔屬性。
完全備份就是指對(duì)某一個(gè)時(shí)間點(diǎn)上的所有數(shù)據(jù)或應(yīng)用進(jìn)行的一個(gè)完全拷貝。實(shí)際應(yīng)用中就是用一盤磁帶對(duì)整個(gè)系統(tǒng)進(jìn)行完全備份,包括其中的系統(tǒng)和所有數(shù)據(jù)。這種備份方式最大的好處就是只要用一盤磁帶,就可以恢復(fù)丟失的數(shù)據(jù)。因此大大加快了系統(tǒng)或數(shù)據(jù)的恢復(fù)時(shí)間。然而它的不足之處在于,各個(gè)全備份磁帶中的備份數(shù)據(jù)存在大量的重復(fù)信息;另外,由于每次需要備份的數(shù)據(jù)量相當(dāng)大,因此備份所需時(shí)間較長(zhǎng)。
2、差異備份(Differential Backup)
備份自上一次完全備份之后有變化的數(shù)據(jù)。差異備份過程中,只備份有標(biāo)記的那些選中的文件和文件夾。它不清除標(biāo)記,也即備份后不標(biāo)記為已備份文件。換言之,不清除存檔屬性。
差異備份是指在一次全備份后到進(jìn)行差異備份的這段時(shí)間內(nèi),對(duì)那些增加或者修改文件的備份。在進(jìn)行恢復(fù)時(shí),我們只需對(duì)第一次全備份和最后一次差異備份進(jìn)行恢復(fù)。差異備份在避免了另外兩種備份策略缺陷的同時(shí),又具備了它們各自的優(yōu)點(diǎn)。首先,它具有了增量備份需要時(shí)間短、節(jié)省磁盤空間的優(yōu)勢(shì);其次,它又具有了全備份恢復(fù)所需磁帶少、恢復(fù)時(shí)間短的特點(diǎn)。系統(tǒng)管理員只需要兩盤磁帶,即全備份磁帶與災(zāi)難發(fā)生前一天的差異備份磁帶,就可以將系統(tǒng)恢復(fù)。
3、增量備份(Incremental Backup)
備份自上一次備份(包含完全備份、差異備份、增量備份)之后有變化的數(shù)據(jù)。增量備份過程中,只備份有標(biāo)記的選中的文件和文件夾,它清除標(biāo)記,既:備份后標(biāo)記文件,換言之,清除存檔屬性。
增量備份是指在一次全備份或上一次增量備份后,以后每次的備份只需備份與前一次相比增加和者被修改的文件。這就意味著,第一次增量備份的對(duì)象是進(jìn)行全備后所產(chǎn)生的增加和修改的文件;第二次增量備份的對(duì)象是進(jìn)行第一次增量備份后所產(chǎn)生的增加和修改的文件,如此類推。這種備份方式最顯著的優(yōu)點(diǎn)就是:沒有重復(fù)的備份數(shù)據(jù),因此備份的數(shù)據(jù)量不大,備份所需的時(shí)間很短。但增量備份的數(shù)據(jù)恢復(fù)是比較麻煩的。您必須具有上一次全備份和所有增量備份磁帶(一旦丟失或損壞其中的一盤磁帶,就會(huì)造成恢復(fù)的失?。⑶宜鼈儽仨氀刂鴱娜珎浞莸揭来卧隽總浞莸臅r(shí)間順序逐個(gè)反推恢復(fù),因此這就極大地延長(zhǎng)了恢復(fù)時(shí)間。
第三篇:Sybase數(shù)據(jù)庫備份方案
Sybase數(shù)據(jù)庫備份方案
Sybase數(shù)據(jù)備份方案,Sybase數(shù)據(jù)庫產(chǎn)品自從1987年問世以來,它的客戶機(jī)/服務(wù)器(client/server)工作模式、分布處理的基礎(chǔ)體系結(jié)構(gòu)、完善的安全保密性能、高速快捷的運(yùn)行方式、多平臺(tái)跨操作系統(tǒng)的廣泛應(yīng)用等優(yōu)點(diǎn),迅速被IT界接受并推廣應(yīng)用。
我們作為金融業(yè)的用戶,也在1995年開始使用Sybase10版本。在具體的使用中,發(fā)現(xiàn)集中式的數(shù)據(jù)管理有其優(yōu)點(diǎn),就是數(shù)據(jù)風(fēng)險(xiǎn)范圍大為縮小,但是作為Sybase的服務(wù)器一端,數(shù)據(jù)風(fēng)險(xiǎn)比較集中,如何做好數(shù)據(jù)庫的數(shù)據(jù)備份,成為至關(guān)重要的問題。
在實(shí)際應(yīng)用中,我們總結(jié)出了兩種全量備份方案:
一、Sybase數(shù)據(jù)備份方案之使用Sybase的BackupServer(備份服務(wù)器),做Dump備份
轉(zhuǎn)儲(chǔ)數(shù)據(jù)庫(Dumpdatabase),就是為整個(gè)數(shù)據(jù)庫(包括數(shù)據(jù)、表結(jié)構(gòu)、觸發(fā)器、游標(biāo)、存儲(chǔ)過程、事務(wù)日志等)做一次物理備份。轉(zhuǎn)儲(chǔ)數(shù)據(jù)庫時(shí),系統(tǒng)自動(dòng)執(zhí)行一次checkpoint,即將日志和數(shù)據(jù)從緩沖區(qū)拷貝到硬盤(只拷貝臟頁),把已被分配的頁(日志和數(shù)據(jù))轉(zhuǎn)儲(chǔ)到設(shè)備。命令格式為:
dumpdatabase數(shù)據(jù)庫名to設(shè)備文件名with參數(shù)
如果備份到硬盤的文件上,可以不預(yù)先估算備份文件的大小,只要硬盤有足夠的存儲(chǔ)空間就可以。如果是備份到dds磁帶上,那么就要估算一下備份后的大小,90米的dds磁帶壓縮存儲(chǔ)空間為4G,120米的磁帶壓縮存儲(chǔ)空間為8G,如果數(shù)據(jù)庫的備份文件超過了這個(gè)尺寸,就要考慮多文件轉(zhuǎn)儲(chǔ),使用stripe參數(shù)。命令格式為:
dumpdatabase數(shù)據(jù)庫名to設(shè)備文件名1 stripeon設(shè)備文件名2 stripeon設(shè)備文件名3…… with參數(shù) 這種數(shù)據(jù)備份方式是將整個(gè)數(shù)據(jù)庫的運(yùn)行環(huán)境完整的復(fù)制一份,包括數(shù)據(jù)庫的臟頁和碎片,在使用load命令恢復(fù)時(shí),只能恢復(fù)到同樣大小的數(shù)據(jù)庫中(數(shù)據(jù)和日志的大小都只能和原來完全一致),適用于在每天的日終營(yíng)業(yè)網(wǎng)點(diǎn)下班后的日常備份。優(yōu)點(diǎn)是數(shù)據(jù)庫完整無誤,缺點(diǎn)是不能直接查看備份內(nèi)容。
二、Sybase數(shù)據(jù)備份方案之分?jǐn)?shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)記錄做兩次備份
在一般情況下,生產(chǎn)機(jī)的數(shù)據(jù)庫都比較龐大,而實(shí)驗(yàn)機(jī)則相對(duì)較小,難以在實(shí)驗(yàn)環(huán)境中以load命令恢復(fù)工作機(jī)的內(nèi)容。所以,在工作實(shí)踐中,我們摸索出了第二種全量備份方案。
1、數(shù)據(jù)結(jié)構(gòu)備份
在windows平臺(tái)的SybaseSQLServerManager(數(shù)據(jù)庫管理)平臺(tái)中選擇ServeràGenerateddl則產(chǎn)生整個(gè)數(shù)據(jù)庫服務(wù)器的所有信息,如果選擇databaseàgenerateddl則產(chǎn)生所選定數(shù)據(jù)庫的信息,以master庫為例,產(chǎn)生的文件主要包括:config.ddl(配置)、devices.ddl(設(shè)備)、database.ddl(數(shù)據(jù)庫)、logins.ddl(用戶)、remote.ddl(遠(yuǎn)程)、cache.ddl(緩沖)、segment.ddl()、group.ddl(用戶組)、user.ddl(用戶)、default.ddl(確?。?、rule.ddl(規(guī)則)、udt.ddl、table.ddl(表)、view.ddl(視圖)、proc.ddl(存儲(chǔ)過程)、triger.ddl(觸發(fā)器)。
2、數(shù)據(jù)記錄備份
將數(shù)據(jù)庫各表以Sybase自代的bcp(bulkcopy)工具的方式導(dǎo)成一定格式的文本文件,命令格式:
bcp表名out路徑名文件名-c-t分隔符-u(用戶名)-p(密碼)-S(服務(wù)器名)如果將一個(gè)數(shù)據(jù)庫中的所有表都做一個(gè)bcp備份,就需要針對(duì)每一個(gè)表都做一次bcp,在一般情況下,一個(gè)數(shù)據(jù)庫有100多個(gè)表,工作量比較大。可以利用數(shù)據(jù)庫中的系統(tǒng)表信息做一個(gè)bcp備份腳本。原理是每一個(gè)用戶表在系統(tǒng)表中都有信息記載,可以通過isql語句查詢得到?,F(xiàn)舉一例說明: 1)、先編輯一個(gè)名為mkbcpout.sql的文件,內(nèi)容如下: select“echobcp'”+name+“out……………………'
”+“bcp”+name+“out./+”name+“.table-c-t'|'-Uuser-Ppassword-SSERVER”fromsysobjectswheretype='U' go 2)、執(zhí)行isql命令,以此文件作為輸入,執(zhí)行結(jié)果輸出到另外一個(gè)文件里: isql-Uuser-Ppassword-Sserver-Imkbcpout.sql-Obcpout 3)、對(duì)bcppout文件稍微修改,增加可執(zhí)行權(quán)限 chmod+xbcpout 4)、執(zhí)行bcpout,導(dǎo)出數(shù)據(jù)文本./bcpout
3、數(shù)據(jù)庫恢復(fù)
業(yè)務(wù)生產(chǎn)機(jī)可能為小型機(jī),而實(shí)驗(yàn)開發(fā)環(huán)境的硬件環(huán)境為PCserver,安裝好winnt或SCOunix下的Sybase服務(wù)器后,根據(jù)需要?jiǎng)?chuàng)建空間足夠大的數(shù)據(jù)庫和tempdb(系統(tǒng)臨時(shí)數(shù)據(jù)庫),創(chuàng)建數(shù)據(jù)庫用戶,并將其更改為此數(shù)據(jù)庫的所有者,要注意兩點(diǎn):1)此數(shù)據(jù)庫允許bcp拷貝,2)此數(shù)據(jù)庫自動(dòng)清除log。命令格式為:
1>sp_dboptiondatabasedbname,“selectinto/bulkcopy”,true 2>go 1>sp_dboptiondatabasename,“trunclogonchkpt”,true 2>go 上述兩個(gè)配置可能與生產(chǎn)機(jī)的配置不同。
然后以新創(chuàng)建的數(shù)據(jù)庫用戶登錄,導(dǎo)入數(shù)據(jù)結(jié)構(gòu),注意要首先導(dǎo)入表結(jié)構(gòu),然后才是存儲(chǔ)過程、觸發(fā)器等等。命令格式:
1、isql-Uusername-Ppassword-Itable.ddl-oerror.log.table
2、isql-Uusername-Ppassword-Iproc.ddl-oerror.log.proc ……
為了提高bcp導(dǎo)入數(shù)據(jù)的速度,需要將比較大的表的索引和主鍵刪除,否則的話,每bcp進(jìn)一條數(shù)據(jù),數(shù)據(jù)庫都自動(dòng)寫一條log日志,記載此數(shù)據(jù)的上一條和下一條記錄,確定本記錄在此表中的準(zhǔn)確位置,一是影響bcp速度,二是數(shù)據(jù)庫的log飛速膨脹。數(shù)據(jù)庫的自動(dòng)清除log功能只有在一個(gè)事務(wù)結(jié)束后才起作用。準(zhǔn)備工作做完后,開始倒入數(shù)據(jù)記錄。使用類似做bcpout的方法做一個(gè)bcpin的腳本,然后執(zhí)行:./bcpin|teeerror.bcpin 使用tee管道輸出的目的是讓計(jì)算機(jī)完整記錄下倒入過程,自動(dòng)存入error.bcpin文件中,待倒入結(jié)束后,我們只需要檢查日志文件,不需要一直緊盯著計(jì)算機(jī)屏幕。所有工作做完之后,不要忘記重新將刪除的主鍵和索引建上。
如果有現(xiàn)成的數(shù)據(jù)庫,只需要單純地導(dǎo)入數(shù)據(jù)記錄,則首先將數(shù)據(jù)庫中所有用戶表(也就是所有type=“U”的表)清空,命令格式: 1>truncatetabletablename 2>go 當(dāng)然最好也是利用做bcpout腳本的做一個(gè)truncate腳本,通過執(zhí)行此腳本將所有用戶表清空。然后的數(shù)據(jù)導(dǎo)入、處理索引和主鍵的過程與上面類似。
三、Sybase數(shù)據(jù)備份方案之利用做bcp備份腳本的方法做數(shù)據(jù)庫碎片整理 Sybase數(shù)據(jù)庫作為聯(lián)機(jī)事務(wù)處理應(yīng)用服務(wù)器,每天應(yīng)用程序都對(duì)數(shù)據(jù)庫做大量的插入、修改和刪除等操作,不可避免的在數(shù)據(jù)庫的物理存儲(chǔ)介質(zhì)上留下頁碎片和擴(kuò)展單元碎片,從而影響數(shù)據(jù)庫的存儲(chǔ)效率和運(yùn)行速度。具體表現(xiàn)為:業(yè)務(wù)繁忙時(shí)出現(xiàn)死鎖(deadlock),數(shù)據(jù)庫的輸入/輸出資源被大量占用,業(yè)務(wù)處理速度慢。其解決辦法是:
1、清空數(shù)據(jù)庫中的所有表,命令格式:
isql-Uusername-Ppassword-Itruncate.sql-oerror.truncate
2、刪除所有表的索引和主鍵
isql-Uusername-Ppassword-Idropindex.sql-oerror.dropindex
3、導(dǎo)入數(shù)據(jù)./bcpin
4、添加索引和主鍵
isql-Uusername-Ppassword-Iaddindex.sql-oerror.addindex
5、更新數(shù)據(jù)庫狀態(tài)
1>updatestatisticstablename 2>go 上述操作都是針對(duì)數(shù)據(jù)庫中的所有用戶表進(jìn)行的,利用做bcp備份腳本的方法做出相應(yīng)的腳本,使繁瑣的數(shù)據(jù)庫維護(hù)變得簡(jiǎn)便易行,還克服了直接使用isql語句操作風(fēng)險(xiǎn)大、沒有操作日志的毛病。以上就是對(duì)Sybase數(shù)據(jù)備份方案的簡(jiǎn)單介紹。
第四篇:oracle數(shù)據(jù)庫自動(dòng)備份方案
1.目的
編寫本文檔的目的為實(shí)現(xiàn)ORACLE數(shù)據(jù)庫的自動(dòng)備份,為不動(dòng)產(chǎn)數(shù)據(jù)增加一份數(shù)據(jù)安全按保障。
2.軟件環(huán)境
數(shù)據(jù)庫服務(wù)器:oracle 11g atabase x64 v11.2.0.4.0 客戶端:Oracle client x64 v11.2.0.4.0 注意:數(shù)據(jù)庫服務(wù)器和客戶端版本必須保持一致,否則會(huì)出現(xiàn)無法預(yù)知的錯(cuò)誤。
3.實(shí)施方案
3.1.編寫數(shù)據(jù)庫自動(dòng)備份腳本
腳本內(nèi)容如下,將文件存儲(chǔ)為oraclebackup.bat:
@echo off echo 刪除10天前的備分文件和日志
forfiles /p “D:oraclebackup” /m *.dmp /d-10 /c “cmd /c del @path” forfiles /p “D:oraclebackup” /m *.log /d-10 /c “cmd /c del @path” echo 正在備份 oracle 數(shù)據(jù)庫,請(qǐng)稍等……
exp BDCDJ_CP/BDCDJ_CP@10.6.161.70/orcl file=D:/oraclebackup/BDCDJ_CP%date:~0,4%%date:~5,2%%date:~8,2%.dmp log=D:/oraclebackup/BDCDJ_CP%date:~0,4%%date:~5,2%%date:~8,2%.log echo 任務(wù)完成!注意:
1)修改數(shù)據(jù)庫連接用戶名、密碼、數(shù)據(jù)庫地址和實(shí)例名
2)修改備份文件存儲(chǔ)地址,以上腳本存儲(chǔ)位置為D:oraclebackup 3.2.新建任務(wù)計(jì)劃
1)打開任務(wù)計(jì)劃程序
2)打開創(chuàng)建基本任務(wù),輸入任務(wù)名稱、選擇任務(wù)執(zhí)行時(shí)間和執(zhí)行的腳本,完成任務(wù)計(jì)劃創(chuàng)建。
第五篇:數(shù)據(jù)庫備份和恢復(fù)方案及步驟(最終版)
操作系統(tǒng):GNU/Linux 數(shù)據(jù)庫管理系統(tǒng):Oracle10g
一、安裝Recovery Catalog 1,用dbca創(chuàng)建一個(gè)DATABASE catdb,用于存放recovery catalog data [oracle@localhost ~]$dbca 2,在catdb中創(chuàng)建一個(gè)名為rcat_ts的表空間作為用戶rman的默認(rèn)表空間
[oracle@localhost ~]$sqlplus sys/oracle@catdb as sysdba SQL> create tablespace rcat_ts;SQL> create user rman identified by oracle temporary tablespace temp Default tablespace rcat_ts quota unlimited on rcat_ts;3,授予catlog所有者rman recovery_catalog_owner角色,該角色提供給用戶所有查詢和維護(hù)recovery catalog所必需的權(quán)限
SQL> grant connect,resource,recovery_catalog_owner to rman;4,啟動(dòng)rman,以catalog所有者rman登錄
[oracle@localhost ~]$rman catalog rman/oracle@catdb RMAN> create catalog tablespace rcat_ts;5,用rman同時(shí)連接到target數(shù)據(jù)庫、catalog數(shù)據(jù)庫,在新建的recovery catalog中注冊(cè)target數(shù)據(jù)庫
[oracle@localhost ~]$rman target sys/oracle@orcl catalog rman/oracle@catdb RMAN> register database;6,察看已在recovery catalog中注冊(cè)的target數(shù)據(jù)庫
[oracle@localhost ~]$sqlplus rman/oracle@catdb SQL>select * from db;
二、配置RMAN
1,同時(shí)連接target數(shù)據(jù)庫和recovery catalog數(shù)據(jù)庫
[oracle@localhost ~]$rman target sys/oracle@orcl catalog rman/oracle@catdb 2,RMAN> show all(檢查配置)
configure default device type to disk(設(shè)置默認(rèn)的備份的設(shè)備為磁盤)
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET;(設(shè)置備份的并行級(jí)別)
configure channel 1 device type disk format '/home/new/backup_%U'(設(shè)置備份文件格式)
configure channel 2 device type disk format '/home/oracle/backup_%U'(設(shè)置備份文件格式)
configure controlfile autobackup on(打開控制文件的自動(dòng)備份)
configure controlfile autobackup format for device type disk to '/home/new/ctl_%F'(設(shè)置控制文件備份格式)
三.備份測(cè)試
備份全庫
1,同時(shí)連接target數(shù)據(jù)庫和recovery catalog數(shù)據(jù)庫
[oracle@localhost ~]$rman target sys/oracle@orcl catalog rman/oracle@catdb 2,RMAN> backup database plus archivelog delete input;3,連接target數(shù)據(jù)庫
[oracle@localhost ~]$sqlplus sys/oracle@orcl as sysdba SQL> conn hr/hr;SQL> select salary from employees where employee_id=157;SQL> update employees set salary =2000 where employee_id=157;SQL> commit;SQL> select salary from employees where employee_id=157;
四.恢復(fù)測(cè)試
復(fù)原及恢復(fù)全庫 1,連接target數(shù)據(jù)庫
[oracle@localhost ~]$sqlplus sys/oracle@orcl as sysdba 2,把target數(shù)據(jù)庫先關(guān)閉,然后啟動(dòng)到mount狀態(tài) SQL> shutdown immediate;SQL> startup mount;3,復(fù)原及恢復(fù)全庫
RMAN> restore database
channel ORA_DISK_1: restore complete, elapsed time: 00:05:10 RMAN> recover database media recovery complete, elapsed time: 00:00:07
4,連接target數(shù)據(jù)庫
[oracle@localhost ~]$sqlplus sys/oracle@orcl as sysdba 5,打開target數(shù)據(jù)庫
SQL> alter database open;6,查看已錄入的事物 SQL> conn hr/hr;SQL> select salary from employees where employee_id=157;
假設(shè)備份了一個(gè)表空間users
恢復(fù)表空間:
rman target rman/rman@test2006 catalog rman/rman@test2007
sql 'alter tablespace users offline immediate'(使TEST2006的USERS表空間脫機(jī))
進(jìn)入test2006
select tablespace_name,status from dba_tablespaces;(檢查USERS已經(jīng)脫機(jī))
退出RMAN
刪除D:oracleoradataTEST2006users01.dbf
rman target rman/rman@test2006 catalog rman/rman@test2007
restore tablespace users
recover tablespace users
sql 'alter tablespace users online'(使TEST2006的USERS表空間在線)
進(jìn)入test2006
select tablespace_name,status from dba_tablespaces;(檢查USERS已經(jīng)在線)
三、物理(熱)備份。
Linux 下Oracle10.2.0.1 RMAN備份及恢復(fù)步驟介紹
切換服務(wù)器歸檔模式,如果已經(jīng)是歸檔模式可跳過此步:
%sqlplus /nolog(啟動(dòng)sqlplus)
SQL> conn / as sysdba(以DBA身份連接數(shù)據(jù)庫)
SQL> shutdown immediate;(立即關(guān)閉數(shù)據(jù)庫)
SQL> startup mount(啟動(dòng)實(shí)例并加載數(shù)據(jù)庫,但不打開)
SQL> alter database archivelog;(更改數(shù)據(jù)庫為歸檔模式)
SQL> alter database open;(打開數(shù)據(jù)庫)
SQL> alter system archive log start;(啟用自動(dòng)歸檔)
SQL> exit(退出)
2、連接:
%rman target='gti/gti123@LANDF';(啟動(dòng)恢復(fù)管理器)
3、基本設(shè)置:
RMAN> configure default device type to disk;(設(shè)置默認(rèn)的備份設(shè)備為磁盤)
RMAN> configure device type disk parallelism 2;(設(shè)置備份的并行級(jí)別,通道數(shù))RMAN> RMAN>
RMAN> configure controlfile autobackup on;(打開控制文件與服務(wù)器參數(shù)文件的自動(dòng)備份)
RMAN> configure controlfile autobackup format for device type disk to ' /home/oracle/backup/data/ctl_%F';(設(shè)置控制文件與服務(wù)器參數(shù)文件自動(dòng)備份的文件格式)
4、查看所有設(shè)置:
RMAN> show all
5、查看數(shù)據(jù)庫方案報(bào)表:
RMAN> report schema;CONFIGURE
CHANNEL
DEVICE
TYPE
DISK
FORMAT '/home/oracle/backup/data1/backup_%U';(設(shè)置備份的文件格式,只適用于磁盤設(shè)備)CONFIGURE
CHANNEL
DEVICE
TYPE
DISK
FORMAT '/home/oracle/backup/data/backup_%U';(設(shè)置備份的文件格式,只適用于磁盤設(shè)備)
6、備份全庫:
RMAN> backup database plus archivelog delete input;(備份全庫及控制文件、服務(wù)器參數(shù)文件與所有歸檔的重做日志,并刪除舊的歸檔日志)
7、備份表空間:
熱備份(歸檔狀態(tài)下才有效果)
1、alter tablespace tablespace_name start backup;
2、拷貝你的該表空間的數(shù)據(jù)文件備份
3、alter tablespace tablespace_name end backup;
4、一個(gè)一個(gè)表空間做完,就備份完了
RMAN> backup tablespace system plus archivelog delete input;(備份指定表空間及歸檔的重做日志,并刪除舊的歸檔日志)RMAN> backup tablespace UNDOTBS plus archivelog delete input;(備份指定表空間及歸檔的重做日志,并刪除舊的歸檔日志)RMAN> backup tablespace SYSAUX plus archivelog delete input;(備份指定表空間及歸檔的重做日志,并刪除舊的歸檔日志)RMAN> backup tablespace TEMP plus archivelog delete input;(備份指定表空間及歸檔的重做日志,并刪除舊的歸檔日志)
8、備份歸檔日志:
RMAN> backup archivelog all delete input;
9、復(fù)制數(shù)據(jù)文件:
RMAN> copy datafile 1 to '/home/oracle/product/10.2.0.1/backup/system.copy';/* RMAN> RMAN> RMAN> */
10、查看備份和文件復(fù)本:
RMAN> list backup;
11、驗(yàn)證備份:
RMAN> validate backupset 3;copy copy copy
'/home/oracle/data/gti_sys01.dbf'
'/home/oracle/data/gti_undotbs.dbf' '/home/oracle/data/sysaux_01.dbf' 1
to to to '/home/oracle/product/10.2.0.1/backup/system.copy';'/home/oracle/product/10.2.0.1/backup/undo.copy';'/home/oracle/product/10.2.0.1/backup/sysaux.copy';
12、從自動(dòng)備份中恢復(fù)服務(wù)器參數(shù)文件:
RMAN> shutdown immediate;(立即關(guān)閉數(shù)據(jù)庫)
RMAN> startup nomount;(啟動(dòng)實(shí)例)
RMAN> restore spfile to pfile '/backup1/initgti.ora' from autobackup;(從自動(dòng)備份中恢復(fù)服務(wù)器參數(shù)文件)
13、從自動(dòng)備份中恢復(fù)控制文件:
RMAN> shutdown immediate;(立即關(guān)閉數(shù)據(jù)庫)
RMAN> startup nomount;(啟動(dòng)實(shí)例)
RMAN> restore controlfile to '/backup1' from autobackup;(從自動(dòng)備份中恢復(fù)控制文件)
13、恢復(fù)和復(fù)原全數(shù)據(jù)庫:
RMAN> shutdown immediate;(立即關(guān)閉數(shù)據(jù)庫)
RMAN> exit(退出)
%mv
%rman target='gti/gti123@LANDF';(啟動(dòng)恢復(fù)管理器)
RMAN> startup pfile=/home/oracle/product/10.2.0.1/dbs/initgti.ora(指定初始化參數(shù)文件啟動(dòng)數(shù)據(jù)庫)
RMAN> restore database;(還原數(shù)據(jù)庫)
RMAN> recover database;(恢復(fù)數(shù)據(jù)庫)
RMAN> alter database open;(打開數(shù)據(jù)庫)
14、恢復(fù)和復(fù)原表空間:
RMAN> sql 'alter tablespace users offline immediate';(將表空間脫機(jī))
RMAN> exit(退出恢復(fù)管理器)
/home/oracle/product/10.2.0.1/dbs/snapcf_gti.f /home/oracle/product/10.2.0.1/dbs/snapcf_gti.f.bak(將數(shù)據(jù)文件重命名)%mv
%mv /home/oracle/data/gti_undotbs.dbf /home/oracle/data/gti_undotbs.dbf.bak(將表空間重命名)
%mv /home/oracle/data/sysaux_01.dbf /home/oracle/data/sysaux_01.dbf.bak(將表空間重命名)
%rman target='gti/gti123@LANDF';(啟動(dòng)恢復(fù)管理器)
RMAN> restore tablespace users;(還原表空間)
RMAN> recover tablespace users;(恢復(fù)表空間)
RMAN> sql 'alter tablespace users online';(將表空間聯(lián)機(jī))
15、增量備份與恢復(fù):
第一天的增量基本備份:
RMAN> backup incremental level=0 database plus archivelog delete input;
第二天的增量差異備份:
RMAN> backup incremental level=2 database plus archivelog delete input;
第三天的增量差異備份:
RMAN> backup incremental level=2 database plus archivelog delete input;
第四天的增量差異備份:
RMAN> backup incremental level=1 database plus archivelog delete input;
第五天的增量差異備份:
RMAN> backup incremental level=2 database plus archivelog delete input;
第六天的增量差異備份:
RMAN> backup incremental level=2 database plus archivelog delete input;
/home/oracle/product/10.2.0.1/dbs/gti_sys01.dbf /home/oracle/data/gti_sys01.dbf.bak(將表空間重命名)第七天的增量差異備份:
RMAN> backup incremental level=0 database plus archivelog delete input;
增量恢復(fù):
RMAN> shutdown immediate;
RMAN> exit
%mv
%rman target='gti/gti123@LANDF';(啟動(dòng)恢復(fù)管理器)
RMAN> startup pfile=/home/oracle/product/10.2.0.1/dbs/initgti.ora(指定初始化參數(shù)文件啟動(dòng)數(shù)據(jù)庫)
RMAN> restore database;
RMAN> recover database;
RMAN> alter database open./home/oracle/product/10.2.0.1/dbs/snapcf_gti.f /home/oracle/product/10.2.0.1/dbs/snapcf_gti.f.bak(將數(shù)據(jù)文件重命名)
RMAN>crosscheck backupset;RMAN>delete obsolete RMAN>crosscheck archivelog all;RMAN>delete archivelog all;