整理的一些oracle備份筆記 (zt)

tolywang發表於2007-12-28

1.聯機熱備份的一般步驟:


a.設定資料庫為archivelog模式
startup mount;
alter system set log_archive_dest_n='location=d:oraclearchive'; --修改spfile設定歸檔目錄
alter database archivelog ;
archive log start;
alter database open;
arvchive log list;


b.開始備份表空間(資料檔案)
alter tablespace TABLESPACENAME begin backup;

/*此時屬於該表空間的資料檔案標誌為hot-backup-in-progress,
並對所有的資料檔案設定檢查點
這意味著屬於這些檔案的任何髒緩衝區都將寫入磁碟*/

ocopy DATAFILES_OF_TABLESPACE DEST_OF_BACKUP;(WINDOWS)
cp DATAFILES_OF_TABLESPACE DEST_OF_BACKUP; (UNIX)
alter tablespace TABLESPACENAME end backup;

c.日誌切換
alter system switch logfile;

d.用作業系統命令備份歸檔日誌檔案

e.備份控制檔案
alter database backup controlfile to trace;

alter database backup controlfile to 'FILESPEC';

f.備份結束

2.邏輯備份(EXP)
a.shutdown immediate
b.startup restrict open;
c.exp
d.alter system disable restricted session;

**表空間的exp
1.user 必須為 sys as sysdba,如果不用sys as sysdba可以匯出但進行匯入時會給出錯誤資訊。
2.tablespace必須為readonly
2.transport_tablespace=y
3.tablespaces=TABLESPACE_NAME
限制:
a.只能傳輸一組獨立的表空間,該表空間集內部沒有對錶空間外部的引用。
b.原資料庫與目標資料庫必須處於相同的系統環境中。(不能將unix 的oracle導到nt中)
c.必須要有相同的字符集
d.不支援快照/複製,基於函式的索引、有範圍的引用、域索引
***分割槽級匯出
允許使用者匯出一個表內部的一個或多個指定的分割槽或子分割槽。
*full db,user,tablespace 模式匯出不支援分割槽級匯出,只有表模式匯出支援分割槽級匯出
exp user/pwd tables=(table1:p1,table2:p1) rows=y
*BFILE的匯出:匯出工具只記錄由BFILE列引用的名字與路徑別名,必須在作業系統級建立路徑並將BFIL檔案
複製到新位置。

3.恢復管理器備份(rman)
***支援邏輯備份外的所有備份型別;可以建立的備份包括完全備份、表空間備份,資料檔案備份、控制檔案備份
以及歸檔日誌檔案備份。不能使用rman應用程式備份init.ora檔案、口令檔案、作業系統檔案、聯機重做日誌
檔案。恢復管理器支援三種型別的備份:備份集、資料檔案複製(映像複製)和作業系統備份;
1.建立恢復目錄:
.必須為目錄模式建立一個獨立的表空間;
.必須建立一個擁有目錄模式的單使用者,grant connect,resource,recovery_catalog_owner to XXX;
.在專門為恢復目錄模式建立的表空間上,擁有恢復目錄模式的使用者應該被賦予unlimited quota的許可權;
For Example:
connect
;
create tablespace rman datafile rman size 100m ;
create user rman identified by rman default tablespace rman temporary tablespace temp quota unlimited on rman;
grant connect,resource,recovery_catalog_owner to rman;

rman catalog

create catalog tablespace 'RMAN';
2.註冊資料庫:
rman catalog
target
register database;
3.同步目錄:
resync catalog;
4.從恢復目錄登出資料庫:
**一旦登出後,就再也不能使用恢復目錄含有的備份集來恢復資料庫了。
.為了登出資料庫,需要得到資料庫的詳細資訊,(資料庫的表示碼DB_ID和資料庫鍵值DB_KEY)
rman catalog
target
**可以從登陸資訊中得到prod的DBID
select db_key,rpad(to_char(db_id),12) "DB_ID_NUMBER" from db
where db_id=******;
**得到db_key,db_id_number
execute dbms_rcvcat.unregisterdatabase(db_key,db_id_number);
5.改變恢復目錄
可以在恢復管理器中使用change對目錄做適當的更改;
rman>list copy of tablespace "USERS"
*得到key
rman>change datafilecopy key delete

