RMAM基礎命令

leon830216發表於2014-02-23
1. 登入資料庫
$ export ORACLE_SID=test
$ rman target /
$ rman target sys/admin@tnsname

$ rman
$ connect target /
$ connect target sys/admin@tnsname


2. 輸出日誌
rman target / log C:\rman.log


3. 顯示配置
show all


4. 執行主機命令
RMAN> host;


5. 備份

5-1. 備份全庫
backup database
backup database format '/backup/bak_%U'

5-2. 備份表空間
backup tablespace users

5-3. 備份指定資料檔案
backup datafile '/data/system01.dbf'
backup datafile 1

5-4. 備份控制檔案
backup datafile 1
backup tablespace system
configure controlfile autobackup on
backup current controlfile
backup datafile 4 include current controlfile
backup spfile include current controlfile
backup database include current controlfile

5-5. 備份 spfile
bakcup spfile

5-6. 備份歸檔日誌檔案
backup archivelog all [delete input]

# 會歸檔並備份當前日誌和備份過程中的日誌, 任何 backup 命令都可以加 plus
# 還可以透過制定 until scn time sequence 等指定歸檔區間
backup database plus archivelog

5-7. 備份備份集
# 只能從磁碟到磁碟或磁碟到磁帶, 適用於從磁碟備份到磁帶
backup backupset all [delete input]
backup backupset n,m


6. 列出備份資訊
list backup of database
list copy of tablespace system
list backup of datafile n ['/data/users.dbf']
list device type disk [tbs] backup --- 列出某裝置上的備份資訊
list backup of controlfile
list backup of archivelog all
list expired backup --- 列出無效備份


7. 刪除備份
# delete noprompt xxx

7-1. 刪除過期備份, 根據冗餘策略
delete obsolete

7-2. 刪除無效備份
crosscheck backup
delete expired backup

7-3. 刪除 expired 副本
delete expired copy

7-4. 刪除特定備份集
delete backupset 19


7-5. 刪除指定備份片
delete backuppiece '/backup/DEMO_19.bak'

7-6. 刪除所有備份集
delete backup

7-7. 刪除特定影像備份
delete datafile copy '/backup/DEMO_19.bak'

7-8. 刪除所有映像副本
delete copy

7-9. 備份後刪除輸入物件
backup archivelog all delete input
backup backupset 22 format = "/data/%u.bak" delete input


8. 報表顯示
# 檢視模式資訊, 必須連線catalog

8-1. 檢視 7 天前資料庫的模式
report schema at time 'sysdate-7'

8-1. 檢視所有需要備份的檔案
report need backup

8-2. 檢視指定表空間是否需要備份
report need backup tablespace system

8-3. 檢視過期備份
report obsolete;
report obsolete redundancy 1;
report obsolete recovery window of 1 days;


9. 執行檢查

9-1. 檢查所有歸檔檔案, 並更新控制檔案中 RMAN 備份資訊
# 可以解決備份歸檔日誌時的下列錯誤
# RMAN-06059: expected archived log not found, lost of archived log compromises recoverability
crosscheck archivelog all;
change archivelog all crosscheck;

# 刪除所有歸檔, 同時更新控制檔案, 這樣再備份歸檔日誌時不會報錯
delete archivelog all;

9-2. 檢查所有備份集
crosscheck backup;


10. 修改記錄狀態

10-1. 修改指定備份集狀態
change backupset n unavailable
change backupset n available

10-2. 修改表空間備份集狀態
change backup of tablespace users available

10-3. 修改歸檔日誌檔案狀態同時還可以刪除
# logseq為歸檔檔案序號, 透過 v$archived_log 獲取
change archivelog logseq=n unavailable [delete]


11. 執行指令碼

11-1.
rman target / @aaa.rman
@aaa.rman
run{ @aaa.rman }

11-2. 執行儲存在回覆目錄中的指令碼
run { execute script backup_whole_db }

11-3. 作業系統指令碼
rman cmdfile=bak.rman


12. 塊修改跟蹤
alter database enable block change tracking using file '/data/filename.log';
alter database disable block change tracking;
select status from v$block_change_tracking;


13. 複合備份 (duplexed)

13-1. 備份時指定
backup copies 2 spfile;
run {
set backup copies 2;
backup device type disk format '/back/1_%U', '/back/2_%U' spfile;
}

13-2. 引數中指定
configure datafile backup copies for device type disk to 2;
configure archivelog backup copies for device type disk to 2;
configure channel 1 device type disk format '/back/1_%u';
configure channel 2 device type disk format '/back/2_%u';


14. 分配通道

14-1. 引數中指定
configure channel device type disk format '/back/%u';
configure default device type to disk;
configure channel 1 device type disk format '/back/1_%u';
configure channel 2 device type disk format '/back/2_%u';

