RMAN 前期準備工做和實例

      理解恢復目錄,RMAN能夠在沒有恢復目錄(NOCATALOG)下運行,這個時候備份信息保存在控制文件。保存在控制文件的備份信息是很危險的,若是控制文件的破壞將致使備份信息的丟失與恢復的失敗,並且,沒有恢復目錄,不少RMAN的命令將不被支持。因此對於重要的數據庫,建議建立恢復目錄,恢復目錄也是一個數據庫,只不過這個數據庫用來保存備份信息,一個恢復目錄能夠用來備份多個數據庫。 sql

      1,建立RMAN目錄:數據庫

SQL> create tablespace rman_tablespace datafile 'G:\ORADATA\ORCL\RMANTBS1.DBF' size 50m

      2,建立RMAN用戶:windows

SQL> create user rman
  2  identified by rman
  3  default tablespace rman_tablespace
  4  temporary tablespace temp;

用戶已建立。

     3,給RMAN用戶受權:安全

SQL> grant connect, resource, recovery_catalog_owner to rman;

受權成功。

     4,打開rman管理器,鏈接數據庫服務器

複製代碼
C:\>rman

恢復管理器: Release 11.2.0.1.0 - Production on 星期五 10月 30 15:46:30 2015

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

RMAN> connect catalog rman/rman@ORCL

鏈接到恢復目錄數據庫
複製代碼

      5,建立恢復目錄oracle

RMAN> create catalog tablespace rman_tablespace

恢復目錄已建立

      6,註冊目標數據庫,恢復目錄建立成功後,就能夠註冊目標數據庫了,目標數據庫就是須要備份的數據庫,一個恢復目錄能夠註冊多個目標數據庫,註冊目標數據庫的命令爲:異步

quit退出RMAN管理器,執行:ide

複製代碼
C:\>rman target ben/oracle123@ORCL catalog rman/rman@ORCL;

恢復管理器: Release 11.2.0.1.0 - Production on 星期五 10月 30 16:02:32 2015

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

鏈接到目標數據庫: ORCL (DBID=1414372110)
鏈接到恢復目錄數據庫
複製代碼

      --若是報下面這個錯誤,是權限不足的問題,【控制面板】-【管理工具】-【計算機管理】-【本地用戶和組】-【用戶】-找到當前登錄用戶-右鍵屬性-【隸屬於】標籤-【添加】-輸入ora_dba,-【檢查名稱】-一路【肯定】返回。從新執行上條命令。工具

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00554: 內部恢復管理器程序包初始化失敗
RMAN-04005: 目標數據庫中存在錯誤:
ORA-01031: insufficient privileges

       7,使用恢復目錄註冊數據庫性能

RMAN> register database;

註冊在恢復目錄中的數據庫
正在啓動所有恢復目錄的 resync
完成所有 resync

      ················································· 前期工做完成,下面就可使用rman命令備份數據庫了····································

 

 

------------------------------------------------------複製黏貼的分割線---------------------------------------------------

 

 

 

