第一章. 概要
1、了解什么是備份
2、了解備份的重要性
3、理解數(shù)據(jù)庫(kù)的兩種運(yùn)行方式
4、理解不同的備份方式及其區(qū)別
5、了解正確的備份策略及其好處
第二章. 了解備份的重要性
可以說(shuō),從計(jì)算機(jī)系統(tǒng)出世的那天起,就有了備份這個(gè)概念,計(jì)算機(jī)以其強(qiáng)大的速度處理能力,取代了很多人為的工作,但是,往往很多時(shí)候,它又是那么弱不禁風(fēng),主板上的芯
片、主板電路、內(nèi)存、電源等任何一項(xiàng)不能正常工作,都會(huì)導(dǎo)致計(jì)算機(jī)系統(tǒng)不能正常工作。當(dāng)然,這些損壞可以修復(fù),不會(huì)導(dǎo)致應(yīng)用和數(shù)據(jù)的損壞。但是,如果計(jì)算機(jī)的硬盤(pán)損壞
,將會(huì)導(dǎo)致數(shù)據(jù)丟失,此時(shí)必須用備份恢復(fù)數(shù)據(jù)。
其實(shí),在我們的現(xiàn)實(shí)世界中,已經(jīng)就存在很多備份策略,如RAID技術(shù),雙機(jī)熱備,集群技術(shù)發(fā)展的不就是計(jì)算機(jī)系統(tǒng)的備份和高可用性嗎?有很多時(shí)候,系統(tǒng)的備份的確就能解決
數(shù)據(jù)庫(kù)備份的問(wèn)題,如磁盤(pán)介質(zhì)的損壞,往往從鏡相上面做簡(jiǎn)單的恢復(fù),或簡(jiǎn)單的切換機(jī)器就可以了。
但是,上面所說(shuō)的系統(tǒng)備份策略是從硬件的角度來(lái)考慮備份與恢復(fù)的問(wèn)題,這是需要代價(jià)的。我們所能選擇備份策略的依據(jù)是:丟是數(shù)據(jù)的代價(jià)與確保數(shù)據(jù)不丟失的代價(jià)之比。還
有的時(shí)候,硬件的備份有時(shí)根本滿足不了現(xiàn)實(shí)需要,假如你誤刪了一個(gè)表,但是你又想恢復(fù)的時(shí)候,數(shù)據(jù)庫(kù)的備份就變的重要了。ORACLE本身就提供了強(qiáng)大的備份與恢復(fù)策略,這
里我們只討論ORACLE備份策略,以下的備份都是指ORACLE數(shù)據(jù)庫(kù)備份,恢復(fù)將放到下一講中。
所謂備份,就是把數(shù)據(jù)庫(kù)復(fù)制到轉(zhuǎn)儲(chǔ)設(shè)備的過(guò)程。其中,轉(zhuǎn)儲(chǔ)設(shè)備是指用于放置數(shù)據(jù)庫(kù)拷貝的磁帶或磁盤(pán)。
能夠進(jìn)行什么樣的恢復(fù)依賴于有什么樣的備份。作為 DBA,有責(zé)任從以下三個(gè)方面維護(hù)數(shù)據(jù)庫(kù)的可恢復(fù)性:
·使數(shù)據(jù)庫(kù)的失效次數(shù)減到最少,從而使數(shù)據(jù)庫(kù)保持最大的可用性;
·當(dāng)數(shù)據(jù)庫(kù)不可避免地失效后,要使恢復(fù)時(shí)間減到最少,從而使恢復(fù)的效率達(dá)到最高;
·當(dāng)數(shù)據(jù)庫(kù)失效后,要確保盡量少的數(shù)據(jù)丟失或根本不丟失,從而使數(shù)據(jù)具有最大的可恢復(fù)性。
災(zāi)難恢復(fù)的最重要的工作是設(shè)計(jì)充足頻率的硬盤(pán)備份過(guò)程。備份過(guò)程應(yīng)該滿足系統(tǒng)要求的可恢復(fù)性。例如,如果數(shù)據(jù)庫(kù)可有較長(zhǎng)的關(guān)機(jī)時(shí)間,則可以每周進(jìn)行一次冷備份,并歸檔
重做日志,對(duì)于24*7的系統(tǒng),或許我們考慮的只能是熱備份。 如果每天都能備份當(dāng)然會(huì)很理想,但要考慮其現(xiàn)實(shí)性。企業(yè)都在想辦法降低維護(hù)成本,現(xiàn)實(shí)的方案才可能被采用。只
要仔細(xì)計(jì)劃,并想辦法達(dá)到數(shù)據(jù)庫(kù)可用性的底線,花少量的錢進(jìn)行成功的備份與恢復(fù)也是可能的。
第三章. 了解ORACLE的運(yùn)行方式
ORACLE數(shù)據(jù)庫(kù)有兩種運(yùn)行方式:一是歸檔方式(ARCHIVELOG),歸檔方式的目的是當(dāng)數(shù)據(jù)庫(kù)發(fā)生故障時(shí)最大限度恢復(fù)數(shù)據(jù)庫(kù),可以保證不丟失任何已提交的數(shù)據(jù);二是不歸檔方式
(NOARCHIVELOG),只能恢復(fù)數(shù)據(jù)庫(kù)到最近的回收點(diǎn)(冷備份或是邏輯備份)。我們根據(jù)數(shù)據(jù)庫(kù)的高可用性和用戶可承受丟失的工作量的多少,對(duì)于生產(chǎn)數(shù)據(jù)庫(kù),強(qiáng)烈要求采用為歸
檔方式;那些正在開(kāi)發(fā)和調(diào)試的數(shù)據(jù)庫(kù)可以采用不歸檔方式。
如何改變數(shù)據(jù)庫(kù)的運(yùn)行方式,在創(chuàng)建數(shù)據(jù)庫(kù)時(shí),作為創(chuàng)建數(shù)據(jù)庫(kù)的一部分,就決定了數(shù)據(jù)庫(kù)初始的存檔方式。一般情況下為NOARCHIVELOG方式。當(dāng)數(shù)據(jù)庫(kù)創(chuàng)建好以后,根據(jù)我們的
需要把需要運(yùn)行在歸檔方式的數(shù)據(jù)庫(kù)改成ARCHIVELOG方式。
3.1改變不歸檔方式為為歸檔方式
1.關(guān)閉數(shù)據(jù)庫(kù),備份已有的數(shù)據(jù),改變數(shù)據(jù)庫(kù)的運(yùn)行方式是對(duì)數(shù)據(jù)庫(kù)的重要改動(dòng),所以要對(duì)數(shù)據(jù)庫(kù)做備份,對(duì)可能出現(xiàn)的問(wèn)題作出保護(hù)。
2. 修改初試化參數(shù),使能自動(dòng)存檔修改(添加)初始化文件init[SID].ora參數(shù):
log_archive_start=true #啟動(dòng)自動(dòng)歸檔
log_archive_format=ARC%T%S.arc #歸檔文件格式
log_archive_dest=/arch12/arch #歸檔路徑
在8i中,可以最多有五個(gè)歸檔路徑,并可以歸檔到其它服務(wù)器,如備用數(shù)據(jù)庫(kù)(standby database)服務(wù)器
3.啟動(dòng)Instance到Mount狀態(tài),即加載數(shù)據(jù)庫(kù)但不打開(kāi)數(shù)據(jù)庫(kù):
$>SVRMGRL
SVRMGRL >connect internal
SVRMGRL >startup mount
4.發(fā)出修改命令
SVRMGRL >alter database archivelog;
SVRMGRL>alter database open;
3.2 改變歸檔狀態(tài)為不歸檔狀態(tài)
與以上步驟相同,但有些操作不一樣,主要是在以上的b操作中,現(xiàn)在為刪除或注釋該參數(shù),在d操作中,命令為
SVRMGRL >alter database noarchivelog;
注意,從歸檔方式轉(zhuǎn)換到非歸檔方式后一定要做一次數(shù)據(jù)庫(kù)的全冷備份,防止意外事件的發(fā)生。
第四章. ORACLE備份的分類
簡(jiǎn)單的按照備份進(jìn)行的方式,可以分為邏輯備份、冷備份(脫機(jī)備份)、熱備份(聯(lián)機(jī)備份),其實(shí)冷備份與熱備份又可以合稱為物理備份
按照備份的工具,可以分為EXP/IMP備份、OS拷貝、RMAN、第三方工具,如VERITAS
以下我們將從多個(gè)角度來(lái)說(shuō)明以上的各種備份方式
4.1 EXP/IMP邏輯備份
導(dǎo)入/導(dǎo)出是ORACLE幸存的最古老的兩個(gè)命令行工具了,其實(shí)我從來(lái)不認(rèn)為Exp/Imp是一種好的備份方式,正確的說(shuō)法是Exp/Imp只能是一個(gè)好的轉(zhuǎn)儲(chǔ)工具,特別是在小型數(shù)據(jù)庫(kù)的轉(zhuǎn)
儲(chǔ),表空間的遷移,表的抽取,檢測(cè)邏輯和物理沖突等中有不小的功勞。當(dāng)然,我們也可以把它作為小型數(shù)據(jù)庫(kù)的物理備份后的一個(gè)邏輯輔助備份,也是不錯(cuò)的建議。
對(duì)于越來(lái)越大的數(shù)據(jù)庫(kù),特別是TB級(jí)數(shù)據(jù)庫(kù)和越來(lái)越多數(shù)據(jù)倉(cāng)庫(kù)的出現(xiàn),EXP/IMP越來(lái)越力不從心了,這個(gè)時(shí)候,數(shù)據(jù)庫(kù)的備份都轉(zhuǎn)向了RMAN和第三方工具。下面我們還是簡(jiǎn)要介紹
一下EXP/IMP的使用。
4.1.1 使用方法
Exp parameter_name=value
Or Exp parameter_name=(value1,value2……)
只要輸入?yún)?shù)help=y就可以看到所有幫助
如:
C:>set nls_lang=simplified chinese_china.zhs16gbk
C:>exp -help
Export: Release 8.1.6.0.0 - Production on 星期四 4月 10 19:09:21 2003
(c) Copyright 1999 Oracle Corporation. All rights reserved.
通過(guò)輸入 EXP 命令和用戶名/口令,您可以
在用戶 / 口令之后的命令:
實(shí)例: EXP SCOTT/TIGER
或者,您也可以通過(guò)輸入跟有各種參數(shù)的 EXP 命令來(lái)控制“導(dǎo)出”
的運(yùn)行方式。要指定參數(shù),您可以使用關(guān)鍵字:
格式: EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
實(shí)例: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)
或 TABLES=(T1: P1,T1: P2),如果 T1 是分區(qū)表
USERID 必須是命令行中的第一個(gè)參數(shù)。
關(guān)鍵字 說(shuō)明(默認(rèn)) 關(guān)鍵字 說(shuō)明(默認(rèn))
--------------------------------------------------------------------------
USERID 用戶名/口令 FULL 導(dǎo)出整個(gè)文件 (N)
BUFFER 數(shù)據(jù)緩沖區(qū)的大小 OWNER 所有者用戶名列表
FILE 輸出文件 (EXPDAT.DMP) TABLES 表名列表
COMPRESS 導(dǎo)入一個(gè)范圍 (Y) RECORDLENGTH IO 記錄的長(zhǎng)度
GRANTS 導(dǎo)出權(quán)限 (Y) INCTYPE 增量導(dǎo)出類型
INDEXES 導(dǎo)出索引 (Y) RECORD 跟蹤增量導(dǎo)出 (Y)
ROWS 導(dǎo)出數(shù)據(jù)行 (Y) PARFILE 參數(shù)文件名
CONSTRAINTS 導(dǎo)出限制 (Y) CONSISTENT 交叉表一致性
LOG 屏幕輸出的日志文件 STATISTICS 分析對(duì)象 (ESTIMATE)
DIRECT 直接路徑 (N) TRIGGERS 導(dǎo)出觸發(fā)器 (Y)
FEEDBACK 顯示每 x 行 (0) 的進(jìn)度
FILESIZE 各轉(zhuǎn)儲(chǔ)文件的最大尺寸
QUERY 選定導(dǎo)出表子集的子句
下列關(guān)鍵字僅用于可傳輸?shù)谋砜臻g
TRANSPORT_TABLESPACE 導(dǎo)出可傳輸?shù)谋砜臻g元數(shù)據(jù) (N)
TABLESPACES 將傳輸?shù)谋砜臻g列表
在沒(méi)有警告的情況下成功終止導(dǎo)出。
C:>
幫助已經(jīng)很詳細(xì)的說(shuō)明了參數(shù)的意義和使用方法,并列舉了幾個(gè)簡(jiǎn)單的例子,注意的是,從8i開(kāi)始,已經(jīng)開(kāi)始支持?jǐn)?shù)據(jù)子集的方法,就是可以指定自己的Where條件,可以從表中導(dǎo)
出一行或多行數(shù)據(jù)。
注意上面的set nls_lang=simplified chinese_china.zhs16gbk,通過(guò)設(shè)置環(huán)境變量,可以讓exp的幫助以中文顯示,如果set nls_lang=American_america.字符集,那么你的幫助
就是英文的了。
增量和累計(jì)導(dǎo)出必須在全庫(kù)方式下才有效,而且,大多數(shù)情況下,增量和累計(jì)導(dǎo)出并沒(méi)有想象中的那么有效。ORACLE從9i開(kāi)始,不再支持增量導(dǎo)出和累計(jì)導(dǎo)出。
4.1.2 表空間傳輸
表空間傳輸是8i新增加的一種快速在數(shù)據(jù)庫(kù)間移動(dòng)數(shù)據(jù)的一種辦法,是把一個(gè)數(shù)據(jù)庫(kù)上的格式數(shù)據(jù)文件附加到另外一個(gè)數(shù)據(jù)庫(kù)中,而不是把數(shù)據(jù)導(dǎo)出成Dmp文件,這在有些時(shí)候是非
常管用的,因?yàn)閭鬏敱砜臻g移動(dòng)數(shù)據(jù)就象復(fù)制文件一樣快。
關(guān)于傳輸表空間有一些規(guī)則,即:
·源數(shù)據(jù)庫(kù)和目標(biāo)數(shù)據(jù)庫(kù)必須運(yùn)行在相同的硬件平臺(tái)上。
·源數(shù)據(jù)庫(kù)與目標(biāo)數(shù)據(jù)庫(kù)必須使用相同的字符集。
·源數(shù)據(jù)庫(kù)與目標(biāo)數(shù)據(jù)庫(kù)一定要有相同大小的數(shù)據(jù)塊
·目標(biāo)數(shù)據(jù)庫(kù)不能有與遷移表空間同名的表空間
·SYS的對(duì)象不能遷移
·必須傳輸自包含的對(duì)象集
·有一些對(duì)象,如物化視圖,基于函數(shù)的索引等不能被傳輸
可以用以下的方法來(lái)檢測(cè)一個(gè)表空間或一套表空間是否符合傳輸標(biāo)準(zhǔn):
exec sys.dbms_tts.transport_set_check(‘tablespace_name’,true);
select * from sys.transport_set_violation;
如果沒(méi)有行選擇,表示該表空間只包含表數(shù)據(jù),并且是自包含的。對(duì)于有些非自包含的表空間,如數(shù)據(jù)表空間和索引表空間,可以一起傳輸。
以下為簡(jiǎn)要使用步驟,如果想?yún)⒖荚敿?xì)使用方法,也可以參考ORACLE聯(lián)機(jī)幫助。
1.設(shè)置表空間為只讀(假定表空間名字為APP_Data 和APP_Index)
alter tablespace app_data read only;
alter tablespace app_index read only;
2.發(fā)出EXP命令
SQL>host exp userid=”””sys/password as sysdba”””
transport_tablespace=y tablespace=(app_data, app_index)
以上需要注意的是
·為了在SQL中執(zhí)行EXP,USERID必須用三個(gè)引號(hào),在UNIX中也必須注意避免“/”的使用
·在816和以后,必須使用sysdba才能操作
·這個(gè)命令在SQL中必須放置在一行(這里是因?yàn)轱@示問(wèn)題放在了兩行)
3.拷貝數(shù)據(jù)文件到另一個(gè)地點(diǎn),即目標(biāo)數(shù)據(jù)庫(kù)
可以是cp(unix)或copy(windows)或通過(guò)ftp傳輸文件(一定要在bin方式)
4.把本地的表空間設(shè)置為讀寫(xiě)
5.在目標(biāo)數(shù)據(jù)庫(kù)附加該數(shù)據(jù)文件
imp file=expdat.dmp userid=”””sys/password as sysdba”””
transport_tablespace=y
“datafile=(c:tempapp_data,c:tempapp_index)”
6.設(shè)置目標(biāo)數(shù)據(jù)庫(kù)表空間為讀寫(xiě)
alter tablespace app_data read write;
alter tablespace app_index read write;
4.1.3 導(dǎo)出/導(dǎo)入與字符集
明白ORACLE的多國(guó)語(yǔ)言設(shè)置,ORACLE多國(guó)語(yǔ)言設(shè)置是為了支持世界范圍的語(yǔ)言與字符集,一般對(duì)語(yǔ)言提示,貨幣形式,排序方式和CHAR,VARCHAR2,CLOB,LONG字段的數(shù)據(jù)的顯示等有
效。ORACLE的多國(guó)語(yǔ)言設(shè)置最主要的兩個(gè)特性就是國(guó)家語(yǔ)言設(shè)置與字符集設(shè)置,國(guó)家語(yǔ)言設(shè)置決定了界面或提示使用的語(yǔ)言種類,字符集決定了數(shù)據(jù)庫(kù)保存與字符集有關(guān)數(shù)據(jù)(如
文本)時(shí)候的編碼規(guī)則。正如剛才上面的一個(gè)小例子,環(huán)境變量NLS_LANG的不同,導(dǎo)致EXP幫助發(fā)生變化,這就是多國(guó)語(yǔ)言設(shè)置的作用(NLS_LANG包含國(guó)家語(yǔ)言設(shè)置與字符集設(shè)置,
這里起作用的是國(guó)家語(yǔ)言設(shè)置,而不是字符集)。
ORACLE字符集設(shè)定,分為數(shù)據(jù)庫(kù)字符集和客戶端字符集環(huán)境設(shè)置。在數(shù)據(jù)庫(kù)端,字符集在創(chuàng)建數(shù)據(jù)庫(kù)的時(shí)候設(shè)定,并保存在數(shù)據(jù)庫(kù)props$表中,對(duì)于8i以上產(chǎn)品,已經(jīng)可以采用
“Alter database character set 字符集”來(lái)修改數(shù)據(jù)庫(kù)的字符集,但也僅僅是從子集到超集,不要通過(guò)update props$來(lái)修改字符集,如果是不支持的轉(zhuǎn)換,可能會(huì)失去所有與
字符集有關(guān)的數(shù)據(jù),就是支持的轉(zhuǎn)換,也可能導(dǎo)致數(shù)據(jù)庫(kù)的不正常工作。字符集分為單字節(jié)字符集與多字節(jié)字符集,US7ASCII就是典型的單字節(jié)字符集,在這種字符集中
length=lengthb,而ZHS16GBK就是常用的雙字節(jié)字符集,在這里lengthb=2*length。
在客戶端的字符集環(huán)境比較簡(jiǎn)單,主要就是環(huán)境變量或注冊(cè)表項(xiàng)NLS_LANG,注意NLS_LANG的優(yōu)先級(jí)別為:參數(shù)文件à注冊(cè)表à環(huán)境變量àalter session。NLS_LANG的組成為“國(guó)家語(yǔ)
言設(shè)置.字符集”,如nls_lang=simplified chinese_china.zhs16gbk??蛻舳说淖址詈门c數(shù)據(jù)庫(kù)端一樣(國(guó)家語(yǔ)言設(shè)置可以不一樣,如zhs16gbk的字符集,客戶端可以是
nls_lang =simplified chinese_china.zhs16gbk或Ameircan_America.zhs16gbk,都不影響數(shù)據(jù)庫(kù)字符的正常顯示),如果字符集不一樣,而且字符集的轉(zhuǎn)換也不兼容,那么客戶
端的數(shù)據(jù)顯示與導(dǎo)出/導(dǎo)入的與字符集有關(guān)的數(shù)據(jù)將都是亂碼。
使用一點(diǎn)點(diǎn)技巧,就可以使導(dǎo)出/導(dǎo)入在不同的字符集的數(shù)據(jù)庫(kù)上轉(zhuǎn)換數(shù)據(jù)。這里需要一個(gè)2進(jìn)制文件編輯工具即可,如uedit32。用編輯方式打開(kāi)導(dǎo)出的dmp文件,獲取2、3字節(jié)的
內(nèi)容,如00 01,先把它轉(zhuǎn)換為10進(jìn)制數(shù),為1,使用函數(shù)NLS_CHARSET_NAME即可獲得該字符集:
SQL> select nls_charset_name(1) from dual;
NLS_CHARSET_NAME(1)
-------------------
US7ASCII
可以知道該dmp文件的字符集為US7ASCII,如果需要把該dmp文件的字符集換成ZHS16GBK,則需要用NLS_CHARSET_ID獲取該字符集的編號(hào):
SQL> select nls_charset_id('zhs16gbk') from dual;
NLS_CHARSET_ID('ZHS16GBK')
--------------------------
852
把852換成16進(jìn)制數(shù),為354,把2、3字節(jié)的00 01換成03 54,即完成了把該dmp文件字符集從us7ascii到zhs16gbk的轉(zhuǎn)化,這樣,再把該dmp文件導(dǎo)入到zhs16gbk字符集的數(shù)據(jù)庫(kù)就
可以了。(注意,十進(jìn)制數(shù)與十六進(jìn)制之間的轉(zhuǎn)換,想明白其中的道理)
4.1.4 跨版本使用Exp/Imp
Exp/Imp很多時(shí)候,可以跨版本使用,如在版本7與版本8之間導(dǎo)出導(dǎo)入數(shù)據(jù),但這樣做必須選擇正確的版本,規(guī)則為:
·總是使用IMP的版本匹配數(shù)據(jù)庫(kù)的版本,如果要導(dǎo)入到816,則使用816的導(dǎo)入工具。
·總是使用EXP的版本匹配兩個(gè)數(shù)據(jù)庫(kù)中低的那個(gè)版本,如在815與816之間互導(dǎo),則使用815的EXP工具。
4.2 OS備份
操作系統(tǒng)備份有兩類,冷備份(Cold backup)與熱備份(Hot backup),操作系統(tǒng)備份與以上的邏輯備份有本質(zhì)的區(qū)別。邏輯備份提取數(shù)據(jù)庫(kù)的數(shù)據(jù)內(nèi)容,而不備份物理數(shù)據(jù)塊。
而操作系統(tǒng)備份則是拷貝整個(gè)的數(shù)據(jù)文件。
4.2.1 冷備份
在文件級(jí)備份開(kāi)始前數(shù)據(jù)庫(kù)必須徹底關(guān)閉。關(guān)閉操作必須用帶有normal、immediate、transaction選項(xiàng)的shutdown來(lái)執(zhí)行。
數(shù)據(jù)庫(kù)使用的每個(gè)文件都被備份下來(lái),這些文件包括:
☆所有數(shù)據(jù)文件
☆所有控制文件
☆所有聯(lián)機(jī)REDO LOG 文件
☆I(lǐng)NIT.ORA文件(可選)
作冷備份一般步驟是:
a. 正常關(guān)閉要備份的實(shí)例(instance);
b. 備份整個(gè)數(shù)據(jù)庫(kù)到一個(gè)目錄
c. 啟動(dòng)數(shù)據(jù)庫(kù)
如
SVRMGRL>connect internal
SVRMGRL >shutdown immediate
SVRMGRL >! cp <file> <backup directory>
或
SVRMGRL >!tar cvf /dev/rmt/0 /u01/oradata/prod
SVRMGRL >startup
注意:如果利用腳本對(duì)數(shù)據(jù)庫(kù)進(jìn)行冷備份,必須對(duì)關(guān)閉數(shù)據(jù)庫(kù)的命令進(jìn)行邏輯檢查,如果發(fā)生關(guān)閉數(shù)據(jù)庫(kù)的命令不能正常執(zhí)行而導(dǎo)致數(shù)據(jù)庫(kù)沒(méi)有正常關(guān)閉,那么,所有的冷備份將
回是無(wú)效的。
4.2.2熱備份
熱備份是當(dāng)數(shù)據(jù)庫(kù)打開(kāi)并對(duì)用戶有效是的OS級(jí)的數(shù)據(jù)備份。熱備份只能用于ARCHIVELOG方式的數(shù)據(jù)庫(kù)。在數(shù)據(jù)文件備份之前,對(duì)應(yīng)的表空間必須通過(guò)使用ALTER TABLESPACE ……
BEGIN BACKUP以備份方式放置。然后組成表空間的數(shù)據(jù)文件可以使用類似冷備份的操作系統(tǒng)命令進(jìn)行拷貝。在數(shù)據(jù)文件用操作系統(tǒng)命令拷貝后,應(yīng)使用ALTER TABLESPACE …… END
BACKUP命令使表空間脫離熱備份方式。
熱備份沒(méi)有必要備份聯(lián)機(jī)日志,但必須是歸檔狀態(tài),在實(shí)例恢復(fù)的時(shí)候,可能需要用到歸檔日志。當(dāng)前聯(lián)機(jī)日志一定要保護(hù)好或是處于鏡相狀態(tài),當(dāng)前聯(lián)機(jī)日志的損壞,對(duì)于數(shù)據(jù)
庫(kù)的損壞是巨大的,只能以數(shù)據(jù)的丟失來(lái)進(jìn)行數(shù)據(jù)庫(kù)的恢復(fù)工作。
對(duì)于臨時(shí)表空間,存放的是臨時(shí)信息,在熱備份是也可以考慮不用備份,如果臨時(shí)文件發(fā)生故障,可以刪除該數(shù)據(jù)文件與表空間,重建一個(gè)臨時(shí)表空間。
熱備份的優(yōu)點(diǎn)是顯而易見(jiàn)的
---- a.可在表空間或數(shù)據(jù)文件級(jí)備份,備份時(shí)間短。
---- b.備份時(shí)數(shù)據(jù)庫(kù)仍可使用。
---- c.可達(dá)到秒級(jí)恢復(fù)(恢復(fù)到某一時(shí)間點(diǎn)上)。
---- d.可對(duì)幾乎所有數(shù)據(jù)庫(kù)實(shí)體作恢復(fù)。
---- e.恢復(fù)是快速的,在大多數(shù)情況下在數(shù)據(jù)庫(kù)仍工作時(shí)恢復(fù)。
操作系統(tǒng)作熱備份的一般步驟為:
1. 連接數(shù)據(jù)庫(kù)
SVRMGRL>connect internal;
2. 將需要備份的表空間(如User)設(shè)置為備份方式
SVRMGRL>Alter tablespace User begin backup;
3. 拷貝數(shù)據(jù)文件
SVRMGRL>!cp /u01/oradata/prod/user01.ora /backup/prod/user01.ora
Or
$cp cp /u01/oradata/prod/user01.ora /backup/prod/user01.ora
4. 在數(shù)據(jù)文件拷貝完成后,將表空間拖體備份方式
SVRMGRL>Alter tablespace User end backup;
5. 對(duì)所有需要備份的表空間重復(fù)2,3,4
6. 使用如下的命令備份控制文件ALTER DATABSE …… BACKUP CONTROLFILE
如備份成二進(jìn)制文件
alter database backup controlfile to ‘new fielname’;
備份成文本文件
alter database backup controlfile to trace;
因?yàn)闊醾浞莸臅r(shí)候,用戶還在操作數(shù)據(jù)庫(kù),所以,最好是每個(gè)表空間處于備份狀態(tài)的時(shí)間最短,這樣就要求一個(gè)表空間一個(gè)表空間的備份,不要一起使表空間處于備份狀態(tài)而同時(shí)
拷貝數(shù)據(jù)文件。
注意:如果在熱備份的時(shí)候如果數(shù)據(jù)庫(kù)中斷(如斷電),那么在重新啟動(dòng)數(shù)據(jù)庫(kù)的時(shí)候,數(shù)據(jù)庫(kù)將提示有數(shù)據(jù)文件需要恢復(fù),你需要把正在斷電時(shí)候的處于備份狀態(tài)的數(shù)據(jù)文件通
過(guò)ALTER TABLESPACE …… END BACKUP結(jié)束備份方式。具體哪個(gè)數(shù)據(jù)文件或表空間處于備份狀態(tài),可以通過(guò)v$backup與v$datafile來(lái)獲得
4.3 RMAN(備份與恢復(fù)管理器)
4.3.1 使用RMAN進(jìn)行備份
4.3.1.1 了解RMAN
Recovery manager(RMAN)是ORACLE提供的DBA工具,用語(yǔ)管理備份和恢復(fù)操作。RMAN只能用于ORACLE8或更高的版本中。它能夠備份整個(gè)數(shù)據(jù)庫(kù)或數(shù)據(jù)庫(kù)部件,其中包括表空間、
數(shù)據(jù)文件,控制文件和歸檔文件。RMAN可以按要求存取和執(zhí)行備份和恢復(fù)。
RMAN備份有如下優(yōu)點(diǎn)
☆ 支持在線熱備份
☆ 支持多級(jí)增量備份
☆ 支持并行備份、恢復(fù)
☆ 減少所需要備份量
☆ 備份、恢復(fù)使用簡(jiǎn)單
重要的是,使用恢復(fù)管理器允許您進(jìn)行增量數(shù)據(jù)塊級(jí)的備份(這個(gè)與導(dǎo)出/導(dǎo)入的增量截然不同)。增量RMAN備份是時(shí)間和空間有效的,因?yàn)樗麄冎粋浞葑陨洗蝹浞菀詠?lái)有變化的那
些數(shù)據(jù)塊。另一個(gè)空間有效的RMAN特性是它只備份數(shù)據(jù)文件中使用的數(shù)據(jù)塊,忽略空的,未用的數(shù)據(jù)塊,這個(gè)對(duì)于預(yù)分配空間的表空間有很大的好處。
從9i開(kāi)始,還增加了RMAN的數(shù)據(jù)塊級(jí)別的恢復(fù),可以進(jìn)一步減少數(shù)據(jù)庫(kù)恢復(fù)時(shí)間。
RMAN支持以下不同類型的備份
FULL 數(shù)據(jù)庫(kù)全備份,包括所有的數(shù)據(jù)塊
INCREMENTAL 增量備份,只備份自上次增量備份以來(lái)修改過(guò)的數(shù)據(jù)塊。需要一個(gè)0級(jí)的增量作為增量的基礎(chǔ),可以支持7級(jí)增量。
OPEN 在數(shù)據(jù)庫(kù)打開(kāi)的時(shí)候使用
CLOSED 在數(shù)據(jù)庫(kù)安裝(MOUNT)但不打開(kāi)的時(shí)候備份,關(guān)閉備份可以是CONSISTENT或IN CONSISTENT類型的。
CONSISTENT 在數(shù)據(jù)庫(kù)安裝,單不打開(kāi),并且在安裝之前數(shù)據(jù)庫(kù)被徹底關(guān)閉(而不是被破壞或異常退出)時(shí)使用。CONSISTENT備份可以簡(jiǎn)單的進(jìn)行復(fù)原(RESTORE)而不是恢復(fù)
(RECOVER)
INCONSISTENT 在數(shù)據(jù)庫(kù)打開(kāi)或安裝(但不打開(kāi))時(shí)使用。在該數(shù)據(jù)庫(kù)正常關(guān)閉或崩潰后,INCONSISTENT備份需要恢復(fù)。
理解BACKUP,RESTORE,RECOVER命令,這是RMAN最基本的三個(gè)命令,可以進(jìn)行數(shù)據(jù)庫(kù)的備份,復(fù)原以及恢復(fù)操作。
4.3.1.2 了解恢復(fù)目錄
理解恢復(fù)目錄,RMAN可以在沒(méi)有恢復(fù)目錄(NOCATALOG)下運(yùn)行,這個(gè)時(shí)候備份信息保存在控制文件。保存在控制文件的備份信息是很危險(xiǎn)的,如果控制文件的破壞將導(dǎo)致備份信息的
丟失與恢復(fù)的失敗,而且,沒(méi)有恢復(fù)目錄,很多RMAN的命令將不被支持。所以對(duì)于重要的數(shù)據(jù)庫(kù),建議創(chuàng)建恢復(fù)目錄,恢復(fù)目錄也是一個(gè)數(shù)據(jù)庫(kù),只不過(guò)這個(gè)數(shù)據(jù)庫(kù)用來(lái)保存?zhèn)浞?/p>
聯(lián)系客服