14-2. 手動分配
run {
allocate channel c1 device type disk format '/home/oracle/1_%U';
backup spfile;
release channel c1;
}

# 維護用的通道, 不能放在 run 中
allocate channel for maintenance device type disk;
crosscheck backupset;
delete noprompt obsolete;

15. 指定備份集檔名
backup spfile format '/back/%U';


16. 指定備份檔案標籤
backup spfile tag 'tag_spfile';


17. 指定備份大小和數量
configure maxsetsize to unlimited;

17-1. 備份片大小
RMAN> run {
allocate channel c1 device type disk maxpiecesize=20k format '/back/%U';
backup tablespace users;
release channel c1;
}

17-2. 備份集大小
# 限制備份集不超過指定大小
# 備份集中任何一個檔案的大小必須大於指定的大小, 否則備份報錯
# 實際應用中一般限制備份片大小
backup database maxsetsize=300m;

17-3. 備份片個數
backup database plus archivelog filesperset 20;
backup tablespace users filesperset 10;


18. 備份壓縮
backup as compressed backupset spfile;


19. 備份加密

19-1. 型別

19-1-1. 透明模式 (transparent encryption mode)
需要配置 oracle encryption wallet 特性
適合於同一伺服器的備份恢復

19-1-2. 密碼模式 (password encryption mode)
適合於不同伺服器的備份恢復
在備份前設定密碼, 恢復前指定密碼
僅當前會話有效, 會覆蓋 configure 設定
set encryption on identified by pass only;

19-1-3. 雙重模式 (dual encryption mode)
# 使用 configure 同時, 使用 set encryption 命令 (不加 only)
configure encryption for database on;
configure encryption for tablespace users on;
configure encryption algorithm 'aes128';


20. format 字串 (注意大小寫)
# 如果在 BACKUP 命令中沒有指定 FORMAT 選項, 則 RMAN 預設使用 %U 為備份片段命名
%a: 資料庫的 activation ID 即 RESETLOG_ID
%c: 備份片段的複製數 (從 1 開始編號最大不超過256)
%d: 資料庫名稱
%D: 當前時間中的日, 格式為DD
%e: 歸檔序號
%f: 絕對檔案編號
%F: 基於 "DBID + 時間" 確定的唯一名稱, 格式的形式為 c-IIIIIIIIII-YYYYMMDD-QQ, 其中 IIIIIIIIII 為該資料庫的DBID, YYYYMMDD 為日期, QQ 是一個 1-256 的序列
%h: 歸檔日誌執行緒號
%I: 資料庫的 DBID
%M: 當前時間中的月, 格式為 MM
%N: 表空間名稱
%n: 資料庫名稱, 並且會在右側用 x 字元進行填充, 使其保持長度為 8
%p: 備份集中備份片段的編號, 從 1 開始
%s: 備份集號
%t: 備份集時間戳
%T: 當前時間的年月日格式 (YYYYMMDD)
%Y: 當前時間中的年, 格式為 YYYY
%u: 是一個由備份集編號和建立時間壓縮後組成的 8 字元名稱。利用 %u 可以為每個備份集生成一個唯一的名稱
%U: 預設是 %u_%p_%c 的簡寫形式, 利用它可以為每一個備份片段 (即磁碟檔案) 生成一個唯一名稱
這是最常用的命名方式, 執行不同備份操作時, 生成的規則也不同:
生成備份片段時, %U=%u_%p_%c;
生成資料檔案映象複製時,%U=data-D-%d_id-%I_TS-%N_FNO-%f_%u
生成歸檔檔案映象複製時,%U=arch-D_%d-id-%I_S-%e_T-%h_A-%a_%u
生成控制檔案映象複製時,%U=cf-D_%d-id-%I_%u


22. set 配置

22-1. run 塊外的常用設定
# 控制時候回顯執行的命令列
set echo off;
set echo on;

# 可以透過查詢 v$session 來檢視備份執行的狀態
set command id to 'demo';

# nomount 下執行
set dbif n;

22-2. run 內的常用設定

# 指定資料檔案新路徑
run {
allocate channel c1 device type disk;
set newname for datafile 4 to '/data/users.dbf';
}

# 指定恢復時間點或 scn
run {
allocate channel c1 device type disk;
set until time "to_date('2012-01-01 01:01:01', 'yyyy-mm-dd hh24:mi:ss')";
}

# 指定備份片段的冗餘
run {
allocate channel c1 device type disk;
set backup copies 3;
}

# 指定 restore/recover 產生的歸檔檔案的儲存路徑
# 預設在 log_archive_dest_1 下
run {
allocate channel c1 device type disk;
set archivelog destination to '/arch/';
}

23. 相關動態檢視
v$backup_set
v$backup_set_details
v$backup_set_summary
v$backup_piece
v$backup_piece_details
v$backup_corruption
v$session
v$session_longops
v$process

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