RMAN使用腳原本備份數據庫,如下是RMAN進行備份的幾個例子。 
a.備份整個數據庫 
backup full tag ‘basicdb’ format ‘/bak/oradata/full_%u_%s_%p’ database; 
b.備份一個表空間 
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp]backup tag ‘tsuser’ format ‘/bak/oradata/tsuser_%u_%s_%p’ tablespace users; 
c.備份歸檔日誌 
backup tag ‘alog’ format ‘/bak/archivebak/arcbak_%u_%s_%p’ archivelog all delete input; 
ii.維護RMAN 
RMAN的維護主要分爲幾個方面 
一、[nbsp][nbsp][nbsp]查看RMAN的信息 
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp]檢查現有備份[nbsp]檢查現有備份[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp]RMAN>list backup 
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp]列出過時備份[nbsp]列出過時備份[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp]RMAN>report obsolete 
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp]刪除過時的備份[nbsp]刪除過時的備份[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp]RMAN>allocate channel for maintenance type disk; 
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp]RMAN>changebackupsetiddelete;[nbsp]RMAN>changebackupsetiddelete;[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp]RMAN>release channel; 
二、[nbsp][nbsp][nbsp]同步或重置RMAN 
若是目標數據庫物理對象發生了變化,如添加了一個數據文件,須要用以下命令同步: 
RMAN>resync catalog; 
若是目標數據庫reset了數據庫,須要用以下命令同步 
RMAN>reset database; 
當手工刪除了數據庫的歸檔文件後,要執行如下腳本同步 
RMAN>allocate channel for maintenance type disk; 
RMAN> change archivelog all crosscheck; 
RMAN>release channel; 
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp]當手工刪除了數據庫的RMAN備份後,要執行如下腳原本同步[nbsp]當手工刪除了數據庫的RMAN備份後,要執行如下腳原本同步[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp]RMAN>allocate channel for maintenance type disk; 
RMAN>crosscheck backup; 
RMAN>delete expired backup; 
RMAN>release channel; 
4、定製恰當的備份策略 
i.定製正確的策略 
正確的備份策略不只能保證數據庫服務器的24*7的高性能的運行,還能保證備份與恢復的快速性與可靠性。咱們將以RMAN的多級增量備份做爲一個備份策略的例子來討論。採用多級備份就是爲了減小天天備份所須要的時間,而又保證系統有良好的恢復性。恢復時間與備份時間要有一個權衡。好比只要進行一個數據庫的全備份,而後就只備份歸檔也能夠保證能把數據庫恢復到最新的狀態,可是這樣的恢復時間將是不可容忍的。多級備份也正是 爲了解決這種問題,如下就是一個多級備份的例子: 
每半年作一個數據庫的全備份(包括全部的數據和只讀表空間) 
每個月作一次零級備份(不包含只讀表空間) 
每一個星期作一次一級備份 
天天作一次二級備份 
任何數據庫的更改須要從新同步CATALOG目錄並從新備份(如添加數據文件)或從新備份(如修改表空間爲只讀) 
每次備份後均可以備份歸檔日誌或按期備份歸檔日誌。 
若是可能,能夠直接備份到磁帶上。 
數據庫全備份的腳本 
run{ 
allocate channel c1 type disk; 
allocate channel c2 type disk; 
allocate channel c3 type disk; 
backup full tag ‘dbfull’ format ‘/u01/oradata/backup/full%u_%s_%p’ database 
include current controlfile; 
sql ‘alter system archive log current’; 
backup fileaperset 3 format ‘/u01/oradata/backup/arch%u_%s_%p’ 
archivelog all delete input; #備份歸檔可選,能夠單獨按期備份 
release channel c1; 
release channel c2; 
release channel c3; 

零級備份的腳本 
run{ 
allocate channel c1 type disk; 
allocate channel c2 type disk; 
allocate channel c3 type disk; 
backup incremental level 0 tag ‘db0’ format ‘/u01/oradata/backup/db0%u_%s_%p’ 
database skip readonly; 
sql ‘alter system archive log current’; 
backup fileaperset 3 format ‘/u01/oradata/backup/arch%u_%s_%p’ 
archivelog all delete input; #備份歸檔可選,能夠單獨按期備份 
release channel c1; 
release channel c2; 
release channel c3; 

同理,咱們能夠獲得一級備份,二級備份的腳本,如一級備份的腳本 
run{ 
allocate channel c1 type disk; 
allocate channel c2 type disk; 
allocate channel c3 type disk; 
backup incremental level 1 tag ‘db1’ format ‘/u01/oradata/backup/db1%u_%s_%p’ 
database skip readonly; 
sql ‘alter system archive log current’; 
backup fileaperset 3 format ‘/u01/oradata/backup/arch%u_%s_%p’ 
archivelog all delete input; #備份歸檔可選,能夠單獨按期備份 
release channel c1; 
release channel c2; 
release channel c3; 

若是按照以上備份策略,則天天的所須要備份的數據量只有一天的改變量。而作恢復時最多要恢復當月的一個零級備份+三個一級備份+6個二級備份+當天的歸檔文件。若是不能接受這樣的恢復時間,能夠減小零級備份之間的時間間隔。 
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp]在每次備份後,原則上在該備份點以前的歸檔日誌就能夠刪除掉了,可是爲了進一步的安全以及往後須要(如使用LOGMNR查找所需信息),建議有條件的話,歸檔日誌保存一年,能夠保存在磁帶等廉價存取設備上。 
ii.與RMAN備份有關的優化 
備份操做主要是完成如下三個步驟 
一、從磁盤上讀取數據 
二、在內存中處理數據塊 
三、寫入數據到磁盤或磁帶 
以上的讀寫操做能夠同步或異步的完成,在同步I/O操做中,一個時間只容許有一個IO操做,可是在異步I/O操做中,一個時間容許有多個IO操做。所以,備份與恢復的調優主要集中在如下幾個方面: 
一、[nbsp][nbsp][nbsp]提升同步或異步I/O操做能力 
在支持異步操做的操做系統上,能夠經過設置TAPE_AYSNCH_IO,DISK_ASYNCH_IO和BACKUP_TYPE_IO_SLAVES來支持異步操做,提升寫的能力。 
二、[nbsp][nbsp][nbsp]提升磁盤讀能力 
能夠在backup命令後經過設置DISKRATIO來保證從多個磁盤上讀取數據,保證連續的數據流。 
三、[nbsp][nbsp][nbsp]正確設置緩衝區與參數值 
設置LARGE_POOL_SIZE,使備份可使用連續的緩衝池,經過設置DB_FIL_DIRECT_IO_COUNT能夠提升緩衝區的利用。若是使用磁帶備份,還能夠設置BACKUP_TYPE_IO_SLAVES來提升磁帶的寫能力。 
四、[nbsp][nbsp][nbsp]採用並行備份 
開闢多個通道,能夠實現並行備份與恢復 

iii.備份RMAN數據庫 
RMAN本身的數據庫也須要備份,可是自己很小,並且不是常常發生變化,因此在每次RMAN備份完成後,均可以用以下腳本對RMAN數據庫備份。 
EXP pafile =exprman.sql 
exprman.sql爲 
USERID=RMAN/RMAN 
BUFFER=32768 
OWNER=RMAN 
FILE=RMAN.DMP 
ROWS=Y 
GRANTS=Y 
COMPRESS=Y 
CONSISTENT=Y 
iv.使自動備份數據庫 
自動備份數據庫不外乎如下三種方式 
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp]WINDOWS下的任務計劃(At命令) 
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp]UNIX下的Crontab 
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp]第三方工具如Viritas 
在以上三種方式中Viritas屬於第三方工具,不少人可能都沒有接觸,主要說一下windows的任務計劃與unix的cron 
一、生成腳本文件,如backup.rcv 
假定文件內容以下: 
>cat backup.rcv  connect target sys/password rcvcat rman/rman@localname;  run{  allocate channel c1 type disk;  allocate channel c2 type disk;  allocate channel c3 type disk;  backup fileaperset 3 format ‘/u01/oradata/backup/arch%u_%s_%p’  archivelog all delete input;  release channel c1;  release channel c2;  release channel c3;  }  [>cat backup.rcv  connect target sys/password rcvcat rman/rman@localname;  run{  allocate channel c1 type disk;  allocate channel c2 type disk;  allocate channel c3 type disk;  backup fileaperset 3 format ‘/u01/oradata/backup/arch%u_%s_%p’  archivelog all delete input;  release channel c1;  release channel c2;  release channel c3;  }  [nbsp][nbsp]二、生成執行文件在windows上生成backuparchive.bat,內容包括rmancmdfile=backup.rcv在unix下生成backuparchive.sh,內容包括/oracle/ramn/rmancmdfile=backup.rcv三、加入調度在windows中用任務計劃嚮導便可,或使用at命令。在unix中,在目標機器上編寫一個文件,用以啓動自動備份進程。假定文件名爲ORACLE,文件將放在/var/spool/cron/crontabs目錄下nbsp]二、生成執行文件在windows上生成backuparchive.bat,內容包括rmancmdfile=backup.rcv在unix下生成backuparchive.sh,內容包括/oracle/ramn/rmancmdfile=backup.rcv三、加入調度在windows中用任務計劃嚮導便可,或使用at命令。在unix中,在目標機器上編寫一個文件,用以啓動自動備份進程。假定文件名爲ORACLE,文件將放在/var/spool/cron/crontabs目錄下>cat oracle 
0 23 * * 0 backup_archive.sh 
#表示星期天23點對數據庫備份 
0 12,18 * * * backup_archive.sh 
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp]#表示天天12點,18點備份 Crontab文件的每一行由六個域(minutes,hours,day of month,month,day of week,command)組成,域之間用空格或Tab分隔開來

相關文章
相關標籤/搜索