[JGL]Rman指令碼書寫格式和注意事項

yuntui發表於2016-11-03
一、 rman資訊庫可以存放兩個位置
1,目標資料庫的控制檔案;
2,恢復目錄;
二、 控制檔案裡面存放記錄分為兩類
1,可刪除的記錄歸檔日誌檔案的歷史記錄以及rman備份的後設資料(記錄備份集位置的資料)
2,不可刪除記錄資料檔案,聯機日誌檔案列表等
如果需要在控制檔案中存放新的記錄,則可以刪除那些可刪除部分,從而提供可用空間。
注意:如果rman備份的後設資料被刪除,rman的備份資料失去了意義,因此rman備份的後設資料很重要。
三、設定初始化引數
controlfile_record_keep_time 來決定控制檔案中可刪除部分,這個引數預設是七天,表示控制檔案始終保持最近七天的可刪除記錄,七天前的備份資訊,歸檔日誌記錄被刪除,如果設定為零,表 示不刪除歷史記錄,那麼控制檔案的增長將會失控,因此rman的備份週期不能超過七天。
四、rman備份順序,保證不丟失資料
1,資料庫資料檔案
2,歸檔日誌
3,控制檔案
4,引數檔案
五、實驗一
備份完成後,我們把控制檔案刪除掉,然後用過去的控制檔案來恢復,看看是否能恢復資料庫
RMAN> run {
2> allocate channel c1 type disk;
3> allocate channel c2 type disk;
4> backup database filesperset 2 format '/u02/backup/full_%d_%t_%s_%p';
5> backup current controlfile format '/u02/backup/ctl_%d_%t_%s_%p';
6> sql 'alter system archive log current';
7> sql 'alter system archive log current';
8> sql 'alter system archive log current';
9> backup archivelog all format '/u02/backup/log_%d_%t_%s_%p' delete input;
10> }
備份完成後,刪除所用的控制檔案,我們用過去的控制檔案進行恢復,是否可以恢復並開啟資料庫?
RMAN> restore controlfile from  '/u02/backup/ctl_ORCL_843148742_17_1';
RMAN> alter database mount;
RMAN> recover database;
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 03/25/2014 16:08:31
RMAN-06054: media recovery requesting unknown log: thread 1 seq 37 lowscn 1157615
注意:這裡提示我們缺少日誌檔案seq37!
說明這個備份方案有錯誤!有可能找不到我們的日誌檔案的備份級,如果是在磁碟上也不是太難,但是如果是帶庫就比較麻煩了!
開啟另一個會話:
RMAN> catalog backuppiece  '/u02/backup/log_ORCL_843148747_18_1';
cataloged backuppiece
backup piece handle=/u02/backup/log_ORCL_843148747_18_1 recid=14 stamp=843150418
RMAN> catalog backuppiece  '/u02/backup/log_ORCL_843148747_19_1';
cataloged backuppiece
backup piece handle=/u02/backup/log_ORCL_843148747_19_1 recid=15 stamp=843150442
RMAN> catalog backuppiece  '/u02/backup/log_ORCL_843148749_20_1';
cataloged backuppiece
backup piece handle=/u02/backup/log_ORCL_843148749_20_1 recid=16 stamp=843150457
RMAN>
返回到上一個會話上:
RMAN> recover database;
Starting recover at 25-MAR-14
using channel ORA_DISK_1
starting media recovery
如果我們先備份控制檔案後備份歸檔日誌,那麼控制檔案中,一定沒有記錄備份的歸檔信(備份歸檔資訊的名稱和存放的位置)
六、備份全庫
orale]$ rman target / log /tmp/rman_full.log
RMAN> configure controlfile autobackup on;
RMAN> configure controlfile autobackup format for device type sbt_tape to '%F';
注:在新增資料檔案和刪除資料
檔案的時候,在資料庫物理操作,它會自動備份控制檔案,這樣資料庫有可能出現掛起現象。
RMAN> configure controlfile autobackup format for device type disk to '%F';k to '%F';注:物理操作備份到disk
run{
allocate channel c1 type sbt_tape;把控制檔案備份到帶庫上。
backup database;
}
如果rman中把控制檔案的自動備份開啟,還是剛才的那個備份指令碼,當它完成對歸檔備份完成以後,仍然對控制檔案進行備份。
run {
2> allocate channel c1 type disk;
3> allocate channel c2 type disk;
4> backup database filesperset 2 format '/u02/backup/full_%d_%t_%s_%p';
5> backup current controlfile format '/u02/backup/ctl_%d_%t_%s_%p';
6> sql 'alter system archive log current';
7> sql 'alter system archive log current';
8> sql 'alter system archive log current';
9> backup archivelog all format '/u02/backup/log_%d_%t_%s_%p' delete input;
10> }
七、Rman Log
在rman備份的時候,有個選項是log輸出,在備份的時候,oracle說明是一個選項,但是對於我們來說,備份一定要有log。
1,備份指令碼的格式
%c:備份片的副本數
%d:資料庫名稱
%D:位於該月的第幾天
%M:位於該年的第幾個月
%n:資料庫名稱,向右增補到最大8個字元
%u:一個8個字元的名稱,代表備份集和建立時間
%p:該備份集的備份片號,從1開始到建立的檔案數
%U:一個唯一的名字%u_%p_%c
%s:備份的編號
%t:備份的時間戳
%T:年月日格式(YYYY-MM-DD)
八、如何使用RMANLOG
export ORACLE_SID=orcl
export ORACLE_HOME=/u01/app/oracle/10.2.0/db_1
export PATH=$ORACLE_HOME/bin:$PATH
[oracle@rhel db_1]$ rman target / log /u02/rman_full.log append <<EOF
RMAN> run {
allocate channel c1 type disk;
allocate channel c2 type disk;
backup database filesperset 4 format '/u02/backup/full_%d_%T_%s_%p';
sql 'alter system archive log current';
backup archivelog all format '/u02/backup/arch_%d_%T_%s_%p' delete input;
backup current controlfile format '/u02/backup/ctl_%d_%T_%s_%p';
}   EOF
九、 Rman的設定
分 配通道依據資料庫的壓力和磁碟的速度,每個通道佔用磁碟的額i/o;filesperset依據資料庫檔案的大小,如果我的檔案很大,我在每一個備份集裡 面放的檔案就少些,這樣在資料庫恢復的時候,我們會盡可能多的通道讀取多個備份集,來更快的恢復檔案。一個通道只能讀取一個備份集,不可能多個通道讀取一 個備份集。delete input 把備份走的歸檔自動刪除,騰出空間。
十、 rman備份指令碼歸檔
1,設定環境變數
export ORACLE_SID=orcl
export ORACLE_HOME==/u01/app/oracle/10.2.0/db_1
export PATH=$ORACLE_HOME/bin:$PATH
2,使用log輸出
rman target /  log  /u02/rman_arch.log append <<EOF
3,開始備份
run
{
allocate channel c1 type disk;
allocate channel c2 type disk;
sql 'alter system archive log current';
backup archivelog all format '/u02/backup/arch_%d_%T_%s_%p' delete input;
backup current controlfile format '/u02/backup/ctl_%d_%T_%s_%p';
}
EOF
注:一旦控制檔案損壞或者丟失,我們可以從最近的控制檔案中,找到我們的備份集,找到我們的所需要恢復的歸檔日誌。
十一、在rman中什麼時候用crosscheck
更新控制檔案,把已經刪除的歸檔日誌檔案認為無效。當我們在歸檔目錄下,不小心刪除了一個歸檔日誌,但是控制檔案並不知道,所以在恢復的時候要找這個檔案,
十二、oracle 冗餘策略
1,recovery window
保留多長時間的備份集,rman認為在多少天之後的備份為無效。
2,redunancy
超過多少個,認為是無效的,他會刪掉最早的一個備份。
Rman備份指令碼-刪除策略
export ORACLE_SID=orcl
export ORACLE_HOME=/u01/app/oracle/10.2.0/db_1
export PATH=$ORACLE_HOME/bin:$PATH
[oracle@rhel backup]$ rman target / log /u02/rman_delete.log append <<EOF
allocate channel for maintenance type disk;
allocate channel for maintenance type sbt_tape;
corsscheck backup;
delete noprompt obsolete;
EOF
RMAN> [oracle@rhel backup]$
[oracle@rhel backup]$ crontab命令的功能是在一定的時間間隔排程一些命令的執行
編輯:crontab -e
檢視:crontab -l
備份完全備,就刪除冗餘。
自動控制檔案備份沒有開啟(備份到磁碟上)
十三、Rman恢復
[oracle@rhel backup]$ rman target / log /u02/rman_contorl.log
RMAN> run {
2> backup current controlfile format '/u02/backup/ctl_%d_%t_%s_%p';
3> }
RMA在rman中
[oracle@rhel backup]$ rman target / nocatalog log /u02/rman_contorl.log
RMAN> run {
2> allocate channel c1 type sbt_tape;
3> restore controlfile from '/u02/backup/ctl_ORCL_843158098_42_1';
[oracle@rhel backup]$ rman target / nocatalog log /u02/rman_contorl.log
RMAN> run {
2> allocate channel c1 type disk;
3> restore controlfile from '/u02/backup/ctl_ORCL_843158098_42_1';
4> }
十四、自動控制檔案
備份開啟(預設位置)(發起任何一個檔案的備份,都會自動備份控制檔案)從磁碟恢復開啟控制檔案自動備份資料庫必須在mount或open
rman target /
rman> configure controlfile autobackup on;
rman> configure controlfile autobackup format for device type disk to '%F';
資料庫恢復
*******************************************************************************
Rman target / nocatalog
Rman>set dbid
run{
allocate channel c1 type disk;
restore  controlfile from auto backup;
}
注: 自動去找最近的一個控制檔案的備份。如果控制檔案的自動備份,不是預設的位置,在恢復控制檔案的時候,需要把它給放在預設的位置。因為現在資料庫還處於 nomunt的狀態。在rman的show all;的引數裡面,這些預設的引數是寫在程式中的;修改的資訊是記錄在控制檔案中的。所以當資料庫啟動到nomount的時候,在rman用 showall的時候,仍然是沒有修改的預設資訊。
十五、恢復控制檔案
控制檔案的預設位置$ORACLE_HOME/dbs
1, 複製複製
2,開始恢復
run{
set controlfile autobackup format for device type disk to '/oracle/%F';
restoreconfile from autobackup;
}
run{ set controlfile autobackup format for device type sbt_tape  '%F';
在帶庫中找控制檔案備份的備份集
Restore controlfile from auto backup;}
在帶庫中直接就是檔名,沒有目錄。

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

相關文章