RMAN 總結篇 1 - (轉)

ningzi82發表於2010-09-24

RMAN 總結篇 --- created by wangzz
(一)

一,RMANR 連線到庫
1),連線本地資料庫
a,如果本地有多少例項,則需要設定環境變數ORACLE_SID,
windows 平臺: set ORACLE_SID= INSTANACE NAME
UNIX/LINX平臺: export ORACLE_SID=INSTANCE NAME
8i : $rman target / nocatalog
9i以上的資料庫直接 rman target / 就可以了
nocatalog&catalog: 就是連線時,是以控制檔案記錄還是以恢復目錄來記備份資訊,這就二種連線的差別,catalog是需要配置的。

[@more@]

b,如果本地只有一個例項:且設定了環境變數:則無需指定例項了.

連線進入rman,如果使用作業系統驗證,則用 rman target /
如果沒有使用作業系統驗證: 則使用 rman target user/passwd
也可以直接rman,再在裡面用connect 使用者名稱/密碼

2),連線遠端資料庫,
1、要確定資料庫能夠進行遠端管理。
2、在本地建立一個到目標資料庫的連線,同時給一個網路服務名比如叫做test
3、執行:rman target
4、本地版本要於遠端版本一致或高
就可以了,記住@後面一定是網路服務名,rman target sys/密碼@test

3),帶日誌的連線
rman target / log f:rman_log.txt

4),暫退rman,回到作業系統的命令提示符
rman> host;
$sqlplus "/ as sysdba" 這樣就可以進入sql環境,退回exit ,exit 就又回到rman提示符

二,rman命令的執行方式
1),單個執行
rman>backup database;

2),批處理
rman>rman{
......
}

3),執行指令碼
a, 用命令列方式呼叫作業系統中儲存的指令碼
c: rman target / @backup_db.rman
或 c: rman target / cmdfile = backup_db.rman

b, 在rman中執行作業系統中儲存的指令碼檔案
rman> @backup_db.rman

c, 執行存貯在catlog中的指令碼(需要首先為rman建立恢復目錄)
rman > run { execute script backup_whole_db };

三,簡單常見備份型別及解釋
1).整庫
rman> backup database 整庫備份,生成二個備份片段,一個資料檔案片段,一個控制檔案和spfile,放在oracle 軟體的安裝目錄下
rman> backup database format 'f:bak_u%'; 指定備份集的目錄
rman> list backup of database; 檢視建立的全庫備份

2).表空間
rman> backup tablespace users; 表空間的備份,當然也可以format 到指定目錄
rman> list backup of tablespace users; 檢視users表空間的備份情況,注意如果做過全備份,全備份users表空間的資訊也會顯示出來
rman> delete backup 10; 刪除編號為10的備份集

3),資料檔案
rman> backup datafile 'f:users01.dbf'; 資料檔案的備份
rman> backup datafile n 資料檔案的備份,n 是資料檔案的絕對編號(備份多個資料檔案,中間用逗號隔開)
rman> list backup of datafile n; n是資料檔案的編號,透過dba_data_files (顯示多個資料檔案,編號用逗號隔開)

4),控制檔案
rman> backup current controlfile; 手工單獨備份控制檔案
rman> backup database include current controlfile; 備份任何東東的時候都可以包含備份控制檔案,當然要加include current controlfile子句
rman> backup current controllfile include current controlfile 這樣就可以備份二次控制檔案
rman > configure controlfile autobackup on; 只要設定為on後,不管備份什麼都會備份控制檔案
備到哪裡要根據引數決定。當設定為on後,controlfile 會自動備份到$ORACLE_HOME/dbs下,
rman > list backup of controlfile 檢視控制檔案的備份情況

5),歸擋檔案的備份
rman> backup archivelog all; 備份所有可訪問到的歸檔檔案,當然這個all可以由其他關鍵字眼代替,until, scn, time,sequence
來指定要備份的歸檔區間,
rman>backup current controlfile plus archivelog; 當然備份任何東東加上plus archivelog,就可備份歸檔檔案.
這二種備份方式的區別: 通常線上備份的時候,日誌檔案一直在不斷生成,如何做到完全備份歸檔呢?
a, backup archivelog all, 先alter system switch logfile, 立即備份這些歸檔,對後續生成的歸檔管不了
b, backup ... plus archivlog, 步驟是: 先switch logfile,backup archivelog all,,再執行備份專案備份,再switch logfile ,再backup archivelog all,
完全備份
rman> delete all input 備份完後把archivelog 刪掉

