目錄
1簡介
2備份的種類
2.1物理備份
2.1.1冷備份
2.1.2熱備份
2.2邏輯備份
3備份方案
3.1冷備份方案的實(shí)施
3.1.1冷備份數(shù)據(jù)庫的步驟
3.2熱備份方案的實(shí)施
3.2.1熱備份數(shù)據(jù)庫的步驟
3.3邏輯備份export備份
3.3.1 export備份數(shù)據(jù)庫的步驟
3.4異機(jī)備份
3.4.1被動式異機(jī)備份
3.4.2主動式異機(jī)備份
本手冊描述Oracle數(shù)據(jù)庫的備份還原機(jī)制,幫助應(yīng)用Oracle數(shù)據(jù)庫,為了保證數(shù)據(jù)庫的安全,避免外界因素造成數(shù)據(jù)庫中數(shù)據(jù)丟失,有效的備份可以更好的重建數(shù)據(jù)庫,在修改刪除表或者表空間以前或者以后執(zhí)行適當(dāng)?shù)膫浞菔窍喈?dāng)必要的,備份時建議使用直接登錄服務(wù)器或者利用ssh工具登錄服務(wù)器利用相關(guān)的系統(tǒng)命令進(jìn)行操作,避免使用PLSQL工具進(jìn)行操作,影響備份的結(jié)果,本文檔適合有一定Oracle經(jīng)驗(yàn)人員進(jìn)行閱讀,以O(shè)racleLinux 6.5為環(huán)境基礎(chǔ),oracle 版本為11.2.0.4,其他的版本請自行測試,避免出現(xiàn)其他的問題。
而對于ORACLE數(shù)據(jù)庫的備份方法主要分為兩大類。第一類是物理備份,第二類是邏輯備份。而物理備份又分為冷備份和熱備份。
冷備份發(fā)生在數(shù)據(jù)庫已經(jīng)正常關(guān)閉的情況下,當(dāng)正常關(guān)閉時會提供給我們一個完整的數(shù)據(jù)庫。冷備份時將關(guān)鍵性文件拷貝到另外的位置的一種說法。對于備份Oracle信息而言,冷備份時最快和最安全的方法。
優(yōu)點(diǎn):能簡單快速地備份。能簡單快速地恢復(fù)。執(zhí)行簡單。
缺點(diǎn):必須關(guān)閉數(shù)據(jù)庫,不能進(jìn)行點(diǎn)恢復(fù)。
熱備份是在數(shù)據(jù)庫運(yùn)行的情況下,采用archivelogmode方式備份數(shù)據(jù)庫的方法。所以,如果你有昨天夜里的一個冷備份而且又有今天的熱備份文件,在發(fā)生問題時,就可以利用這些資料恢復(fù)更多的信息。熱備份要求數(shù)據(jù)庫在Archivelog方式下操作,并需要大量的檔案空間。一旦數(shù)據(jù)庫運(yùn)行在archivelog狀態(tài)下,就可以做備份了。
優(yōu)點(diǎn):備份時數(shù)據(jù)庫可以是打開的。熱備份可以用來進(jìn)行點(diǎn)恢復(fù)。初始化參數(shù)文件、歸檔日志在數(shù)據(jù)庫正常運(yùn)行時是關(guān)閉的,可用操作系統(tǒng)命令拷貝。
缺點(diǎn):執(zhí)行過程復(fù)雜。由于數(shù)據(jù)庫不間斷運(yùn)行,測試比較困難。不能用操作系統(tǒng)實(shí)用工具拷貝打開的文件。必須使用Oracle提供的ocopy工具來拷貝打開的文件。熱備份可能造成CPU、I/O過載,應(yīng)在數(shù)據(jù)庫不太忙時進(jìn)行。
邏輯備份是利用export進(jìn)行數(shù)據(jù)備份。這個直接根據(jù)提示來就可完成。
優(yōu)點(diǎn):能執(zhí)行對象或者行恢復(fù)。備份和恢復(fù)速度更快。能夠跨操作系統(tǒng)平臺遷移數(shù)據(jù)庫。數(shù)據(jù)庫可一直運(yùn)行。
缺點(diǎn):export并不是冷備份和熱備份的替代工具。冷、熱備份可保護(hù)介質(zhì)失效。export備份可保護(hù)用戶或應(yīng)用錯誤。
1、關(guān)閉數(shù)據(jù)庫;
使用命令 shutdown immediate;
2、備份所有相關(guān)的數(shù)據(jù)庫文件:
初始化參數(shù)文件 $ORACLE_HOME/dbs/*.ora
控制文件(可用select name from v$controlfile;列出所有控制文件)
數(shù)據(jù)文件(可用select name from v$datafile;列出所有數(shù)據(jù)文件)
Redo日志(可用select member fromv$logfile;列出所有redo日志文件)
歸檔的Redo日志(可用select sequence#,first_timefrom v$loghist;列出所有歸檔redo日志文件的順序號和產(chǎn)生時間)。
mkdir /backup/ctl /backup/dbf /backup/redo/backup/dbs #新建Oracle數(shù)據(jù)庫備份目錄
chown -Roracle:oinstall /backup/ #設(shè)置目錄權(quán)限為oinstall用戶組的oracle用戶
(用戶oracle與用戶組oinstall是在安裝Oracle數(shù)據(jù)庫時設(shè)置的)
su- oracle #跳轉(zhuǎn)到oracle用戶
cp /oradata/orcl/control01.ctl /u01/app/oracle/fast_recovery_area/orcl/control02.ctl/backup/ctl#復(fù)制控制文件到指定目錄/backup/ctl
cp /oradata/orcl/*.dbf /backup/dbf#復(fù)制數(shù)據(jù)文件到指定的目錄/backup/dbf
cp /oradata/orcl/redo*.log /backup/redo #復(fù)制redo日志文件到指定目錄/backup/redo
cp /u01/app/oracle/product/11.2.0/dbhome_1/dbs/*/backup/dbs #復(fù)制參數(shù)文件到指定目/backup/dbs
1、將數(shù)據(jù)庫開啟歸檔模式
SQL> shutdown immediate;關(guān)閉數(shù)據(jù)庫
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>startup mount;數(shù)據(jù)庫進(jìn)入mount模式
ORACLE instance started.
SQL> alter database archivelog;啟用歸檔模式
Database altered.
SQL>alter database open;打開數(shù)據(jù)庫
Database altered.
SQL>alter system archive log start;啟用自動歸檔模式
System altered.
查看是否啟用了歸檔模式
SQL> archive log list;
如果顯示下邊的提示代表啟動歸檔模式,且自動歸檔模式開啟
非歸檔日志模式下產(chǎn)生的備份日志對于歸檔模式已經(jīng)不可用了,這一步非常重要!
1、拷貝參數(shù)文件到備份目錄(參數(shù)文件在數(shù)據(jù)庫啟動后處于關(guān)閉狀態(tài))
cp/u01/app/oracle/product/11.2.0/dbhome_1/dbs/init.ora/backup/reback/
2、將需要備份的表空間(TS_DC)設(shè)為備份狀態(tài):
SQL> ALTER TABLESPACETS_DC BEGIN BACKUP;將表空間TS_DC設(shè)置為開啟備份狀態(tài)
Tablespace altered.
[oracle@oracle orcl]$ cp/oradate/orcl/TS_DC.DBF /backup/reback/拷貝數(shù)據(jù)文件到備份目錄
SQL> ALTER TABLESPACETS_DC END BACKUP;將表空間TS_DC設(shè)置為關(guān)閉備份狀態(tài)
Tablespace altered.
如還有其他要備份的表空間,重復(fù)步驟2
SQL> archive log list;獲取當(dāng)前的日志順序號
如下所示,日志序列號為4-6(從oldest online logsequence開始到current log sequence的聯(lián)機(jī)redo日志應(yīng)該是熱備份的一部分)
SQL>ALTER SYSTEM SWITCHLOGFILE ;強(qiáng)制日志歸檔
System altered.
cp -R/u01/app/oracle/fast_recovery_area/ORCL/archivelog/ /backup/reback/備份歸檔日志文件到/backup/reback/(arc文件為歸檔日志)
SQL> ALTER DATABASEBACKUP CONTROLFILE TO '/backup/reback/control.bkp';將控制文件備份到/backup/reback/下,備份的后綴名無所謂
Database altered.
檢查備份的文件是否齊全(1、歸檔日志2、控制文件 3、參數(shù)文件 4、數(shù)據(jù)文件)
注意事項(xiàng),步驟中涉及的fast_recovery_area目錄為閃回區(qū),在不更改默認(rèn)歸檔日志的情況下會將日志放在閃回區(qū)中,閃回區(qū)很容易爆滿,閃回區(qū)的大小在新建數(shù)據(jù)庫實(shí)例時候可以設(shè)置,當(dāng)不勾選時候是無限制的拓展。
3.3 邏輯備份export備份
mkdir -p /backup/oracledata #新建Oracle數(shù)據(jù)庫備份目錄
chown -R oracle:oinstall /backup/oracledata -R #設(shè)置目錄權(quán)限為oinstall用戶組的oracle用戶
(用戶oracle與用戶組oinstall是在安裝Oracle數(shù)據(jù)庫時設(shè)置的)
因?yàn)槭褂胑xpdp命令需要使用到目錄對象(directory),所以首先需要創(chuàng)建目錄對象,并賦予某個用戶對目錄對象的操作權(quán)限。
操作步驟如下:
su- oracle#切換到oracle用戶
sqlplus/ as sysdba#切換到SQLPLUS環(huán)境
執(zhí)行以下命令:
createdirectory expdp_bak_dir as '/backup/oracledata';#指定EXPDP輸出目錄
grantcreate any directory to system;#授予system權(quán)限
vi/backup/oracledata/ordatabak.sh #新建文件,輸入以下代碼
#/bin/sh
exportORACLE_SID=orcl
exportORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
exportNLS_LANG=american_america.zhs16gbk
exportDATA_DIR=/backup/oracledata
now=`date %Y%m%d%H%M%S `
dmpfile=db$now.dmp
echostart exp $dmpfile ...
/u01/app/oracle/product/11.2.0/dbhome_1/bin/expdp system/newcapecDUMPFILE=$dmpfile logfile=db$now.log DIRECTORY=expdp_bak_dir full=y
echo'Delete the file bakup before 6 days...'
find/backup/oracledata/ -mtime 6 -name '*.dmp' -exec rm -rf '{}' ;
echo'Delete the file bakup successfully. '
echo'Bakup completed.'
chmod x/backup/oracledata/ordatabak.sh #添加腳本執(zhí)行權(quán)限
代碼中紅色的orcl修改為自己的實(shí)際數(shù)據(jù)庫名稱system/newcapec修改為實(shí)際的用戶名和密碼
mkdir -p /backup/ #新建Oracle數(shù)據(jù)庫備份目錄
chown -R oracle:oinstall /backup/ -R #設(shè)置目錄權(quán)限為oinstall用戶組的oracle用戶
(用戶oracle與用戶組oinstall是在安裝Oracle數(shù)據(jù)庫時設(shè)置的)
一、全量備份整個庫為TS_DC文件
1、 設(shè)置窗口字符集格式
NLS_LANG=AMERICAN_AMERICA.AL32UTF8
2、 導(dǎo)出全量信息到備份文件目錄/backup中的TD_DC文件以及日志文件
expdp system/111111@orcl file=/backup/TS_DC.dmplog=/backup/TS_DC.log full=y;
二、按用戶備份數(shù)據(jù)庫為user文件
1、 設(shè)置窗口字符集格式
NLS_LANG=AMERICAN_AMERICA.AL32UTF8
2、 導(dǎo)出user用戶信息到備份文件目錄/backup中的user文件以及日志文件
expdp system/111111@orcl owner=user file=/backup/user.dmplog=/backup/user.log;
被動式異機(jī)備份指在熱備份或者邏輯備份完成成將數(shù)據(jù)及時傳輸?shù)搅硪慌_機(jī)器,保持多份數(shù)據(jù),避免因服務(wù)器無法正常啟動后數(shù)據(jù)無法取出,造化數(shù)據(jù)無法恢復(fù)。
這里主要介紹在window環(huán)境中使用wincsp軟件通過定時任務(wù)自動比較同步下載數(shù)據(jù)庫備份信息
1、 首先在window系統(tǒng)中安裝winscp軟件,可以在網(wǎng)上自行下載