正在看的ORACLE教程是:有關(guān)Oracle數(shù)據(jù)庫的備份情況。 一、意義:
當(dāng)我們使用一個數(shù)據(jù)庫時,總希望數(shù)據(jù)庫的內(nèi)容是可靠的、正確的,但由于計(jì)算機(jī)系統(tǒng)的故障(硬件故障、網(wǎng)絡(luò)故障、進(jìn)程
故障和系統(tǒng)故障)影響數(shù)據(jù)庫系統(tǒng)的操作,影響數(shù)據(jù)庫中數(shù)據(jù)的正確性,甚至破壞數(shù)據(jù)庫,使數(shù)據(jù)庫中全部或部分?jǐn)?shù)據(jù)丟
失。因此當(dāng)發(fā)生上述故障后,希望能重新建立一個完整的數(shù)據(jù)庫,該處理稱為數(shù)據(jù)庫恢復(fù)。恢復(fù)子系統(tǒng)是數(shù)據(jù)庫管理系統(tǒng)
的一個重要組成部分?;謴?fù)處理隨所發(fā)生的故障類型所影響的結(jié)構(gòu)而變化。
二、備份的方法
ORACLE數(shù)據(jù)庫有三種標(biāo)準(zhǔn)的備份。導(dǎo)出/導(dǎo)入(EXPORT/IMPORT) 、冷備份、熱備份。
導(dǎo)出備份是一種邏輯備份,這種方法包括讀取一系列的數(shù)據(jù)庫日志,并寫入文件中,這些日志的讀取與其所處位置無關(guān)。
冷備份和熱備份是物理備份(也稱低級備份),它涉及到組成數(shù)據(jù)庫的文件,但不考慮邏輯內(nèi)容。
下面我們分別介紹一下這三種備份方法及其特點(diǎn):
(一)、導(dǎo)出/導(dǎo)入(EXPORT/IMPORT)
EXPORT/IMPORT是用來將ORACLE中數(shù)據(jù)移出/移入數(shù)據(jù)庫。
1、EXPORT將數(shù)據(jù)庫中數(shù)據(jù)備份成一個二進(jìn)制系統(tǒng)文件稱為“導(dǎo)出轉(zhuǎn)儲文件”(EXPORT DUMP FILE),并將重新生成數(shù)據(jù)庫寫
入文件中。
它有三種模式:
a.用戶模式:導(dǎo)出用戶所有對象以及對象中的數(shù)據(jù);
b.表模式:導(dǎo)出用戶所有表或者指定的表;
c.整個數(shù)據(jù)庫:導(dǎo)出數(shù)據(jù)庫中所有對象。
它的備份有三種類型:
a.完全型(COMPLETE EXPORT):備份整個數(shù)據(jù)庫;
b.積累型(COMULATIVE ERPORT):備份上一次積累型備份所改變的數(shù)據(jù);
c.增量型(INCREAMENTAL EXPORT):備份上一次備份后改變的數(shù)據(jù)。
EXPORT 的命令可以交互式進(jìn)行,各參數(shù)的具體含義見附錄。
在進(jìn)行導(dǎo)出備份時我們要考慮一點(diǎn)問題,那就是導(dǎo)出的一致性,在導(dǎo)出過程 中導(dǎo)出每讀一次就讀取一個表,因而盡管導(dǎo)出
是在一個特點(diǎn)時自己開始的,但不同的表讀取的時間不同,因此,導(dǎo)出開始讀一個表時,此時表中的數(shù)據(jù)才是導(dǎo)出的數(shù)
據(jù),這樣當(dāng)大多數(shù)表按內(nèi)部關(guān)鍵字和外部關(guān)鍵字相互聯(lián)系時,在導(dǎo)出過程中這些相關(guān)聯(lián)表的改變就會導(dǎo)致導(dǎo)出的不一致
性,要避開這個,我們可以將導(dǎo)出過程安排在不對表操作的時候進(jìn)行。另外,當(dāng)ORACLE中RESTRICTEP CONSISTENT 選項(xiàng)就
可以保證導(dǎo)出數(shù)據(jù)一致性。2、IMPORT導(dǎo)入:
導(dǎo)入的過程是導(dǎo)出的逆過程,這個命令先讀取導(dǎo)出來的導(dǎo)出轉(zhuǎn)儲二進(jìn)制文件,并運(yùn)行文件,恢復(fù)對象用戶和數(shù)據(jù)。
IMPORT命令執(zhí)行的方法和EXPORT方案有關(guān)。
1、如果EXPORT所實(shí)施的是完全型方案(FULL)則在IMPORT時所有的數(shù)據(jù)對象,包括表空間,數(shù)據(jù)文件,用戶都會在導(dǎo)入時創(chuàng)
建,但考慮到數(shù)據(jù)庫中的物理布局,預(yù)先創(chuàng)建表空間和用戶是有用的。
2、如果EXPORT使用的是INCREMENTAL/CUMULATIVE方式,則需要預(yù)先設(shè)置好表空間、用戶、數(shù)據(jù)文件。
(二):冷備份
冷備份發(fā)生在數(shù)據(jù)庫已經(jīng)正常關(guān)閉的情況下,當(dāng)正常關(guān)閉時會提供給我們一個完整的數(shù)據(jù)庫。
數(shù)據(jù)庫使用的每個文件都被備份下來,這些文件包括:
☆所有數(shù)據(jù)文件
☆所有控制文件
☆所有聯(lián)機(jī)REDO LOG 文件
☆I(lǐng)NIT.ORA文件(可選)
值得注意的是冷備份必須是數(shù)據(jù)庫關(guān)閉的情況下完成,當(dāng)數(shù)據(jù)庫開著的時候,執(zhí)行數(shù)據(jù)庫文件系統(tǒng)備份無效。
作冷備份一般步驟是:
1:正常關(guān)閉要備份的實(shí)例(instance);
2: 備份整個數(shù)據(jù)庫到一個目錄
3:啟動數(shù)據(jù)庫
1: SQLDBA>connect internal
SQLDBA>shutdown normal
2: SQLDBA>! cp
或
SQLDBA>!tar cvf /dev/rmt/0 /wwwdg/oracle
3: SQLDBA>startup
(三)熱備份(ACHIRELOG)
數(shù)據(jù)庫需要二十四小時運(yùn)行,而且隨時有新的數(shù)據(jù)加入.數(shù)據(jù)丟失將影響整個公司.采用archivelog mode物理備份.
?設(shè)置數(shù)據(jù)庫為automatic archivelog mode,
#su - oracle
%svrmgrl
svrmgrl>connect internal
svrmgrl>startup mount
svrmgrl>alter database archivelog
svrmgrl>shutdown
svrmgrl>exit
%vi initoracle7.ora
加入log_archive_start = true # if you want automatic archiving
log_archive_dest = $ORACLE_HOME/dbs/arch
log_archive_format = log%s.arc
%dbstart
%ps -ef|grep arch
oracle 1743 1 0 15:20:20 ? 0:00 ora_arch_oracle7
注:oracle database is in automatic archivelog mode
?full offline entire database backup, 當(dāng)數(shù)據(jù)庫初始完成后 這份備份是將來備份的基礎(chǔ)。它提供了所有與數(shù)據(jù)庫有關(guān)
的拷貝.
%dbshut
%cp /oracle/oradata/oracle7/system.dbf
/oracle/oradata/oracle7/rbs.dbf
/oracle/oradata/oracle7/temp.dbf
/oracle/oradata/oracle7/tools.dbf
/oracle/oradata/oracle7/users.dbf
/oraclecle/app/oracle/product/7.3.2/dbs/application.dbf
/oracle/app/oracle/product/7.3.2/dbs/apptmpsp.dbf
/oracle/app/oracle/product/7.3.2/dbs/apprlbksp.dbf
/oracle/oradata/oracle7/redooracle.log
/oracle/oradata/oracle7/control1.ctl
/oracle/oradata/oracle7/control2.ctl
/oracle/oradata/oracle7/control3.ctl
%dbstart
注:以上*.dbf文件為數(shù)據(jù)文件,*.log文件為日志文件,*.ctl文件為控制文件
%exit
%tar uvf /dev/rmt/0
注:如果為oracle 7.2 ,則copy 相應(yīng)的 data files,relog files,control files.
6.3、每天做一次 partial online with archiving backups .
#su - oracle
%svrmgrl
%svrmgrl>connect internal
%svrmgrl>alter tablespace billsp begin backup
%svrmgrl>alter tablespace billtmpsp begin backup
%svrmgrl>alter tablespace billrlbksp begin backup
%svrmgrl>alter tablespace system begin backup
%svrmgrl>alter tablespace rbs begin backup
%svrmgrl>alter tablespace temp begin backup
%svrmgrl>alter tablespace tools begin backup
%svrmgrl>alter tablespace users begin backup
%svrmgrl>host cp all datafile to the backup storage. #文件名如第一步中以.dbf結(jié)尾的.
%svrmgrl>alter tablespace billsp end backup
%svrmgrl>alter tablespace billtmpsp end backup
%svrmgrl>alter tablespace b
[1] [2] [3] 下一頁
正在看的ORACLE教程是:有關(guān)Oracle數(shù)據(jù)庫的備份情況。illrlbksp end backup
%svrmgrl>alter tablespace system end backup
%svrmgrl>alter tablespace rbs end backup
%svrmgrl>alter tablespace temp end backup
%svrmgrl>alter tablespace tools end backup
%svrmgrl>alter tablespace users end backup 做一個sql文件,如上所寫.
The billing system can recover to the point of failure when the failure occur.
七、備份文件的恢復(fù):
7.1恢復(fù)文件:
以下是對"/etc/passwd"文件的恢復(fù)
(、放入正確的磁帶
(、運(yùn)行以下命令恢復(fù)"/etc/passwd"文件
# rsh www mt -f /dev/rmt/0 rew
( 找到最近的磁帶,向前進(jìn)帶到最近的"/etc/passwd",比如要找星期三的"/etc/passwd"文件,運(yùn)行如下命令)
#rsh www mt -f /dev/rmt/0n fsf 2
# ufsrestore if www:/dev/rmt/0n
ufsrestore > ls
.:
etc/
ufsrestore > cd etc
ufsrestore > ls
./etc:
passwd
ufsrestore > add passwd
Warnign :./etc:File exists
ufsrestore > verbose
verbose mode on
ufsrestore > extract
Extract requested files
You have not read any volumes yet .
Unless you know which volume your file(s) are on you should start witch the last volume and work to wards
the first.
Specify next volume #:1
extract file ./etc/passwd
Add links
Set directory mode ,ower,and times.
set owner /mode for .?(yn)n
Directories already exit , set mode anyway?(yn)y
ufsrestore >quit
熱備份可以在數(shù)據(jù)庫打開打情況下進(jìn)行,一般通過使用Alter命令改變表空間的狀態(tài)來開始進(jìn)行備份的,備份完成后,
要恢其原來狀態(tài),否則redo log 會錯配,引起數(shù)據(jù)庫下次啟動時對受影響的表空間進(jìn)行完全覆蓋。熱備份的要求是:
1.熱備份工作必需要求數(shù)據(jù)庫在Archivelog 方式下操作,在SQLDBA狀態(tài)下用alter database archivelog|noarchivelog命
令可改變備份的模式。
2.熱備份只能在數(shù)據(jù)庫不使用或使用率低的情況下進(jìn)行。
3.熱備份需要大量的檔案空間。
一般情況,Oracle 以循環(huán)的方式寫入Online redo log 文件,當(dāng)填滿第一個redo log文件后寫第二個,直至最后一個,最
后一個被填滿后,后臺進(jìn)程LGWR就覆蓋第一個,在Archivelog方式下,后臺進(jìn)程ARCH在每一個redo log 文件被覆蓋前,給
它作一個拷貝,一般,這些文檔的redo log 文件被寫入磁盤或磁帶中。如果磁盤空間夠用,建議使用磁盤,這樣可大大減
少完成備份所需的時間。
在作熱備份之前,要將config.ora文件中的log_archive_start 設(shè)為true 將log_archive_dest
規(guī)定archive redo log 文件的位置:
log_archive_dest=/wwwdg/oracle/arch/arch
log_archive_start=true
一旦數(shù)據(jù)庫運(yùn)行在archivelog狀態(tài)下,就可以作備份了。熱備份的命令文件由三部分組成:
1、數(shù)據(jù)文件一個表空間一個空間地備份:
a.設(shè)置表空間為備份狀態(tài)。
b.備份表空間的數(shù)據(jù)文件。
c.恢復(fù)表空間為正常狀態(tài)。
2、備份歸檔要作log 文件:
a.臨時停止歸檔進(jìn)程
b.log下那些在archive redo log目標(biāo)目錄中的文件
c.重新啟動archive進(jìn)程
d.備份歸檔的redo log 文件
3、用alter database backup controlfile命令來備份拷貝文件
在熱備份運(yùn)行之前l(fā)og_archive_dest目錄可能已滿,這時就要備份目錄,然后刪除文件,釋放空間,這個過程有如下步
驟:
1、暫時停止archive進(jìn)程。
2、記錄在log_archive_dest目錄下的文件。
3、重新啟動archive 進(jìn)程。
4、備份archive redo log 文件。
5、刪除目錄中的文件。
sqldba lmode=y <archive log stop;
exit
EOF arch1
FILES=ls /wwwdg/oracle/arch/arch*.dbf;
sqldba lmode=y<connect internal
archive log start;
exit
EOF arch2
tar -rvf /dev/rmt/0 FILES
rm -f $FILES
邏輯備份與物理備份的結(jié)合。
前面介紹了三種備份的方法,在數(shù)據(jù)庫做備份時,應(yīng)該將數(shù)據(jù)這三種備份的特點(diǎn)靈活運(yùn)用,我們首先比較一下三種方法的
特性。
方 法
類 型
恢 復(fù) 特 性
EXPORT導(dǎo)出
邏輯型
可以將任何數(shù)據(jù)庫對象恢復(fù)到它被導(dǎo)出時的狀態(tài)
乻hutdown
?將最近c(diǎn)opyes of datafile,拷貝到$oracle_home/dbs目錄。
?%svrmgrl
?svrmgrl>connect internal
…svrmgrl>startup mount pfile=filename exclusive
?svrmgrl>alter database recover;
注:將自動恢復(fù)數(shù)據(jù)到the point of failure;
? svrmgrl>alter database open;
?當(dāng)archive log文件過多時,在 做過部分備份后,可將current log sequence 之前的log***.arc刪除.
#su - oracle
%svrmgrl
svrmgrl>connect internal;
svrmgrl>archive log list;
#此處標(biāo)有current log sequence.假設(shè)為360。
Svrmgrl>exit
$cd /billdg/oracle/app/oracle/product/7.3.2/dbs/arch
$ rm ......... #將log360.arc之前的文件如log359.arc,log358.arc.............刪除。
冷 備 份
物理型
可將數(shù)據(jù)庫到它被關(guān)閉的狀態(tài)
熱 備 份
物理型
可將數(shù)據(jù)庫恢復(fù)到任一時間點(diǎn)的狀態(tài)
當(dāng)數(shù)據(jù)庫比較小時,處理業(yè)務(wù)也小時,冷備份導(dǎo)出就可以了。如果只對一兩個表備份導(dǎo)出就夠了。一般來說一個好,備份最
終執(zhí)行總包括邏輯和物理,導(dǎo)出確認(rèn)數(shù)據(jù)庫在邏輯的正確性而物理備份確保物理。
另外,在進(jìn)行備份時需要一些存儲介質(zhì),對于這些介質(zhì)應(yīng)該對其作好管理
1:根據(jù)備份的內(nèi)容,日期將介質(zhì)統(tǒng)一編號,以免備份和恢復(fù)時弄錯介質(zhì),造成原有的備份丟失。
2:介質(zhì)應(yīng)存放在與計(jì)算機(jī)設(shè)備不同的地點(diǎn),以免機(jī)房發(fā)生意外時,備份與計(jì)算機(jī)設(shè)備一同損壞。
附錄:
tar命令
tar option [arguments] filename...
option:
c:創(chuàng)建一個由命令行指定的新的tarfile
t:列出tarfile中的內(nèi)容
x:打開tarfile;
f:使用其后的filename 或/dev/rmt/0|1
v:列出被恢復(fù)的文件名;
p:恢復(fù)文件
example:
#tar cvf /dev/rmt/0 /oracle
備份/root 下的所有內(nèi)容
#tar tvf /dev/rmt/0
列出磁帶上的所有內(nèi)容
#tar xvf
上一頁 [1] [2] [3] 下一頁
正在看的ORACLE教程是:有關(guān)Oracle數(shù)據(jù)庫的備份情況。 /dev/rmt/0 /oracle
將磁帶上的/oracle目錄中的內(nèi)容恢復(fù)到當(dāng)前目錄中導(dǎo)出選項(xiàng)
關(guān)鍵字 內(nèi) 容
USERID 運(yùn)行導(dǎo)出命令的帳號的用戶名/口令。
BUFFEER 用來取數(shù)據(jù)行的緩沖區(qū)的大小。
FILE 導(dǎo)出轉(zhuǎn)儲文件的名字
COMPRESS 導(dǎo)出是否應(yīng)該壓縮有碎片的段成一個范圍,這將會影響STORAGE
子句,
GRANTS 導(dǎo)出時否要導(dǎo)出數(shù)據(jù)庫對象上的授權(quán)
INDEXES 是否要導(dǎo)出表上的索引
ROWS 是否應(yīng)導(dǎo)出行。如它為‘N',那么在導(dǎo)出文件中僅生成數(shù)據(jù)庫
對象的DDL
CONSSTRAINTS 是否導(dǎo)出表舊的約定條件
FULL 如設(shè)為‘Y',那么將執(zhí)行一個整個數(shù)據(jù)庫導(dǎo)出操作
OWNER 要導(dǎo)出的一系列數(shù)據(jù)庫帳號,然后執(zhí)行這些帳號的USER導(dǎo)出操
作
TABLES 要導(dǎo)出的一系列表;執(zhí)行這些表的TABLE導(dǎo)出操作
RECORDLENGTH 轉(zhuǎn)儲導(dǎo)出文件日志的長度(以字節(jié)為單位),通常都使用缺省,除
非要在兩個不同操作系統(tǒng)中傳遞導(dǎo)出文件
INCTYPE 正在執(zhí)行的導(dǎo)出操作的類型(有效值有”COMPLETE“(缺省值),
CUMULATIVE”和“IVCREMENTAL”)
RECORD 在增量導(dǎo)出類型中的一個標(biāo)記,標(biāo)明是否將日志存儲到數(shù)據(jù)字典
中日志導(dǎo)出的表中
PARFILE 要傳遞給導(dǎo)出的參數(shù)文件的名字。這個文件將包含所有參數(shù)的入
口項(xiàng)
ANALYZE 標(biāo)明是否將移對象的統(tǒng)計(jì)信息寫入導(dǎo)出轉(zhuǎn)儲文件中
CONSISTENT 標(biāo)明是否保留所有導(dǎo)出對象的讀取一致復(fù)制。
LOG 導(dǎo)出日志將要寫入的文件的名字
MLS 標(biāo)明是否要導(dǎo)出MLS 標(biāo)號
MLS_LABEL_ 規(guī)定了MLS標(biāo)號的格式
導(dǎo)入選擇項(xiàng)
USERID 運(yùn)行導(dǎo)入命令的帳號的用戶名/口令。
BUFFEER 用來取數(shù)據(jù)行的緩沖區(qū)的大小。
FILE 導(dǎo)入轉(zhuǎn)儲文件的名字
SHOW 規(guī)定文件內(nèi)容是否被顯示,而不是被執(zhí)行。
EGORE 標(biāo)明在執(zhí)行‘CREATE'命令時,是否忽略遇到的錯誤。如果正
在導(dǎo)入的對象已經(jīng)存在時,應(yīng)使用這個參數(shù)。
FULL 如設(shè)為‘Y',那么將執(zhí)行一個整個數(shù)據(jù)庫導(dǎo)入操作
FROMUSER 在FULL=N的情況下,才有參數(shù)。它是一系列的數(shù)據(jù)庫帳號,其
對象應(yīng)從導(dǎo)出轉(zhuǎn)儲文件中讀取。
TOUSER 一系列數(shù)據(jù)庫帳號,導(dǎo)出轉(zhuǎn)儲文件扣的對象將要導(dǎo)入這些帳號。
GRANTS 導(dǎo)入時否要導(dǎo)入數(shù)據(jù)庫對象上的授權(quán)
INDEXES 是否要導(dǎo)入表上的索引
ROWS 是否應(yīng)導(dǎo)入行。如它為‘N',那么在導(dǎo)入文件中執(zhí)行數(shù)據(jù)庫對
象的DDL
FULL 如設(shè)為‘Y',那么將執(zhí)行一個整個數(shù)據(jù)庫導(dǎo)出操作
TABLES 要導(dǎo)入的一系列表
RECORDLENGTH 轉(zhuǎn)儲導(dǎo)入文件日志的長度(以字節(jié)為單位),通常都使用缺省,除
非要在兩個不同操作系統(tǒng)中傳遞導(dǎo)入文件
INCTYPE 正在執(zhí)行的導(dǎo)入操作的類型(有效值有”COMPLETE“(缺省值),
CUMULATIVE”和“IVCREMENTAL”)
PARFILE 要傳遞給導(dǎo)入的參數(shù)文件的名字。這個文件將包含所有參數(shù)的入
口項(xiàng)
ANALYZE 標(biāo)明是否將移對象的統(tǒng)計(jì)信息寫入導(dǎo)入轉(zhuǎn)儲文件中
LOG 導(dǎo)入日志將要寫入的文件的名字
MLS 標(biāo)明是否要導(dǎo)入MLS 標(biāo)號
熱備份的命令文件:
ORACLE_SID=oracle7
ORACLE_HOME=/wwwdg/oracle
sqldba lmode=y<connect internal
alter tablespace SYSTEM begin backup;
!tar -cvf /dev/rmt/0 /wwwdg/oracle/dbms/sys01.dbf
alter tablespace SYSTEM end backup;
alter tablespace BWT begin backup;
!tar -cvf /dev/rmt/0 /wwwdg/oracle/dbms/BWT1.dbf
alter tablespace BWT end backup;
archive log stop
exit
EOF arch1
FILES=ls /wwwdg/oracle/arch/arch*.dbf;
sqldba lmode=y<connect internal
archive log start;
exit
EOF arch2
tar -rvf /dev/rmt/0 $FILES
rm -f $files
sqldba lmode=y<alter database backup controlfile to
/wwwdg/oracle/dbms/bwtcontrfile.backup;
exit
EOF arch3
tar -rvf /dev/rmt/0 /wwwdg/oracle/bwt/bwtcontrofile.backup
上一頁 [1] [2] [3]