6.完全資料庫備份:
RMAN>run {
allocate channel disk1 type disk format 'c:backup%d_backup%U';
backup database;
sql 'alter system archive log current';
sql 'alter system archive log all';
backup archivelog all delete input;
}
備份到磁帶:
run {
allocate channel dev1 type 'sbt_tape';/*至少應該配置一個介質管理器,並與oracle整合
以訪問磁帶驅動器,
而且通道型別必須是'sbt_tape'*/
backup database;
sql 'alter system archive log current';
sql 'alter system archive log all';
}
當備份巨型資料庫時,為避免i/o競爭,可以為每個磁碟驅動器分配一種型別的磁碟通道,
並指定格式化字串;
run {
allocate channel d1 type disk format 'C:backup%d_backups%U';
allocate channel d2 type disk format 'D:backup%d_backups%U';
allocate channel d3 type disk format 'E:backup%d_backups%U';
backup database;
sql 'alter system archive log current';
sql 'alter system archive log all';
}
6.1.建立完全資料庫備份的資料檔案複製:
***在執行copy之前,透過使用report schema命令在目標資料庫模式上生成一個報表,確定資料庫中的
資料檔案可用性。
run {
allocate channel c1 type disk;
copy datafile 1 to 'd:backupsys01.bak';
copy datafile 2 to 'd:backupusr01.bak';
copy datafile 3 to 'd:backuprbs01.bak';
copy current controlfile to 'd:backupcntrlora.bak';
}
***RMAN copy命令的輸出與在作業系統級複製檔案非常類似,但RMAN copy命令還檢查物理和邏輯資料塊;
不同於RMAN備份集,需要且只能由rman的recover命令來處理;
6.2.建立完全資料庫備份的作業系統備份
a.使用alter tablespace .. begin backup;
b.使用作業系統工具複製屬於該表空間的全部資料檔案;
copy test01.dbf 'd:backuptest01.dbf'
c.以alter tablespace .. end backup告訴資料庫已經完成資料檔案複製
d.需要在恢復目錄中註冊這些複製。(必須確保rman連結到目標資料庫)
catalog datafilecopy 'd:backuptest01.dbf';
7.表空間備份
僅當archivelog模式下才能建立表空間的備份集。(除只讀或正常離線表空間)
run {
allocate channel c1 type disk;
backup tablespace USERS
format 'aatst_%t%s.%p';
}
7.2建立表空間的資料檔案複製
***採用這種備份方法的優點在於可以直接利用資料檔案的複製,而不需使用restore命令進行恢復。
可以減少故障停機時間;
run {
allocate channel c1 type disk;
copy datafile 'c:oracleoradataprodtest01.dbf' to 'd:backuptest01.bak';
}
8.資料檔案備份
僅當archivelog模式下才能建立表空間的備份集。(除只讀或正常離線表空間)
run {
allocate channel c1 type disk;
backup datafile 'c:oracleoradatatestusers01.dbf'
format 'aatst_%t%s.%p';
}
9.控制檔案備份
9.1控制檔案的備份集
run {
allocate channel c1 type disk;
backup current controlfile tag = weekly_sat_backup;
}

run {
allocate channel c1 type disk;
backup tablespace "USERS"
include current controlfile;
}
9.2控制檔案的檔案複製
run {
allocate channel c1 type disk;
copy current controlfile to 'd:backupcntlora.bak';
}
10.歸檔日誌備份
如果選擇備份全部歸檔日誌檔案,應該使用all選項.還可以按照時間戳建立歸檔日誌檔案的備份.
***但是oracle建議用引數log_archive_dest_n,將歸檔日誌檔案的備份儲存在磁碟上.
run {
allocate channel c1 type disk;
backup archivelog low logseq 3 high logseq 10 thread 1;
}
run {
allocate channel c1 type disk;
copy archivelog 'c:oracleoradatatestarchive******.arc' to 'c:backup****.bak';
}
11.建立備份指令碼:
create scrript bk_script {
allocate channel c1 type disk;
backup full filesperset 6 database fromat 'd:backup%p%d.%s';
sql 'alter system archive log current';
backup filesperset 10 archive all delete input;
}
執行指令碼
run {
execute script bk_script;
}
12.測試並驗證備份集合複製
rman 的restore validate,vlidate與change croscheck 命令能夠測試備份集合映像複製.
當執行restore validate命令時rman執行一次恢復測試執行(恢復),但並不真正恢復檔案.
12.1恢復驗證整個資料庫
startup mount;
rman
target ;
run {
allocate channel c1 type disk;
restore database validate;
}
12.2恢復驗證控制檔案
run {
allocate channel c1 type disk;
restore controlfile validate;
}
12.3恢復驗證備份集與映像複製
資料庫可以是關閉的也可以是開啟的,但是開啟時,必須將需要驗證的表空間與資料檔案離線;
rman>list backup of tablesapce "USERS";
得到key值
run {
allocate channel c1 type disk;
validate backupset key;
}

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-85138/,如需轉載,請註明出處,否則將追究法律責任。

相關文章