6),初始化引數檔案的備份
通常在備份控制檔案時,會自動備份spfile ,當然也可以專門手動備份
rman>backup spfile;

7),對備份集進行備份
rman>backup backupset all; 對以前所有備份再進行備份一次,如果很多,這個過程很膨大
rman>bakcup backupset n; n 指備份集的id號,當然可以指定多個,逗號隔開
rman>delete input 引數; 刪除某個備份集

呵呵,有以上簡單備份的基礎,相信寫個塊應該沒問題了!

四,rman 命令綜述
1) . show 注:配置項後面跟了# default的表示該項仍是初始配置,未被修改過。
rman>show all; 太多,檢驗自已的眼神 ~:~ 哈哈
rman>show controlfile autobackup; 檢視控制檔案的配置引數

2). configure 參考show all裡面的引數,根據自身備份特性修改rman的初始引數
rman>configure retention policy to recovery window of n days; 基於時間的保留策略
rman>configure retention policy to redundancy n; 基於冗餘數量的保留策略
rman>configure retention policy to none; 取消備份保留策略
rman>configure backup optimization on; 啟用備份最佳化
rman>configure backup optimization off; 關閉備份最佳化
rman>configure default device type to disk; 預設備份裝置磁碟
rman>configure default device type to sbt; 預設備份裝置磁帶
rman>configure device type disk parallelism 2; 備份通道為2,或並行度2,allocate channel可手工指定;
rman>configure controlfile autobackup on; 備份任何自動備份控制檔案
rman>configure controlfile autobackup off; 自動備份控制檔案關
rman>configure controlfile autobackup format for device type disk to ' f:backup%F'; 自動備份的格式及路徑設定
rman>configure snapshot controlfile name to 'f:databasecontrolbak.ora'; 在備份期間生在成控制檔案的快照
rman>configure database / archivelog backup copies 設定備份檔案冗餘度,即備份時生成copy
rman>configure maxsetsize =...; 配置備份集的最大值
rman>configure encryption .... 設定備份密碼,用於安全恢復
rman>configure encryption for database on/off; 啟用或關閉此密碼
rman>configure encryption algorithm 'ASE256'; 指定加密演算法為ASE256,
rman>configure archivelog deletion policy to appled on standby; 在rac環境中,standby 端可刪備份策略,預設只有primary端可刪
rman>configure exclude for tablespace 'users'; 備份進排除users表空間不備份
rman> configure ... clear; 把更改項恢復到預設引數

3) .set命令 我們講了configure是全域性的,那麼set就是會話級的更改,牛吧 !
塊外執行的命令
rman>set echo on | off 顯示或關閉rman顯示
rman>set commang id to 'wangzz' 這時你在v$session 檢視中,你會發現client_info 列值有id=wangzz的資訊,方便你檢視備份時狀態.
rman>set DBID n; 只能在nomount模式下執行,指定資料庫的識別符號
塊內執行的命令
rman>run{
allocate channel c1 to device type disk;
set newname for datafile 4 to 'f:123.dbf'; 備份時把絕對檔案重新命名並指定到新的地方,牛,這樣也可以,i 服了u
.....
}

rman> run{
allocate ....
set until time "to_date('2010-02-01','yyyy-mm-dd'); 設定恢復到某個時間點. 太強了,又汗一個.
...
}

rman> run{
...
set backup copies ; 設定備份片段的冗餘數
...
}

rman> run{
...
set archivelog destination to 'f:...'; 指定歸檔檔案的備份路徑,預設在log_archive_dest_1;
...
}

4) . list
rman>list backup; 下面就不作說明了,太簡單了
rman>list backup of controfile;
rman>list backup of datafile 'f:user01.dbf'
rman>list backup of datafile n;
rman>list backup of archivelog all;
rman>list device type disk backup; 列出某個裝置上的所有資訊,
rman>list copy of tablespace 'system' 列出系統表空間的(副本)備份資訊,
rman>list expired backup; 列出無效的備份

