前提:
rman用戶必須具有sysdba權限
使用常用連接方式如下:
rman target /
rman target sys/oracle
rman target sys/oracle@prod1 catalog dav/oracle@dav_db
一個rman連接會產生兩個進程,action字段為空的就是rman的監控進程,另一個是主會話。
?
select sid,serial#,module,action from v$session where module like '%rman%';
SID SERIAL# MODULE ACTION
---------- ---------- -------------------------- --------------------------------
20 20 rman@davdb.us.oracle.com (TNS V1-V3)
139 45 rman@davdb.us.oracle.com (TNS V1-V3) 0000001 FINISHED70
rman 備份主要以備份為主
壓縮備份:壓縮比5:1
一、介紹
1、備份數據文件、歸檔、控制文件、spfile
2、自動維護備份相關元數據
3、只備份使用過的數據塊
4、自動檢測壞塊
5、可以對備份文件進行壓縮
6、支持增量
二、rman體系結構
1、帶庫不驗證備份集好壞。
2、磁帶存儲靈活性要比陣列好
3、磁盤陣列速度快還穩定
4、使用帶庫還要買備份軟件
5、如果公司生產庫有幾十套庫,可以考慮使用帶庫
備份時通道一般分配3-6個就可以。
三、rman備份
在oracle8的時候必須使用catalog庫,因為rman恢復命令不支持from 備份集的語句,9i以后就不需
要了。
備份集的存儲位置必須是oracle數據庫服務器能直接讀寫的位置。
四、備份集數量由以下幾個因素決定:
a、輸入文件的數量:一個備份集至少包含一個輸入文件,輸入文件不可以跨多個備份集,默認一個備份集最多容納64個輸入文件
b、通道的個數,但是也要看文件的個數是否大于等于通道數,如果小于通道數,那么產生的備份集的數量行于實際文件的個數。
c、并行參數的設置
假設:users表空間有兩個數據文件
RMAN> backup tablespace users ;這個命令將產生一個備份集。
a、輸入文件的數量:一個備份集至少包含一個輸入文件,輸入文件不可以跨多個備份集,默認一個備份集最多容納64個輸入文件
RMAN> backup tablespace users filesperset 1;
如果users表空間有兩個數據文件,filesperset 1所以一次只能輸入一個文件,那這個命令將產生兩個備份集。
b、通道的個數,但是也要看文件的個數是否大于等于通道數,如果小于通道數,那么產生的備份集的數量行于實際文件的個數。
RMAN> run{
2> allocate channel c1 type disk;--這一段命令也是產生兩個備份集3> allocate channel c2 type disk;4> backup tablespace users;5> }
c、并行參數的設置,這條命令也產生兩個備份集
RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 2;RMAN> backup tablespace users;RMAN> backup tablespace system section size=100m; --這條命令用來驗證一個備份集里可以有多個備份片。RMAN>configure channel device type disk format '/home/oracle/davbak/%d_%U.FULL'
MAXPIECESIZE 20M;
obsolete狀態,是針對MAN備份保留策略來說的,超過了這個保留策略的備份,會被標記為
obsolete,但其狀態依舊為AVAILABLE,我們可以使用report obsolete來查看已廢棄的備份。
刪除廢棄的備份,可以使用delete noprompt obsolete命令(noprompt是指無需確認):
EXPIRED狀態的產生,與crosscheck命令是密切相關的,RMAN通過crosscheck命令檢查備份是否存在于備份介質上,如果不存在,則狀態由AVAILABLE改為EXPIRED。
1、備份表空間的命令
?
rman target /
rman> backup tablespace users format '/home/oracle/bak/%d_%t_%s_%p.bak';
rman> backup device type disk tablespace users to destination '/home/oracle/bak/';
rman>run{
allocate channel c1 device type disk to destination '/home/oracle/bak/';
allocate channel c2 device type disk to destination '/home/oracle/bak/';
backup
(tablespace users channel c1)(tablespace example channel c2);
}
2、創建catalog庫
sqlplus sys/oracle@prod4 as sysdba
創建catalog庫所有的表空間
SQL> create tablespace ts_catalog datafile '/u01/app/oracle/oradata/PROD4/catalog.dbf' size
400m;
創建用戶:
?
SQL> create user rc_admin identified by RC_ADMIN default tablespace ts_catalog;SQL> grant recovery_catalog_owner,unlimited tablespace to rc_admin;grant connect to catalog;--創建catalog目錄:[oracle@dav-PROD2 ~]$ rman catalog rc_admin/RC_ADMIN@prod4RMAN> create catalog;
--注冊其實數據庫實例到catalog庫中:[oracle@dav-PROD2?~]$ rman target sys/oracle@prod2?catalog
rc_admin/RC_ADMIN@prod1RMAN> register database;
--取消注冊:unregister database;
--升級catalog庫與target庫之間rman版本RMAN>upgrade catalog
3、使用catalog方式備份數據庫全備:
?
[oracle@edsir4p1-PROD2 ~]$ rman target sys/oracle@dav_prod2 catalog
rc_admin/RC_ADMIN@dav_prod4
RMAN> backup database format '/home/oracle/rman/prod2_%U.bkp' plus archivelog format
'/home/oracle/rman/prod2_%U.arc';
4、給備份集加標簽,并做永久保留
?
[oracle@davdb-PROD1 ~]$ rman target sys/oracle@davdb catalog rc_admin/RC_ADMIN@prod4RMAN> backup archivelog all format '/home/oracle/davbak/prod1_%U.arc' tag='Q107' keep
forever;
5、壓縮備份 加分片,限制備份片大小
備份某個表空間并分成規定大小的備份片:
多段備份:可以將較大的數據文件備份劃分為固定大小的多段備份。rman將大的數據文件劃分為文件塊,
該劃分是將文件邏輯劃分為連續塊,每個文件塊使用一個備份集片
?
rman>backup tablespace system section size=30m format '/home/oracle/bak/%U';RMAN> backup as compressed backupset tablespace example format
'/home/oracle/bak/%d_%U.BAK';--壓縮加分片RMAN> CONFIGURE channel device type disk maxpiecesize 100m;--通過修改默認參數來控制備份片大小.RMAN> CONFIGURE MAXSETSIZE TO 800M;--通過修改默認參數設置備份集的大小來間接控制備份片的大小;
6、開啟塊跟蹤
?
RMAN> CONFIGURE BACKUP OPTIMIZATION ON;--打開備份優化設置通過如下命令
SQL> alter database enable block change tracking using file ' /home/oracle/files/bck.dbf';
select status,filename,bytes from v$block_change_tracking;
7、寫一個備份腳本,每周做一次全備,每天做兩次歸檔備份,控制文件自動備份
8、冗余策略:
config retention policy to recovery window of 7 days;
crontab常用參數:
冗余份數=恢復時間窗口/全備的間隔時間+1
一份=全備+與下次全備之間的歸檔
crontab -l //查看當前用戶下的cron任務
crontab -e //編輯當前用戶的定時任務
crontab -u linuxso -e //編輯用戶linuxso的定時任務
具體用法和格式:
基本格式 :
* * * * * command
分 時 日 月 周 命令
第1列表示分鐘1~59 每分鐘用*或者 */1表示
第2列表示小時1~23(0表示0點)
第3列表示日期1~31
第4列表示月份1~12
第5列標識號星期0~6(0表示星期天)
第6列要運行的命令
crontab文件的一些例子:
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重啟apache。