Oracle數據庫備份和恢復論文

時間:2022-03-11 11:08:00

導語:Oracle數據庫備份和恢復論文一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。

Oracle數據庫備份和恢復論文

摘要:本文從oracle的體系結構開始,由原理到實踐,論述了Oracle數據庫備份的方式和策略。包括IMP/EXP,RMAN,OS備份等。

Abstract:StartingfromthearchitectureofORACLE,thispaperdiscussesthebackupmethodandstrategyofdatabaseOracle,includingIMP/EXP,PMANandOStheoreticallyandpractically.

關鍵字:Oracle,備份,恢復,RMAN

Keywords:Oracle;Backup;Restoration;RMAN

概述

在大型軟件運行系統中,存在著很多備份策略,如RAID技術,CLUSTER技術等等。很多時候,這些系統的備份就能夠解決數據庫備份的問題。但是,這種備份成本很高。同時,硬件的備份有時根本滿足不了現實的需要,如果用戶不小心誤刪了一個表,又想恢復的時候,數據庫的備份就變的重要了。

Introduction:Intherunningsystemofsomebigsoftware,thereexistmanybackupstrategiessuchasRAIDtechnologyandCLUSTERtechnologyetc.Inmostcases,thesesystembackupstrategiescanfulfillthedatabasebackup.Howeverthecostisratherhigh.Atthesametime,hardwarebackupsometimesisfarfromtheactualrequirement.Thedatabasebackupbecomesveryimportantwhenatableisdeletedbyaccidentandneedstoberestored.

Oracle的運行方式

Oracle數據庫有兩種運行方式:一是歸檔方式(ARCHIVELOG),歸檔方式的目的是當數據庫發生故障時最大限度恢復數據庫,可以保證不丟失任何已提交的數據;二是不歸檔方式(NOARCHIVELOG),只能恢復數據庫到最近的回收點(冷備份或是邏輯備份)。根據數據庫的高可用性和用戶可承受丟失的工作量的多少,對于實時性要求高的數據庫,強烈要求采用為歸檔方式;不歸檔方式只用在那些開發和調試的數據庫等。

如何改變數據庫的運行方式,在創建數據庫時,作為創建數據庫的一部分,就決定了數據庫初始的存檔方式。一般情況下為NOARCHIVELOG方式。當數據庫創建好以后,根據我們的需要把需要運行在歸檔方式的數據庫改成ARCHIVELOG方式。操作如下。

1.關閉數據庫,備份已有的數據,改變數據庫的運行方式是對數據庫的重要改動,所以要對數據庫做備份,對可能出現的問題作出保護。

2.修改初試化參數,使能自動存檔。

修改(添加)初始化文件init[SID].ora參數:

log_archive_start=true#啟動自動歸檔

log_archive_format=ARC%T%S.arc#歸檔文件格式

log_archive_dest=/archdir/arch#歸檔路徑

在8i中,可以最多有五個歸檔路徑,并可以歸檔到其它服務器,如備用數據庫(standbydatabase)服務器。

3.啟動Instance到Mount狀態,即加載數據庫但不打開數據庫。

$>svrmgrl

SVRMGRL>connectinternal

SVRMGRL>startupmount

SVRMGRL>alterdatabasearchivelog;//使數據庫運行在歸檔方式

SVRMGRL>alterdatabaseopen;

Oracle的備份方案

按照備份的方式,可以分為邏輯備份、冷備份(脫機備份)、熱備份(聯機備份),其中冷備份與熱備份又可以合稱為物理備份。按照備份的工具,可以分為EXP/IMP備份、操作系統備份、RMAN、第三方工具備份,如VERITAS等。下面分別介紹Oracle本身提供的幾種備份工具和操作。

1.EXP/IMP備份(邏輯備份)

EXP/IMP屬于邏輯備份的范疇,邏輯備份是指只備份數據庫中的數據但不記錄數據物理位置的一種備份。導出為數據庫作一個二進制的備份,并且這個備份只能由其姊妹程序imp(import)來讀取。具體的使用方法如下。(因為EXP和IMP使用上參數基本相同,所以只以EXP為例。)

EXP的命令格式和參數

格式:KEYWORD=value或KEYWORD=(value1,value2,...,valueN)

例程:EXPSCOTT/TIGERGRANTS=YTABLES=(EMP,DEPT,MGR)

