ORACLE的RMAN

1.什麼是RMAN?
  RMAN能夠用來備份和還原數據庫文件、歸檔日誌和控制文件。它也能夠用來執行徹底或不徹底的數據庫恢復。
  
  注意:RMAN不能用於備份初始化參數文件和口令文件。
  
  RMAN啓動數據庫上的Oracle服務器進程來進行備份或還原。備份、還原、恢復是由這些進程驅動的。
  
  RMAN能夠由OEM的Backup Manager GUI來控制,但在本文章裏不做重點討論。
  
  2. Terminology 專業詞彙解釋
  2.1. Backup sets 備份集合
  
  備份集合有下面的特性:
  
  包括一個或多個數據文件或歸檔日誌
  
  以oracle專有的格式保存
  
  有一個徹底的全部的備份片集合構成
  
  構成一個徹底備份或增量備份
  
  2.2. Backup pieces 備份片
  
  一個備份集由若干個備份片組成。每一個備份片是一個單獨的輸出文件。一個備份片的大小是有限制的;若是沒有大小的限制, 備份集就只由一個備份片構成。備份片的大小不能大於使用的文件系統所支持的文件長度的最大值。
  
  2.3. Image copies 鏡像備份
  
  鏡像備份是獨立文件(數據文件、歸檔日誌、控制文件)的備份。它很相似操做系統級的文件備份。它不是備份集或 備份片,也沒有被壓縮。
  
  2.4. Full backup sets 全備份集合
  
  全備份是一個或多個數據文件中使用過的數據塊的的備份。沒有使用過的數據塊是不被備份的,也就是說,oracle 進行備份集合的壓縮。
  
  2.5. Incremental backup sets 增量備份集合
  
  增量備份是指備份一個或多個數據文件的自從上一次同一級別的或更低級別的備份以來被修改過的數據塊。 與徹底備份相同,增量備份也進行壓縮。
  
  2.6. File multiplexing
  
  不一樣的多個數據文件的數據塊能夠混合備份在一個備份集中。
  
  2.7. Recovery catalog resyncing 恢復目錄同步
  
  使用恢復管理器執行backup、copy、restore或者switch命令時,恢復目錄自動進行更新,可是有關日誌與歸檔日誌信息沒有自動記入恢復目錄。須要進行目錄同步。使用resync catalog命令進行同步。
  
  RMAN>resync catalog;
  RMAN-03022:正在編譯命令:resync
  RMAN-03023:正在執行命令:resync
  RMAN-08002:正在啓動所有恢復目錄的 resync
  RMAN-08004:完成所有 resync
  
  3. 恢復目錄
  3.1.恢復目錄的概念
  
  恢復目錄是由RMAN使用、維護的用來放置備份信息的倉庫。RMAN利用恢復目錄記載的信息去判斷如何執行須要的備份恢復操做。
  
  恢復目錄能夠存在於ORACLE數據庫的計劃中。
  
  雖然恢復目錄能夠用來備份多個數據庫,建議爲恢復目錄數據庫建立一個單獨的數據庫。
  
  恢復目錄數據庫不能使用恢復目錄備份自身。
  
  3.2.創建恢復目錄
  
  第一步,在目錄數據庫中建立恢復目錄所用表空間:
  
  SQL> create tablespace rman_ts datafile 'd:\oracle\oradata\rman\rman_ts.dbf' size 20M;
  
  表空間已建立。
  
  第二步,在目錄數據庫中建立RMAN 用戶並受權:
  
  SQL> create user rman identified by rman default tablespace rman_ts temporary tablespace temp quota unlimited on rman_ts;
  
  用戶已建立。
  
  SQL> grant recovery_catalog_owner to rman ;
  
  受權成功。
  SQL> grant connect, resource to rman ;
  
  受權成功。
  
  第三步,在目錄數據庫中建立恢復目錄
  
  C:\>rman catalog rman/rman
  
  恢復管理器:版本8.1.6.0.0 - Production
  
  RMAN-06008:鏈接到恢復目錄數據庫
  RMAN-06428:未安裝恢復目錄
  RMAN>create catalog tablespace rman_ts;
  RMAN-06431:恢復目錄已建立
  
  注意:雖然使用RMAN不必定必需恢復目錄,可是推薦使用。由於恢復目錄記載的信息大部分能夠經過控制文件來記載,RMAN在恢復數據庫時使用這些信息。不使用恢復目錄將會對備份恢復操做有限制。
  
  3.3.使用恢復目錄的優點
  
  能夠存儲腳本;
  
  記載較長時間的備份恢復操做;
  
  4. 啓動RMAN
  RMAN爲交互式命令行處理界面,也能夠從企業管理器中運行。
  
  爲了使用下面的實例,先檢查環境符合:
  
  the target database is called "his" and has the same TNS alias
  
  user rman has been granted "recovery_catalog_owner "privileges
  
  目標數據庫的鏈接用戶爲internal賬號,或者以其餘SYSDBA類型賬號鏈接
  
  the recovery catalog database is called "rman" and has the same TNS alias
  
  the schema containing the recovery catalog is "rman" (same password)
  
  在使用RMAN前,設置NLS_DATE_FORMAT 和NLS_LANG環境變量,不少RMAN LIST命令的輸出結果是與日期時間相關的,這點在用戶但願執行以時間爲基準的恢復工做也很重要。
  
  下例是環境變量的示範:
  
  NLS_LANG= SIMPLIFIED CHINESE_CHINA.ZHS16GBK
  NLS_DATE_FORMAT=DD-MON-YYYY HH24:MI:SS
  
  爲了保證RMAN使用時能鏈接恢復目錄,恢復目錄數據庫必須打開,目標數據庫至少要STARTED(unmount),不然RMAN會返回一個錯誤,目標數據庫必須置於歸檔模式下。
  
  4.1.使用不帶恢復目錄的RMAN
  
  設置目標數據庫的 ORACLE_SID ,執行:
  
  % rman nocatalog
  RMAN> connect target
  RMAN> connect target internal/@his
  
  4.2.使用帶恢復目錄的RMAN
  
  % rman rman_ts rman/rman@rman
  RMAN> connect target
  % rman rman_ts rman/rman@rman target internal/@his
  
  4.3.使用RMAN
  
  一旦鏈接到目標數據庫,能夠經過交互界面或者事先存儲的腳本執行指定RMAN命令, 下面是一個使用RMAN交互界面的實例:
  
  RMAN> resync catalog;
  RMAN-03022:正在編譯命令:resync
  RMAN-03023:正在執行命令:resync
  RMAN-08002:正在啓動所有恢復目錄的 resync
  RMAN-08004:完成所有 resync
  
  使用腳本的實例:
  
  RMAN> execute script alloc_1_disk;
  
  建立或者替代存儲的腳本:
  
  RMAN> replace script alloc_1_disk {
  2> allocate channel d1 type disk;
  3> }
  
  5.註冊或者註銷目標數據庫
  5.1.註冊目標數據庫
  
  數據庫狀態:
  
  恢復目錄狀態:打開
  
  目標數據庫:加載或者打開
  
  目標數據庫在第一次使用RMAN以前必須在恢復目錄中註冊:
  
  第一步,啓動恢復管理器,而且鏈接目標數據庫:
  
  C:\>rman target internal/oracle@his catalog rman/rman@rman
  
  恢復管理器:版本8.1.6.0.0 - Production
  
  RMAN-06005:鏈接到目標數據庫:HIS (DBID=3021445076)
  RMAN-06008:鏈接到恢復目錄數據庫
  
  第二步,註冊數據庫:
  
  RMAN> register database;
  RMAN-03022:正在編譯命令:register
  RMAN-03023:正在執行命令:register
  RMAN-08006:註冊在恢復目錄中的數據庫
  RMAN-03023:正在執行命令:full resync
  RMAN-08002:正在啓動所有恢復目錄的resync
  RMAN-08004:完成所有resync
  
  5.2.註銷目標數據庫
  
  RMAN提供了一個註銷工具,叫DBMS_RCVCAT工具包,請注意一旦註銷了該目標數據庫,就不可使用恢復目錄中含有的備份集來恢復數據庫了。
  
  爲了能註銷數據庫,須要得到數據庫的標識碼(DB_ID)和數據庫鍵值(DB_KEY)。其中鏈接目標數據庫時將會得到DB_ID。
  
  C:\>rman target internal/oracle@his catalog rman/rman@rman
  
  恢復管理器:版本8.1.6.0.0 - Production
  
  RMAN-06005:鏈接到目標數據庫:HIS (DBID=3021445076)
  RMAN-06008:鏈接到恢復目錄數據庫
  
  其中DBID=3021445076,利用DBID=3021445076查詢數據庫鍵值碼:
  
  鏈接到目標數據庫,查詢db表:
  
  SQL> select * from db;
  
  DB_KEY DB_ID CURR_DBINC_KEY
  ---------- ---------- --------------
  1 3021445076 2
  
  得到DB_KEY=1,這樣,該目標數據庫DB_KEY=1,DBID=3021445076,利用兩個值使用DBMS_RCVCAT工具包就能夠註銷數據庫:數據庫

 