5) . delete
rman資料庫(rman repository),這是一個邏輯概念,指rman備份恢復需要用到的資料資訊,如備份集路徑,歸檔檔案路徑等,
如果使用了恢復目錄,則這部分資料儲存於恢復目錄中(recovery catalog),否則只會儲存在目標資料庫的控制檔案中。
rman>delete obsolete; 刪除過期備份
rman>delete expired backup; 先crosscheck檢查備份集,再標記失效的備份,再刪除
rman>delete expired copy; 刪除expired 副本
rman>delete backupset 19; 刪除特定備份集
rman>delete backuppiece 'f:backupdemo_19.bak' 刪除特定備份片
rman>delete backup; 刪除所有備份集
rman>delete datafile copy 'f:backupdemo_19.bak' 刪除特定映像副本
rman>delete copy; 刪除所有映像副本
rman>backup archivelog all delete input; 備份歸檔後刪除歸檔
rman>delete backupset 22 format="f:backup%u.bak" delete input 備份備份集22後,刪除原備份集的id 22;

附錄:當在delete obsolete 時出現如下錯誤,主要原因是因為當前的備份裝置型別( 如原預設是磁帶,現變成磁碟了。用show all檢視一下)不一致了。
RMAN-06091 no channel allocated for maintenance (of an appropriate type)
解決方法: 用下列命令組合就可以清除,你會明白意思的!
rman> ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK;
rman> delete obsolete;
rman> allocate channel for maintenance device type 'sbt_tape' PARMS '...';
rman> delete obsolete;
rman>allocate channel for maintenance type sbt_tape;
rman>allocate channel for maintenance type disk;
rman>delete obsolete device type disk;

6) , report 報表顯示: 就是對前面所有備份的資訊進行分析
rman>report schema at time'sysdate-7'; 檢視7天前資料庫的模式
rman>report need backup; 檢視所有需要備份的檔案
rman>report need backup tablespace system; 檢視指定表空間是否需要備份
rman>report obsolete; 檢視過期
RMAN> report schema; 報告目標資料庫的物理結構


7) , crosscheck 檢查備份或歸檔物理檔案的狀態,如果物理檔案存在,並且控制檔案或(恢復目錄)中
有匹配記錄,則有效,如果檔案不存在,則expired無效.
rman>crosscheck archivelog all; 驗證歸檔日誌檔案,當nls_lang=simplified chinese_china時,10g有一個bug,當提示
驗證成功,要小心,這個說明是失敗的,當提示驗證失敗時,反而是成功的。切記
當nls_lang=american_america時,就正常顯示了
rman>crosscheck bakcup; 驗證所有備份集

8) , change 修改狀態 修改備份檔案或歸檔日誌檔案的狀態,不是指物理檔案,而是這些檔案在控制檔案
或恢復目錄中對應記錄的狀態,有二種available & unavailable
rman>change backupset n unavailable; 備份集n為不可用
rman>change backup of tablespace user unavailable; 對user 表空間的備份集設為不可用,
rman>change archivelog logseq=n unavailable; n為歸檔檔案序號,可能透過list archivelog all 或查詢v$ARCHIVED_LOG 獲取,
當然你也可以指定歸檔檔案的詳細路徑
rman>change archivelog logseq=n delete; 序列號為n的歸檔檔案,被更改狀態後直接刪除

9),format 引數
%c:備份片的複製數(從1開始編號);
%d:資料庫名稱;%D:位於該月中的天數 (DD);
%M:位於該年中的月份 (MM);
%F:一個基於DBID 唯一的名稱,這個格式的形式為c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII 為該資料庫的DBID,YYYYMMDD 為日期,QQ 是一個1-256 的序列;
%n:資料庫名稱,並且會在右側用x字元進行填充,使其保持長度為8;
%u:是一個由備份集編號和建立時間壓縮後組成的8字元名稱。利用%u可以為每個備份集生成一個唯一的名稱;
%p:表示備份集中備份片段的編號,從1 開始編號;
%U:是%u_%p_%c的簡寫形式,利用它可以為每一個備份片段(即磁碟檔案)生成一個唯一名稱,這是預設的命名方式;
%s:備份集的號;
%t:備份集時間戳;
%T:年月日格式(YYYYMMDD);

有了上述基礎,維護應該沒什麼問題了吧!

轉自:http://hi.baidu.com/risowangzz/blog/item/70efb97c79bca20528388abb.html

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

相關文章