USERID必須是命令行中的第一個參數

關鍵字說明(默認)關鍵字說明(默認)

USERID用戶名/口令FULL導出整個文件(N)

BUFFER數據緩沖區的大小OWNER所有者用戶名列表

FILE輸出文件(EXPDAT.DMP)TABLES表名列表

COMPRESS導入一個范圍(Y)RECORDLENGTHIO記錄的長度

GRANTS導出權限(Y)INCTYPE增量導出類型

INDEXES導出索引(Y)RECORD跟蹤增量導出(Y)

ROWS導出數據行(Y)PARFILE參數文件名

CONSTRAINTS導出限制(Y)CONSISTENT交叉表一致性

LOG屏幕輸出的日志文件STATISTICS分析對象(ESTIMATE)

DIRECT直接路徑(N)TRIGGERS導出觸發器(Y)

FEEDBACK顯示每x行(0)的進度FILESIZE各轉儲文件的最大尺寸

QUERY選定導出表子集的子句

注:可以通過exp-help命令查看exp的使用方法;imp-help命令查看imp的使用方法.

2.操作系統備份(冷備份和熱備份)

操作系統備份有兩類,冷備份(Coldbackup)和熱備份(Hotbackup)。操作系統備份和上面的邏輯備份有本質的區別,它將拷貝整個的數據文件。

冷備份

在文件級備份開始前數據庫必須徹底關閉。關閉操作必須用帶有normal、immediate、transaction選項的shutdown來執行。

數據庫使用的每個文件都被備份下來,這些文件包括:所有數據文件、所有控制文件、所有聯機重做日志文件和INIT.ORA文件(建議)。

作冷備份一般步驟是:

1)正常關閉要備份的實例(instance);

2)備份整個數據庫到一個目錄

3)啟動數據庫

即:

SVRMGRL>connectinternal

SVRMGRL>shutdownimmediate

SVRMGRL>!cp<file><backupdirectory>

or

SVRMGRL>!tarcvf/dbbak/fullbk.tar/u01/oracle/oradata/dbname

SVRMGRL>startup

&#61548;熱備份

熱備份是當數據庫打開時的操作系統備份。熱備份只能用于ARCHIVELOG方式的數據庫。熱備份沒有必要備份聯機日志,但必須是歸檔狀態,在實例恢復的時候,可能需要用到歸檔日志。當前聯機日志一定要保護好或是處于鏡相狀態,當前聯機日志的損壞,對于數據庫的損壞是巨大的,只能以數據的丟失來進行數據庫的恢復工作。對于臨時表空間,存放的是臨時信息,在熱備份是也可以考慮不用備份,如果臨時文件發生故障,可以刪除該數據文件與表空間,重建一個臨時表空間。

熱備份備份的內容和冷備份備份的內容一樣,操作一般步驟是:

1)備份的表空間通過使用ALTERTABLESPACE……BEGINBACKUP使表空間進入熱備份方式。

2)用類似冷備份的操作系統命令對組成表空間的數據文件進行拷貝。

3)使用ALTERTABLESPACE……ENDBACKUP命令使表空間脫離熱備份方式。

4)使用ALTERDATABSE……BACKUPCONTROLFILE命令備份控制文件。

即:

SVRMGRL>connectinternal;

SVRMGRL>altertablespaceUserbeginbackup;

SVRMGRL>!cp/u01/oradata/dbname/user01.ora/dbbak/user01.ora

SVRMGRL>altertablespaceUserendbackup;

SVRMGRL>alterdatabasebackupcontrolfileto<fielname>;

or

SVRMGRL>alterdatabasebackupcontrolfiletotrace;

注意:因為熱備份的時候,用戶還在操作數據庫,所以最好是讓每個表空間處于備份狀態的時間最短,這樣就要求一個表空間一個表空間的備份,不要一起使表空間處于備份狀態而同時拷貝數據文件。

3.RMAN

RecoveryManager(RMAN)是一個使DBA能很方便地對數據庫執行備份和恢復任務的Oracle應用工具,能夠提供DBA對企業數據庫備份與恢復操作的集中控制。RMAN只能用于ORACLE8或更高的版本中。它能夠備份整個數據庫或數據庫部件,其中包括表空間、數據文件,控制文件和歸檔文件。RMAN可以按要求存取和執行備份和恢復。