1、冷備份介紹:
   冷備份數據庫是將數據庫關閉以後備份全部的關鍵性文件包括數據文件、控制文件、聯機REDO LOG文件,將其拷貝到另外的位置。此外冷備份也能夠包含對參數文件和口令文件的備份,可是這兩種備份是能夠根據須要進行選擇的。,冷備份實際也是一種物理備份,是一個備份數據庫物理文件的過程。由於冷備份要備份除了重作日誌之外的全部數據庫文件,所以也被成爲徹底的數據庫備份。它的優缺點以下所示:
一、優勢:
        <1>只需拷貝文件便可,是很是快速的備份方法。
        <2>只需將文件再拷貝回去,就能夠恢復到某一時間點上。
        <3>與數據庫歸檔的模式相結合可使數據庫很好地恢復。
        <4>維護量較少,但安全性確相對較高。
二、缺點:
        <1>在進行數據庫冷備份的過程當中數據庫必須處於關閉狀態。
   <2>單獨使用冷備份時,數據庫只能完成基於某一時間點上的恢復。
        <3>若磁盤空間有限,冷備份只能將備份數據拷貝到磁帶等其餘外部存儲上,速度會更慢。
        <4>冷備份不能按表或按用戶恢復。
三、具體備份步驟以下:
        <1>以DBA用戶或特權用戶登陸,查詢動態性能視圖v$datafile、v$controlfile能夠分別列出數據庫的數據文件以及控制文件。
