rman學習-tina
rman的功能非常強大,下面我們來一步步的學習
首先想到的是備份
一、rman備份資料庫和各類檔案
1)備份資料檔案:
rman> backup datafile '/u01/oradata/tinadb/ts_tina01.dbf'; --直接指定具體檔案名
或者使用file_id
rman> backup datafile 5;
rman> backup as copy datafile 5 format '/orabak/df_%d%u'; --備份類型為鏡像備份
rman> backup datafile 4,5,6 format '/orabak/df_%d_%u'; --備份類型為備份集
rman> list backup of datafile 5; --檢視某個資料檔案的備份片
必須是在開啟歸檔模式的情況下,否則會報錯:ora-19602: cannot backup or copy active file in noarchivelog mode
2)備份控制檔案:
rman> backup current controlfile;
或者
rman> sql "alter database backup controlfile to '/tmp/tinadb.control'";
rman> list backup of controlfile; --檢視控制檔案的備份片
rman> configure controlfile autobackup on; --開啟控制檔案的自動備份
rman> configure controlfile autobackup on; --關閉
當 autobackup 被置為on時,rman 做任何備份操作,都會自動對控制檔案做備份
3)備份參數檔案:
rman> backup spfile;
rman> backup spfile format '/orabak/sp_%d%u'; ---都是可以指定format的,當然也可以不要。
rman> list backup of spfile; --檢視參數檔案的備份片
4)備份表空間:
rman> backup tablespace users,ts_tina format '/orabak/tb_%d_%u';
臨時表空間不需要備份。
5)備份資料庫:
rman> backup database; ---直接備份全庫
rman> backup database format '/orabak/whole_%d_%u'; ---指定備份的格式
rman> backup database include current controlfile; --連同控制檔案一起全庫備份
rman> backup database plus archivelog; --連同歸檔日志一起全庫備份
rman> backup as compressed backupset database format '/orabak/whole_%d_%u'; --備份全庫并壓縮備份集
rman> run {
backup database
format '/orabak/full_%d_%t_%s'
plus archivelog
format '/orabak/arch_%d_%t_%s'
delete all input; }
增量備份level0 level1 level2
backup incremental level 0 database;
backup incremental level 1 database; --差異增量
backup incremental level 1 cumulative database; --累計增量
假設:
每半年做一個資料庫的全備份
每一個月做一次零級備份
每個星期做一次一級備份 (備份的就是上次0/1級備份到目前所有的改變)0-1-1-1 這每個之間的改變
每天做一次一級累計備份 (備份的就是上次0級備份到目前所有的改變) 0----目前所有的改變,不管中間有沒有其他備份
全庫備份腳本
rman> run{
allocate channel c1 type disk; ---開3個通道
allocate channel c2 type disk;
allocate channel c3 type disk;
#for 11g database
backup as compressed backupset database tag ${oracle_sid}_bk_whole format '${bk_path}/db_whole_${oracle_sid}_%u'; --目錄和sid自己指定
#primary database
#backup format '${bk_path}/$oracle_sid.control_%t_%p_%s' current controlfile for standby;
#standby database or single instance
backup format '${bk_path}/$oracle_sid.control_%t_%p_%s' current controlfile;
release channel c1;
release channel c2;
release channel c3;
}
零級備份腳本
allocate channel c1 type disk;
backup as compressed backupset incremental level=0 tag ${oracle_sid}_bk_level_0 format '${bk_path}/db_0_${oracle_sid}_%u' database;
backup current controlfile format='${oracle_sid}_ctl_file_%t_%p_%s';
sql 'alter system archive log current';
#備份歸檔可選,可以單獨定期備份
backup filesperset 3 format '/u01/oradata/backup/arch%u_%s_%p' archivelog all delete input;
一級差異備份
backup as compressed backupset incremental level=1 format '${bk_path}/db_1_${oracle_sid}_%u' database;
backup current controlfile format='${oracle_sid}_ctl_file_%t_%p_%s';
一級累計備份
backup as compressed backupset incremental level=1 format '${bk_path}/db_1_${oracle_sid}_%u' cumulative database;
備份腳本執行個體 ---可添加cron定期執行備份
#!/bin/bash
export oracle_home=/u01/oracle
export oracle_sid=tinadb
export bk_path=/orabak/${oracle_sid}
mkdir -p $bk_path
date > $bk_path/backup_${oracle_sid}.log
$oracle_home/bin/rman target / log $bk_path/backup_${oracle_sid}.log append <<eof
run
{
allocate channel c1 type disk;
allocate channel c2 type disk;
backup as compressed backupset database format '${bk_path}/db_0_${oracle_sid}_%u';
backup format '${bk_path}/$oracle_sid.control' current controlfile;
backup filesperset 8 archivelog all delete input format '/orabak/arch%u_%s_%p' ;
release channel c1;
release channel c2;
}
eof
date >>$bk_path/backup_${oracle_sid}.log
$oracle_home/bin/sqlplus / as sysdba <<eof
create pfile='$bk_path/${oracle_sid}_pfile' from spfile;
cp $oracle_home/dbs/orapw$oracle_sid $bk_path
cp $oracle_home/network/admin/*.ora $bk_path
5)備份歸檔日志:
rman> backup archivelog all delete input; --加上delete input 就是删除所有已經備份過的歸檔日志
rman> backup archivelog all delete input format '/orabak/arch_%t_%s_%u';
rman> backup archivelog sequence between 50 and 120 thread 1 delete input;
rman> backup archivelog from time "sysdate-15" until time "sysdate-7";
二、backup常用指令
1.設定備份标記
backup database tag='full_bak1';
注:每個标記必須唯一,相同的标記可以用于多個備份隻還原最新的備份。
2.設定備份集大小(一次備份的所有結果為一個備份集,要注意備份集大小)
backup database maxsetsize=100m tag='datafile1';
注:maxsetsize限定備份集的大小。是以必須大于資料庫總資料檔案的大小,否則會報錯。
rman-06183: datafile or datafile copy larger than maxsetsize: file# 1 /data/oradata/system01.dbf
3.設定備份片大小(錄音帶或檔案系統限制)
run {
allocate channel c1 type disk maxpicecsize 100m format '/data/backup/full_0_%u_%t';
backup database tag='full_0';
release channel c1;
}
可以在allocate子句中設定每個備份片的大小,以達到錄音帶或系統限制。
也可以在configure中設定備份片大小。
configure channel device type disk maxpiecesize 100 m;
configure channel device type disk clear;
4.備份集的儲存政策
backup database keep forever; --永久保留備份檔案
backup database keep until time='sysdate+30'; --儲存備份30天
5.重寫configure exclude指令
backup database noexclude keep forever tag='test backup';
6.檢查資料庫錯誤
backup validate database;
使用rman來掃描資料庫的實體/邏輯錯誤,并不執行實際備份。
7.跳過脫機,不可存取或隻讀檔案
backup database skip readonly;
backup database skip offline;
backup database skip inaccessible;
backup database skip readonly skip offline skip inaccessible;
8.強制備份
backup database force;
9.基于上次備份時間備份資料檔案
1>隻備份添加的新資料檔案
backup database not backed up;
2>備份"在限定時間周期内"沒有被備份的資料檔案
backup database not backed up since time='sysdate-2';
10.備份操作期間檢查邏輯錯誤
backup check logical database;
backup validate check logical database;
11.生成備份副本
backup database copies=2;
三、rman檢視備份
1) list 目前rman所備份的資料庫:
1.1. list backup summary; --概述可用的備份
list incarnation; --彙總查詢
--如果備份檔案多的話多用這兩個list指令可以對備份檔案有個總體了解。
b 表示backup
a 表示archivelog、 f 表示full backup、 0,1,2 表示incremental level備份
a 表示可用avaliable、 x 表示expired
1.2.list backup by file;--按照檔案類型分别列出
分别為:資料檔案清單、歸檔日志清單、控制檔案清單、spfile清單
1.3.list backup;
這個指令列出已有備份集的詳細資訊。
1.4.list expired backup;
列出過期的備份檔案
1.5.list copy;
列出copy檔案
list copy of database;
list copy of controlfile;
list copy of tablespace users;
list copy of datafile n,n,n;
list copy of archivelog all;
list copy of archivelog from scn 10000;
list copy of archivelog until sequence 12;
2)list 相關檔案的資訊
list backup of {archivelog, controlfile, database, datafile, spfile, tablespace};
list backup of database; --full,incremental,tablespace,datafile
2.5歸檔日志:
list backup of archivelog {all, from, high, like, logseq, low, scn, sequence, time, until};
list backup of archivelog all;
list backup of archivelog until time 'sysdate-1';
list backup of archivelog from sequence 10;
list backup of archivelog until sequence 10;
list backup of archivelog from scn 10000;
list backup of archivelog until scn 200000;
list archivelog from scn 1000;
list archivelog until scn 2000;
list archivelog from sequence 10;
list archivelog until sequence 12;
四、rman配置政策
4.1 顯示目前的配置資訊
4.1.1 rman> show all;
rman 配置參數為:
rman configuration parameters for database with db_unique_name tinadb are:
configure retention policy to redundancy 1; # default
configure backup optimization off; # default
configure default device type to disk; # default
configure controlfile autobackup on;
configure controlfile autobackup format for device type disk to '%f'; # default
configure device type disk parallelism 1 backup type to backupset; # default
configure datafile backup copies for device type disk to 1; # default
configure archivelog backup copies for device type disk to 1; # default
configure maxsetsize to unlimited; # default
configure encryption for database off; # default
configure encryption algorithm 'aes128'; # default
configure compression algorithm 'basic' as of release 'default' optimize for load true ; # default
configure archivelog deletion policy to none; # default
configure snapshot controlfile name to '/u01/oracle/dbs/snapcf_tinadb.f'; # default
4.1.2 查詢rman設定中非預設值:
sql> select name,value from v$rman_configuration;
name value
-------------- -----------------
controlfile autobackup on
4.2. 常用的configure選項
4.2.1 儲存政策
configure retention policy to recovery window of 7 days;
configure retention policy to redundancy 5;
configure retention policy clear;
configure retention policy to none;
第一種recover window是保持所有足夠的備份,可以将資料庫系統恢複到最近七天内的任意時刻。
任何超過最近七天的資料庫備份将被标記為obsolete。
第二種redundancy 是為了保持可以恢複的最新的5份資料庫備份,任何超過最新5份的備份都将被标記為redundancy。它的預設值是1份。
第三四:none 可以把使備份保持政策失效,clear 将恢複預設的保持政策
一般最安全的方法是采用第二種保持政策。
4.2.2 備份優化
configure backup optimization on;
configure backup optimization off;
configure backup optimization clear;
預設值為關閉,如果打開,rman将對備份的資料檔案及歸檔等檔案進行一種優化的算法。
4.2.3 預設裝置
configure default device type to disk;
configure default device type to stb;
configure default device type clear;
是指定所有i/o操作的裝置類型是硬碟或者錄音帶,預設值是硬碟.
4.3.4 控制檔案
configure controlfile autobackup on;
configure controlfile autobackup format for device type disk to '/orabak/conf_%f';
configure controlfile autobackup clear;
configrue controlfile autobackup format for device type disk clear;
configrue snapshot controlfile name to '/orabak/scontrofile.snp';
configrue snapshot controlfile name clear;
--是配置控制檔案的快照檔案的存放路徑和檔案名,這個快照檔案是在備份期間産生的,用于控制檔案的讀一緻性。
強制資料庫在備份檔案或者執行改變資料庫結構的指令之後将控制檔案自動備份
4.3.5 并行數(通道數)
configure device type disk|stb parallelism 2;
configure device type disk|stb clear; --用于清除上面的信道配置
configure device type disk parallelism 1 backup type to copy; --将backup type設定為copy之後,則預設的備份為鏡像副本
configure channel device type disk format 'e/:rmanback_%u';
configure channel device type disk maxpiecesize 100m
configure channel device type disk rate 1200k
configure channel 1 device type disk format 'e/:rmanback_%u';
configure channel 2 device type disk format 'e/:rmanback_%u';
configure channel 1 device type disk maxpiecesize 100m
配置資料庫裝置類型的并行度。
4.3.6 生成備份副本
configure datafile backup copies for device type disk|stb to 3;
configure archivelog backup copies for device type disk|stb to 3;
--是設定資料庫的歸檔日志的存放裝置類型
configure datafile|archivelog backup copies for device type disk|stb clear
backup device type disk database format '/disk1/backup/%u', '/disk2/backup/%u', '/disk3/backup/%u';
是配置資料庫的每次備份的copy數量,oracle的每一次備份都可以有多份完全相同的拷貝。
4.3.7 排除選項 exclude
configure exclude for tablespace 'users';
configrue exclude clear;
此指令用于将指定的表空間不備份到備份集中,此指令對隻讀表空間是非常有用的。
4.3.8 備份集大小 maxsetsize
configure maxsetsize to 1g|1000m|1000000k|unlimited;
configure maxsetsize clear;
4.3.9 歸檔删除
10g新增,兩個值
applied on standby:設定該值,當通過附加的delete input字句删除standby資料仍需要的日志時,會提示rman-08137錯誤,
但使用者仍可以手動通過delete archivelog删除.
none:設定該值,則不啟用歸檔檔案的删除政策,預設就是none.
rman>configure archivelog deletion policy to applied on standby;
rman>configure archivelog deletion policy to none;