RMAN支持六種不通的類型的備份,經常用到的有兩種:

FULL數據庫全備份,包括所有的數據塊。

INCREMENTAL增量備份,是指只備份在同級別或更低級別上進行的前一次備份之后的作過改動的那些數據塊。這其中需要一個0級的增量作為增量的基礎,它備份包括全部曾經被數據庫使用過的數據塊(但不是完全數據庫備份)。RMAN共可以支持7級增量。

BACKUP,RESTORE,RECOVER是RMAN最基本的三個命令,分別可以進行數據庫的備份,復原以及恢復操作。restore命令用于恢復來自備份集或映像拷貝的數據文件、控制文件或歸檔重做日志。recovery命令用于進行介質恢復應用重做日志文件。

RMAN的備份信息一般保存在恢復目錄中,恢復目錄也是一個數據庫,只不過這個數據庫用來保存備份信息,一個恢復目錄可以用來保存多個數據庫的備份信息。RMAN也可以在沒有恢復目錄(NOCATALOG)下運行,這個時候備份信息保存在控制文件。這種情況比較危險,因為一旦控制文件被破壞,將導致所有數據庫備份信息的丟失和恢復的失敗,而且,沒有恢復目錄,很多RMAN的命令將不被支持。所以對于重要的數據庫,建議創建恢復目錄。

創建恢復目錄一般有以下步驟。(例子數據庫為db)

1)為目錄創建一個單獨的表空間

SQL>createtablespacetsrmandatafile’/dbbak/rman/rsrman.dbf’size50M;

2)創建RMAN用戶

SQL>createuserrmanidentifiedbyrmandefaulttablespacersrmantemporarytablespacetemp;

3)給RMAN授予權限

SQL>grantconnect,resource,recovery_catalog_ownertorman;

4)打開RMAN

$rman

5)連接恢復目錄數據庫

RMAN>connectcatalogrman/rman@db

6)創建恢復目錄

RMAN>createcatalogtablespacetsrman在對某個數據庫進行備份之前,必須先在恢復目錄上注冊該數據庫,這一過程操作如下(假定目標數據庫連接字符串為db100)。

1)連接到恢復目錄數據庫

$rmanrman/rman@db

2)在RMAN中連接到目標數據庫(即要進行備份的數據庫)

RMAN>connecttargetsys/change_on_install@db100

3)注冊數據庫

RMAN>registerdatabase;

注冊完數據庫后,就可以進行數據庫的備份了。有完全數據庫備份、表空間備份、控制文件備份、和歸檔日志備份等。操作分別如下。

1)完全數據庫備份

要求:ARCHIVELOG模式,在DBOPEN的情況下進行數據庫完全備份。

RMAN>run{

allocatechannelc1type=disk;

backupdatabase;

releasechannelc1;

}

2)表空間備份

要求:ARCHIVELOG模式

RMAN>run{

allocatechannelc1type=disk;

backuptablespace“ts_users”filesperset3format‘aatst_%t%s.%p’;

releasechannelc1;

}

3)控制文件備份

RMAN>run{

allocatechannelc1type=disk;

backupcurrentcontrolfiletag=weekly_sat_backup;

releasechannelc1;

}

在對數據庫進行完全備份時,控制文件自動包含其中。也可以在表空間或數據文件的備份中包含一個控制文件。

RMAN>run{

allocatechannelc1type=disk;

backuptablespace“ts_users”

filesperset3format‘aatst_%t%s.%p’;

includecurrentcontrolfile;

releasechannelc1;

}

4)歸檔日志備份

通過查詢數據字典表V$ARCHIVED_LOG獲取要備份的日志序列號,然后執行命令:

RMAN>run{

allocatechannelc1type=disk;

backuparchiveloglowlogseq3highlogseq10thread1;

releasechannelc1;

}

Oracle的備份策略

正確的備份策略不僅能保證數據庫服務器的24*7的高性能的運行,還能保證備份與恢復的快速性與可靠性。我們將以RMAN的多級增量備份作為一個備份策略的例子來討論。采用多級備份就是為了減少每天備份所需要的時間,而又保證系統有良好的恢復性。恢復時間與備份時間要有一個權衡。比如只要進行一個數據庫的全備份,然后就只備份歸檔也可以保證能把數據庫恢復到最新的狀態,但是這樣的恢復時間將是不可容忍的。多級備份也正是為了解決這種問題,結合某些應用的特點,可以采用如下的備份策略:

&#61548;每個月做一個數據庫的全備份(包括所有的數據和只讀表空間);

&#61548;每個星期一做一次零級備份(不包含只讀表空間);

&#61548;每個星期三做一次一級備份;

&#61548;每天做一次二級備份。

&#61548;每天做一次恢復目錄的熱備份。

&#61548;任何數據庫的更改需要重新同步CATALOG目錄并重新備份(如添加數據文件)或重新備份(如修改表空間為只讀)。

&#61548;每次備份后都可以備份歸檔日志或定期備份歸檔日志。如果可能,可以直接備份到磁帶上。

Oracle的恢復

下面的操作約定恢復目錄存儲在db118中,目標數據庫是db100。

1.數據庫恢復

1)啟動SQL*PLUS,使用正確的init.ora文件,使用NOMOUNT選項啟動目標數據庫實例。

2)啟動RMAN并連接到恢復目錄,如下:

$rmancatalogrman/rman@db118

恢復管理器:Release9.2.0.1.0-Production

Copyright(c)1995,2002,OracleCorporation.Allrightsreserved.

連接到恢復目錄數據庫

RMAN>

3)連接到目標數據庫

RMAN>connecttargetinternal/oracle@db100

連接到目標數據庫:db(DBID=1142471523)

4)一旦連接到目標數據庫,執行restore命令執行全數據庫恢復

RMAN>run{

2>allocatechannelc1typedisk;

3>restoredatabase;

4>releasechannelc1;

}

2.表空間和數據文件恢復

要執行表空間或數據文件恢復,數據庫必須以ARCHIVELOG模式運行,并且用戶需要擁有介質恢復所需的歸檔重做日志文件。在試圖恢復表空間之前,必須保證表空間已脫機。RMAN命令如下:

run{

allocatechannelc1typedisk;

sql“altertablespaceusers_dataofflineimmediate”;

restoretablespaceusers_data;

recovertablespaceusers_data;

sql“altertablespaceusers_dataonline”;

}

上面的腳本執行了以下的工作:

1)RMAN分配通道從c1用于恢復操作。

2)將表空間users_data脫機

3)RMAN從備份集中恢復屬于表空間的數據文件

4)通過介質恢復提供所需的歸檔日志文件,恢復屬于表空間users_data的數據文件。

5)RMAN將表空間聯機。

在腳本執行期間,如果不能把數據文件恢復到指定位置,在執行restore命令前使用setnewname命令。

3.控制文件恢復

1)啟動SQL*PLUS,使用正確的init.ora文件,使用NOMOUNT選項啟動目標數據庫實例。

2)啟動RMAN并連接到恢復目錄,如下:

$rmancatalogrman/rman@ora8i.oracle

恢復管理器:Release9.2.0.1.0-Production

Copyright(c)1995,2002,OracleCorporation.Allrightsreserved.

連接到恢復目錄數據庫

RMAN>

3)連接到目標數據庫

RMAN>connecttargetinternal/oracle@demo.oracle

連接到目標數據庫:db(DBID=1142471523)

4)一旦連接到目標數據庫,執行restore命令恢復控制文件

RMAN>run{

2>allocatechannelc1typedisk;

3>restorecontrolfile;

4>}

小結

保證Oracle數據庫的安全是系統安全的重要組成部分,必須要設計完善的數據庫備份和恢復方案。Oracle提供的各種工具結合起來使用能夠使數據庫的備份和恢復變得簡單。在實際的Oracle數據庫的備份和恢復中,會有許多不通的和復雜的情況出現,針對不同的情況,要本著使數據具有最大的可恢復性和恢復時間最短的原則去進行數據庫的恢復,這需要大量的實踐和經驗積累。

參考文獻

[1]Oracle8iBackupandRecoveryGuideOracleDocument

[2]Oracle8iRecoveryManagerUser’sGuideandReferenceOracleDocument

[3]Oracle9i:ABeginner’sGuide(美)MichaelAbbeyMichaelCoreyIanAbramson2002.3機械工業出版社

[4]Oracle8i備份與恢復手冊(美)RamaVelpuriAnandAdkoli蔣蕊王磊等譯2001.9機械工業出版社