SQL&gt; select name from v$datafile;
NAME -------------------------------------------------------------------------------- /u02/oradata/db01/system01.dbf /u02/oradata/db01/undotbs01.dbf /u02/oradata/db01/sysaux01.dbf /u02/oradata/db01/users01.dbf
SQL&gt; select name from v$controlfile;
NAME -------------------------------------------------------------------------------- /u02/oradata/db01/control01.ctl /u02/oradata/db01/control02.ctl /u02/oradata/db01/control03.ctl /u01/app/oracle/bak/control04.ctl
<2>以DBA用戶或特權用戶關閉數據庫。
SQL&gt; conn /  as sysdba; Connected. SQL&gt; shutdown normal Database closed. Database dismounted. ORACLE instance shut down.
<3>複製數據文件,複製時應該將文件複製到單獨的一個硬盤或者磁盤上。控制文件是相互鏡像的,所以只需複製一個控制文件便可。
cp /u02/oradata/db01/*.dbf  /u01/app/oracle/bak
cp /u02/oradata/db01/*.ctl  /u01/app/oracle/bak
<4>啓動例程打開數據庫。
SQL&gt; conn / as sysdba; Connected to an idle instance. SQL&gt; startup ORACLE instance started.
Total System Global Area  285212672 bytes Fixed Size                  1218992 bytes Variable Size              83887696 bytes Database Buffers          197132288 bytes Redo Buffers                2973696 bytes Database mounted. Database opened. SQL&gt;
2、熱備份:
   熱備份是在數據庫運行的狀況下,採用archive log mode方式備份數據庫的方法。熱備份要求數據庫處於archive log模式下操做,並須要大量的檔案空間。一旦數據庫處於archive loh
模式,就能夠進行備份了,當執行備份時,只能在數據文件級或表空間進行。
一、優勢:
          <1>可在表空間或數據文件級備份,備份時間短。
<2>可達到秒級恢復(恢復到某一時間點上)。
          <3>可對幾乎全部數據庫實體做恢復。
          <4>恢復是快速的,在大多數狀況下在數據庫仍工做時恢復。
<5>備份時數據庫仍可用。
二、缺點:
         <1>因難以維護,因此要特別仔細當心,不容許「以失敗而了結」。
         <2>若熱備份不成功,所得結果不可用於時間點的恢復。
         <3>不能出錯,不然後果嚴重。
三、設置初始歸檔模式:
設置歸檔模式數據庫必須處在mount而非open狀態下:
         <1>首先查看數據庫是否處在archive log模式下:
         SQL&gt; archive log list;          Database log mode               No Archive Mode          Automatic archival                Disabled          Archive destination               USE_DB_RECOVERY_FILE_DEST          Oldest online log sequence    1          Current log sequence            2
         <2>在mount狀態下啓動數據庫:
         SQL&gt; startup mount;          ORACLE instance started.
         Total System Global Area  285212672 bytes          Fixed Size                  1218992 bytes          Variable Size              83887696 bytes          Database Buffers          197132288 bytes          Redo Buffers                2973696 bytes          Database mounted.
         <3>設置數據庫爲歸檔模式:
        SQL&gt; alter database archivelog;
        Database altered.
        <4>打開數據庫:
SQL&gt; alter database open;
Database altered.
<5>將數據庫設置成自動歸檔,使用如下命令:
SQL&gt; alter system set log_archive_start=true scope=spfile;
System altered.
<6>肯定數據庫處於歸檔模式下,而且設置自動存檔:
SQL&gt; archive log list; Database log mode              Archive Mode Automatic archival             Enabled Archive destination            USE_DB_RECOVERY_FILE_DEST Oldest online log sequence     1 Next log sequence to archive   2 Current log sequence           2
上面的Archive destination所定義的具體位置,能夠查看$ORACLE_HOME/dbs/spfile<dbname>.ora文件中的db_recovery_file_dest參數的值。
 
四、聯機備份:
      聯機備份是熱備份的一種備份方法,是指當表空間處於ONLINE狀態時,備份表空間的全部數據文件和單個數據文件的過程。使用聯機備份的優勢是不影響用戶在表空間上的全部訪問操做,但聯機備份的缺點可能生產更多的重作日誌文件和歸檔日誌文件。如下是聯機備份的具體步驟:
       <1>以DBA用戶或特權用戶登陸,肯定表空間所包含的數據文件。經過查詢數據字典DBA_DATA_FILES,能夠獲得數據文件和表空間的對應關係:
SQL&gt; select file_name from dba_data_files where tablespace_name='USERS';
FILE_NAME -------------------------------------------------------------------------------- /u02/oradata/db01/users01.dbf
<2>設置表空間爲備份模式,在複製表空間的數據文件以前必須將表空間設置成爲備份模式:
SQL&gt; alter tablespace users begin backup;
Tablespace altered.
<3>複製users數據文件到備份目錄:
[oracle@server1 bak]$ cp /u02/oradata/db01/users01.dbf /bak
<4>複製後表空間就不須要設置成爲備份模式了,所以能夠將其返回正常模式:
SQL&gt;  alter tablespace users end backup;
Tablespace altered.
五、脫機備份:
      脫機備份也是熱備份的一種方法,是指當表空間處於offline時,備份表空間的全部數據文件以及單個數據文件的過程。它的優勢是會生產較少的重作日誌文件,缺點是當用戶正在進行脫機備份時所備份的表空間將不能訪問,因爲SYSTEM系統表空間和正在使用的UNDO表空間不能被脫機,所以脫機備份不適用於SYSTEM表空間和正在使用的UNDO表空間。
        <1>使用DBA用戶或特權用戶登陸,肯定表空間所包含的數據文件。這個和聯機備份的第一步相同:
SQL&gt; select file_name from dba_data_files where tablespace_name='USERS';
FILE_NAME -------------------------------------------------------------------------------- /u02/oradata/db01/users01.dbf
<2>設置表空間爲脫機狀態,將表空間設置爲脫機狀態後用戶將不能訪問該表空間上的任何對象,所以也能夠確保OFFLINE的表空間的數據文件不會發生改變。
SQL&gt; alter tablespace users offline;
Tablespace altered.
SQL&gt; select tablespace_name,online_status from dba_data_files;
TABLESPACE_NAME                ONLINE_ ------------------------------ ------- USERS                          OFFLINE SYSAUX                         ONLINE UNDOTBS1                       ONLINE SYSTEM                         SYSTEM
<3>複製users數據文件到備份目錄:
[oracle@server1 bak]$ cp /u02/oradata/db01/users01.dbf /bak
<4>複製完後將表空間置於online狀態:
SQL&gt; alter  tablespace users online;
Tablespace altered.
SQL&gt; select tablespace_name,online_status from dba_data_files;
TABLESPACE_NAME                ONLINE_ ------------------------------ ------- USERS                          ONLINE SYSAUX                         ONLINE UNDOTBS1                       ONLINE SYSTEM                         SYSTEM
相關文章
相關標籤/搜索